Add-flag-for-save-data-header.patch 4.9 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. @@ -4471,6 +4471,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. @@ -975,6 +975,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. @@ -557,6 +557,9 @@ extern const char kDiagnosticsAppDescription[];
  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. @@ -149,6 +149,10 @@ const base::FeatureParam<std::string>
  68. const base::Feature kDisableKeepaliveFetch{"DisableKeepaliveFetch",
  69. base::FEATURE_DISABLED_BY_DEFAULT};
  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. // Controls whether a |request_initiator| that mismatches
  75. // |request_initiator_origin_lock| leads to 1) failing the HTTP request and 2)
  76. // calling mojo::ReportBadMessage (on desktop platforms, where NetworkService
  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. @@ -58,6 +58,8 @@ extern const base::FeatureParam<std::string>
  81. COMPONENT_EXPORT(NETWORK_CPP)
  82. extern const base::Feature kDisableKeepaliveFetch;
  83. COMPONENT_EXPORT(NETWORK_CPP)
  84. +extern const base::Feature kEnableSaveDataHeader;
  85. +COMPONENT_EXPORT(NETWORK_CPP)
  86. extern const base::Feature kRequestInitiatorSiteLockEnfocement;
  87. COMPONENT_EXPORT(NETWORK_CPP)
  88. --
  89. 2.17.1