Add-flag-for-save-data-header.patch 5.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112
  1. From: Wengling Chen <feiyu2817@gmail.com>
  2. Date: Mon, 1 Feb 2021 19:18:55 +0200
  3. Subject: Add flag for save-data-header
  4. ---
  5. chrome/browser/about_flags.cc | 5 ++++-
  6. chrome/browser/flag_descriptions.cc | 4 ++++
  7. chrome/browser/flag_descriptions.h | 3 +++
  8. .../browser/loader/browser_initiated_resource_request.cc | 8 ++++++++
  9. services/network/public/cpp/features.cc | 5 +++++
  10. services/network/public/cpp/features.h | 3 ++-
  11. 6 files changed, 26 insertions(+), 2 deletions(-)
  12. diff --git a/chrome/browser/about_flags.cc b/chrome/browser/about_flags.cc
  13. --- a/chrome/browser/about_flags.cc
  14. +++ b/chrome/browser/about_flags.cc
  15. @@ -4443,7 +4443,10 @@ const FeatureEntry kFeatureEntries[] = {
  16. {"force-text-direction", flag_descriptions::kForceTextDirectionName,
  17. flag_descriptions::kForceTextDirectionDescription, kOsAll,
  18. MULTI_VALUE_TYPE(kForceTextDirectionChoices)},
  19. -#if BUILDFLAG(IS_ANDROID)
  20. +#if BUILDFLAG(IS_ANDROID) // Bromite save data header
  21. + {"enable-save-data-header", flag_descriptions::kEnableSaveDataHeaderName,
  22. + flag_descriptions::kEnableSaveDataHeaderDescription, kOsAndroid,
  23. + FEATURE_VALUE_TYPE(network::features::kEnableSaveDataHeader)},
  24. {"force-update-menu-type", flag_descriptions::kUpdateMenuTypeName,
  25. flag_descriptions::kUpdateMenuTypeDescription, kOsAndroid,
  26. MULTI_VALUE_TYPE(kForceUpdateMenuTypeChoices)},
  27. diff --git a/chrome/browser/flag_descriptions.cc b/chrome/browser/flag_descriptions.cc
  28. --- a/chrome/browser/flag_descriptions.cc
  29. +++ b/chrome/browser/flag_descriptions.cc
  30. @@ -1099,6 +1099,10 @@ const char kDisableKeepaliveFetchDescription[] =
  31. "Disable fetch with keepalive set "
  32. "(https://fetch.spec.whatwg.org/#request-keepalive-flag).";
  33. +const char kEnableSaveDataHeaderName[] = "Enable save-data header";
  34. +const char kEnableSaveDataHeaderDescription[] =
  35. + "Enable save-data header without enabling Data Saver.";
  36. +
  37. const char kExperimentalAccessibilityLanguageDetectionName[] =
  38. "Experimental accessibility language detection";
  39. const char kExperimentalAccessibilityLanguageDetectionDescription[] =
  40. diff --git a/chrome/browser/flag_descriptions.h b/chrome/browser/flag_descriptions.h
  41. --- a/chrome/browser/flag_descriptions.h
  42. +++ b/chrome/browser/flag_descriptions.h
  43. @@ -583,6 +583,9 @@ extern const char kDeprecateAltBasedSixPackDescription[];
  44. extern const char kDisableKeepaliveFetchName[];
  45. extern const char kDisableKeepaliveFetchDescription[];
  46. +extern const char kEnableSaveDataHeaderName[];
  47. +extern const char kEnableSaveDataHeaderDescription[];
  48. +
  49. extern const char kMemlogName[];
  50. extern const char kMemlogDescription[];
  51. extern const char kMemlogModeMinimal[];
  52. diff --git a/content/browser/loader/browser_initiated_resource_request.cc b/content/browser/loader/browser_initiated_resource_request.cc
  53. --- a/content/browser/loader/browser_initiated_resource_request.cc
  54. +++ b/content/browser/loader/browser_initiated_resource_request.cc
  55. @@ -4,6 +4,9 @@
  56. #include "content/browser/loader/browser_initiated_resource_request.h"
  57. +#include "base/feature_list.h"
  58. +#include "services/network/public/cpp/features.h"
  59. +
  60. #include "content/public/browser/browser_context.h"
  61. #include "content/public/browser/browser_thread.h"
  62. #include "content/public/browser/content_browser_client.h"
  63. @@ -37,8 +40,13 @@ void UpdateAdditionalHeadersForBrowserInitiatedRequest(
  64. // Save-Data was previously included in hints for workers, thus we cannot
  65. // remove it for the time being. If you're reading this, consider building
  66. // permissions policies for workers and/or deprecating this inclusion.
  67. + bool setHeader = false;
  68. if (is_for_worker_script &&
  69. GetContentClient()->browser()->IsDataSaverEnabled(browser_context)) {
  70. + setHeader = true;
  71. + }
  72. + setHeader |= base::FeatureList::IsEnabled(network::features::kEnableSaveDataHeader);
  73. + if (setHeader) {
  74. if (should_update_existing_headers) {
  75. headers->RemoveHeader("Save-Data");
  76. }
  77. diff --git a/services/network/public/cpp/features.cc b/services/network/public/cpp/features.cc
  78. --- a/services/network/public/cpp/features.cc
  79. +++ b/services/network/public/cpp/features.cc
  80. @@ -20,6 +20,11 @@ namespace features {
  81. const base::Feature kExpectCTReporting{"ExpectCTReporting",
  82. base::FEATURE_ENABLED_BY_DEFAULT};
  83. +
  84. +// Enable save-data header separately (without enabled data reduction service).
  85. +const base::Feature kEnableSaveDataHeader{"EnableSaveDataHeader",
  86. + base::FEATURE_DISABLED_BY_DEFAULT};
  87. +
  88. const base::Feature kNetworkErrorLogging{"NetworkErrorLogging",
  89. base::FEATURE_ENABLED_BY_DEFAULT};
  90. diff --git a/services/network/public/cpp/features.h b/services/network/public/cpp/features.h
  91. --- a/services/network/public/cpp/features.h
  92. +++ b/services/network/public/cpp/features.h
  93. @@ -47,7 +47,8 @@ COMPONENT_EXPORT(NETWORK_CPP)
  94. extern const base::Feature kDisableKeepaliveFetch;
  95. COMPONENT_EXPORT(NETWORK_CPP)
  96. extern const base::Feature kOpaqueResponseBlockingV01;
  97. -
  98. +COMPONENT_EXPORT(NETWORK_CPP)
  99. +extern const base::Feature kEnableSaveDataHeader;
  100. COMPONENT_EXPORT(NETWORK_CPP)
  101. extern const base::Feature kTrustTokens;
  102. --
  103. 2.25.1