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

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798
  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 | 3 +++
  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 | 4 ++++
  10. services/network/public/cpp/features.h | 2 ++
  11. 6 files changed, 19 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. @@ -4655,6 +4655,9 @@ const FeatureEntry kFeatureEntries[] = {
  16. #endif // BUILDFLAG(IS_CHROMEOS_ASH)
  17. #if defined(OS_ANDROID)
  18. + {"enable-save-data-header", flag_descriptions::kEnableSaveDataHeaderName,
  19. + flag_descriptions::kEnableSaveDataHeaderDescription, kOsAndroid,
  20. + FEATURE_VALUE_TYPE(network::features::kEnableSaveDataHeader)},
  21. {"enable-command-line-on-non-rooted-devices",
  22. flag_descriptions::kEnableCommandLineOnNonRootedName,
  23. flag_descriptions::kEnableCommandLineOnNoRootedDescription, kOsAndroid,
  24. diff --git a/chrome/browser/flag_descriptions.cc b/chrome/browser/flag_descriptions.cc
  25. --- a/chrome/browser/flag_descriptions.cc
  26. +++ b/chrome/browser/flag_descriptions.cc
  27. @@ -1111,6 +1111,10 @@ const char kDisableKeepaliveFetchDescription[] =
  28. "Disable fetch with keepalive set "
  29. "(https://fetch.spec.whatwg.org/#request-keepalive-flag).";
  30. +const char kEnableSaveDataHeaderName[] = "Enable save-data header";
  31. +const char kEnableSaveDataHeaderDescription[] =
  32. + "Enable save-data header without enabling Data Saver.";
  33. +
  34. const char kExperimentalAccessibilityLanguageDetectionName[] =
  35. "Experimental accessibility language detection";
  36. const char kExperimentalAccessibilityLanguageDetectionDescription[] =
  37. diff --git a/chrome/browser/flag_descriptions.h b/chrome/browser/flag_descriptions.h
  38. --- a/chrome/browser/flag_descriptions.h
  39. +++ b/chrome/browser/flag_descriptions.h
  40. @@ -605,6 +605,9 @@ extern const char kDiagnosticsAppNavigationDescription[];
  41. extern const char kDisableKeepaliveFetchName[];
  42. extern const char kDisableKeepaliveFetchDescription[];
  43. +extern const char kEnableSaveDataHeaderName[];
  44. +extern const char kEnableSaveDataHeaderDescription[];
  45. +
  46. extern const char kMemlogName[];
  47. extern const char kMemlogDescription[];
  48. extern const char kMemlogModeMinimal[];
  49. diff --git a/content/browser/loader/browser_initiated_resource_request.cc b/content/browser/loader/browser_initiated_resource_request.cc
  50. --- a/content/browser/loader/browser_initiated_resource_request.cc
  51. +++ b/content/browser/loader/browser_initiated_resource_request.cc
  52. @@ -40,9 +40,10 @@ void UpdateAdditionalHeadersForBrowserInitiatedRequest(
  53. // Set the Save-Data header if appropriate.
  54. // https://tools.ietf.org/html/draft-grigorik-http-client-hints-03#section-7
  55. - if (GetContentClient()->browser()->IsDataSaverEnabled(browser_context) &&
  56. + if ((GetContentClient()->browser()->IsDataSaverEnabled(browser_context) &&
  57. !base::GetFieldTrialParamByFeatureAsBool(features::kDataSaverHoldback,
  58. - "holdback_web", false)) {
  59. + "holdback_web", false)) ||
  60. + base::FeatureList::IsEnabled(network::features::kEnableSaveDataHeader)) {
  61. if (should_update_existing_headers) {
  62. headers->RemoveHeader("Save-Data");
  63. }
  64. diff --git a/services/network/public/cpp/features.cc b/services/network/public/cpp/features.cc
  65. --- a/services/network/public/cpp/features.cc
  66. +++ b/services/network/public/cpp/features.cc
  67. @@ -141,6 +141,10 @@ const base::FeatureParam<std::string>
  68. "DisabledProviders", ""};
  69. // Disable special treatment on requests with keepalive set (see
  70. +// Enable save-data header seprately, without enabled data reduction service
  71. +const base::Feature kEnableSaveDataHeader{"EnableSaveDataHeader",
  72. + base::FEATURE_DISABLED_BY_DEFAULT};
  73. +
  74. // https://fetch.spec.whatwg.org/#request-keepalive-flag). This is introduced
  75. // for investigation on the memory usage, and should not be enabled widely.
  76. const base::Feature kDisableKeepaliveFetch{"DisableKeepaliveFetch",
  77. diff --git a/services/network/public/cpp/features.h b/services/network/public/cpp/features.h
  78. --- a/services/network/public/cpp/features.h
  79. +++ b/services/network/public/cpp/features.h
  80. @@ -54,6 +54,8 @@ extern const base::FeatureParam<std::string>
  81. COMPONENT_EXPORT(NETWORK_CPP)
  82. extern const base::Feature kDisableKeepaliveFetch;
  83. +extern const base::Feature kEnableSaveDataHeader;
  84. +COMPONENT_EXPORT(NETWORK_CPP)
  85. COMPONENT_EXPORT(NETWORK_CPP)
  86. extern const base::Feature kTrustTokens;
  87. --
  88. 2.20.1