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

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100
  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. content/browser/loader/browser_initiated_resource_request.cc | 5 +++--
  9. services/network/public/cpp/features.cc | 5 +++++
  10. services/network/public/cpp/features.h | 2 ++
  11. 6 files changed, 21 insertions(+), 3 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. @@ -3975,7 +3975,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. @@ -1083,6 +1083,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. @@ -584,6 +584,9 @@ extern const char kDiagnosticsAppNavigationDescription[];
  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. @@ -40,9 +40,10 @@ void UpdateAdditionalHeadersForBrowserInitiatedRequest(
  56. // Set the Save-Data header if appropriate.
  57. // https://tools.ietf.org/html/draft-grigorik-http-client-hints-03#section-7
  58. - if (GetContentClient()->browser()->IsDataSaverEnabled(browser_context) &&
  59. + if ((GetContentClient()->browser()->IsDataSaverEnabled(browser_context) &&
  60. !base::GetFieldTrialParamByFeatureAsBool(features::kDataSaverHoldback,
  61. - "holdback_web", false)) {
  62. + "holdback_web", false)) ||
  63. + base::FeatureList::IsEnabled(network::features::kEnableSaveDataHeader)) {
  64. if (should_update_existing_headers) {
  65. headers->RemoveHeader("Save-Data");
  66. }
  67. diff --git a/services/network/public/cpp/features.cc b/services/network/public/cpp/features.cc
  68. --- a/services/network/public/cpp/features.cc
  69. +++ b/services/network/public/cpp/features.cc
  70. @@ -20,6 +20,11 @@ const base::Feature kExpectCTReporting{"ExpectCTReporting",
  71. const base::Feature kNetworkErrorLogging{"NetworkErrorLogging",
  72. base::FEATURE_ENABLED_BY_DEFAULT};
  73. +
  74. +// Enable save-data header separately (without enabled data reduction service).
  75. +const base::Feature kEnableSaveDataHeader{"EnableSaveDataHeader",
  76. + base::FEATURE_DISABLED_BY_DEFAULT};
  77. +
  78. // Enables the network service.
  79. const base::Feature kNetworkService {
  80. #if BUILDFLAG(IS_ANDROID)
  81. diff --git a/services/network/public/cpp/features.h b/services/network/public/cpp/features.h
  82. --- a/services/network/public/cpp/features.h
  83. +++ b/services/network/public/cpp/features.h
  84. @@ -52,6 +52,8 @@ extern const base::FeatureParam<std::string>
  85. COMPONENT_EXPORT(NETWORK_CPP)
  86. extern const base::Feature kDisableKeepaliveFetch;
  87. +extern const base::Feature kEnableSaveDataHeader;
  88. +COMPONENT_EXPORT(NETWORK_CPP)
  89. COMPONENT_EXPORT(NETWORK_CPP)
  90. extern const base::Feature kTrustTokens;
  91. --
  92. 2.25.1