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

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