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

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899
  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 | 4 ++++
  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, 20 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. @@ -4302,6 +4302,10 @@ const FeatureEntry kFeatureEntries[] = {
  16. flag_descriptions::kDisableKeepaliveFetchDescription, kOsAll,
  17. FEATURE_VALUE_TYPE(network::features::kDisableKeepaliveFetch)},
  18. + {"enable-save-data-header", flag_descriptions::kEnableSaveDataHeaderName,
  19. + flag_descriptions::kEnableSaveDataHeaderDescription, kOsAndroid,
  20. + FEATURE_VALUE_TYPE(network::features::kEnableSaveDataHeader)},
  21. +
  22. {"delay-async-script-execution",
  23. flag_descriptions::kDelayAsyncScriptExecutionName,
  24. flag_descriptions::kDelayAsyncScriptExecutionDescription, kOsAll,
  25. diff --git a/chrome/browser/flag_descriptions.cc b/chrome/browser/flag_descriptions.cc
  26. --- a/chrome/browser/flag_descriptions.cc
  27. +++ b/chrome/browser/flag_descriptions.cc
  28. @@ -904,6 +904,10 @@ const char kDisableKeepaliveFetchDescription[] =
  29. "Disable fetch with keepalive set "
  30. "(https://fetch.spec.whatwg.org/#request-keepalive-flag).";
  31. +const char kEnableSaveDataHeaderName[] = "Enable save-data header";
  32. +const char kEnableSaveDataHeaderDescription[] =
  33. + "Enable save-data header without enabling Data Saver.";
  34. +
  35. const char kExperimentalAccessibilityLanguageDetectionName[] =
  36. "Experimental accessibility language detection";
  37. const char kExperimentalAccessibilityLanguageDetectionDescription[] =
  38. diff --git a/chrome/browser/flag_descriptions.h b/chrome/browser/flag_descriptions.h
  39. --- a/chrome/browser/flag_descriptions.h
  40. +++ b/chrome/browser/flag_descriptions.h
  41. @@ -510,6 +510,9 @@ extern const char kDiagnosticsAppDescription[];
  42. extern const char kDisableKeepaliveFetchName[];
  43. extern const char kDisableKeepaliveFetchDescription[];
  44. +extern const char kEnableSaveDataHeaderName[];
  45. +extern const char kEnableSaveDataHeaderDescription[];
  46. +
  47. extern const char kMemlogName[];
  48. extern const char kMemlogDescription[];
  49. extern const char kMemlogModeMinimal[];
  50. diff --git a/content/browser/loader/browser_initiated_resource_request.cc b/content/browser/loader/browser_initiated_resource_request.cc
  51. --- a/content/browser/loader/browser_initiated_resource_request.cc
  52. +++ b/content/browser/loader/browser_initiated_resource_request.cc
  53. @@ -40,9 +40,10 @@ void UpdateAdditionalHeadersForBrowserInitiatedRequest(
  54. // Set the Save-Data header if appropriate.
  55. // https://tools.ietf.org/html/draft-grigorik-http-client-hints-03#section-7
  56. - if (GetContentClient()->browser()->IsDataSaverEnabled(browser_context) &&
  57. + if ((GetContentClient()->browser()->IsDataSaverEnabled(browser_context) &&
  58. !base::GetFieldTrialParamByFeatureAsBool(features::kDataSaverHoldback,
  59. - "holdback_web", false)) {
  60. + "holdback_web", false)) ||
  61. + base::FeatureList::IsEnabled(network::features::kEnableSaveDataHeader)) {
  62. if (should_update_existing_headers) {
  63. headers->RemoveHeader("Save-Data");
  64. }
  65. diff --git a/services/network/public/cpp/features.cc b/services/network/public/cpp/features.cc
  66. --- a/services/network/public/cpp/features.cc
  67. +++ b/services/network/public/cpp/features.cc
  68. @@ -150,6 +150,10 @@ const base::FeatureParam<std::string>
  69. const base::Feature kDisableKeepaliveFetch{"DisableKeepaliveFetch",
  70. base::FEATURE_DISABLED_BY_DEFAULT};
  71. +// Enable save-data header seprately, without enabled data reduction service
  72. +const base::Feature kEnableSaveDataHeader{"EnableSaveDataHeader",
  73. + base::FEATURE_DISABLED_BY_DEFAULT};
  74. +
  75. // Attach the origin of the destination URL to the "origin" header
  76. const base::Feature
  77. kDeriveOriginFromUrlForNeitherGetNorHeadRequestWhenHavingSpecialAccess{
  78. diff --git a/services/network/public/cpp/features.h b/services/network/public/cpp/features.h
  79. --- a/services/network/public/cpp/features.h
  80. +++ b/services/network/public/cpp/features.h
  81. @@ -58,6 +58,8 @@ extern const base::FeatureParam<std::string>
  82. COMPONENT_EXPORT(NETWORK_CPP)
  83. extern const base::Feature kDisableKeepaliveFetch;
  84. COMPONENT_EXPORT(NETWORK_CPP)
  85. +extern const base::Feature kEnableSaveDataHeader;
  86. +COMPONENT_EXPORT(NETWORK_CPP)
  87. extern const base::Feature
  88. kDeriveOriginFromUrlForNeitherGetNorHeadRequestWhenHavingSpecialAccess;
  89. COMPONENT_EXPORT(NETWORK_CPP)
  90. --
  91. 2.17.1