From: Wengling Chen Date: Mon, 1 Feb 2021 19:18:55 +0200 Subject: Add flag for save-data-header --- chrome/browser/about_flags.cc | 4 ++++ chrome/browser/flag_descriptions.cc | 4 ++++ chrome/browser/flag_descriptions.h | 3 +++ content/browser/loader/browser_initiated_resource_request.cc | 5 +++-- services/network/public/cpp/features.cc | 4 ++++ services/network/public/cpp/features.h | 2 ++ 6 files changed, 20 insertions(+), 2 deletions(-) diff --git a/chrome/browser/about_flags.cc b/chrome/browser/about_flags.cc --- a/chrome/browser/about_flags.cc +++ b/chrome/browser/about_flags.cc @@ -4302,6 +4302,10 @@ const FeatureEntry kFeatureEntries[] = { flag_descriptions::kDisableKeepaliveFetchDescription, kOsAll, FEATURE_VALUE_TYPE(network::features::kDisableKeepaliveFetch)}, + {"enable-save-data-header", flag_descriptions::kEnableSaveDataHeaderName, + flag_descriptions::kEnableSaveDataHeaderDescription, kOsAndroid, + FEATURE_VALUE_TYPE(network::features::kEnableSaveDataHeader)}, + {"delay-async-script-execution", flag_descriptions::kDelayAsyncScriptExecutionName, flag_descriptions::kDelayAsyncScriptExecutionDescription, kOsAll, diff --git a/chrome/browser/flag_descriptions.cc b/chrome/browser/flag_descriptions.cc --- a/chrome/browser/flag_descriptions.cc +++ b/chrome/browser/flag_descriptions.cc @@ -904,6 +904,10 @@ const char kDisableKeepaliveFetchDescription[] = "Disable fetch with keepalive set " "(https://fetch.spec.whatwg.org/#request-keepalive-flag)."; +const char kEnableSaveDataHeaderName[] = "Enable save-data header"; +const char kEnableSaveDataHeaderDescription[] = + "Enable save-data header without enabling Data Saver."; + const char kExperimentalAccessibilityLanguageDetectionName[] = "Experimental accessibility language detection"; const char kExperimentalAccessibilityLanguageDetectionDescription[] = diff --git a/chrome/browser/flag_descriptions.h b/chrome/browser/flag_descriptions.h --- a/chrome/browser/flag_descriptions.h +++ b/chrome/browser/flag_descriptions.h @@ -510,6 +510,9 @@ extern const char kDiagnosticsAppDescription[]; extern const char kDisableKeepaliveFetchName[]; extern const char kDisableKeepaliveFetchDescription[]; +extern const char kEnableSaveDataHeaderName[]; +extern const char kEnableSaveDataHeaderDescription[]; + extern const char kMemlogName[]; extern const char kMemlogDescription[]; extern const char kMemlogModeMinimal[]; diff --git a/content/browser/loader/browser_initiated_resource_request.cc b/content/browser/loader/browser_initiated_resource_request.cc --- a/content/browser/loader/browser_initiated_resource_request.cc +++ b/content/browser/loader/browser_initiated_resource_request.cc @@ -40,9 +40,10 @@ void UpdateAdditionalHeadersForBrowserInitiatedRequest( // Set the Save-Data header if appropriate. // https://tools.ietf.org/html/draft-grigorik-http-client-hints-03#section-7 - if (GetContentClient()->browser()->IsDataSaverEnabled(browser_context) && + if ((GetContentClient()->browser()->IsDataSaverEnabled(browser_context) && !base::GetFieldTrialParamByFeatureAsBool(features::kDataSaverHoldback, - "holdback_web", false)) { + "holdback_web", false)) || + base::FeatureList::IsEnabled(network::features::kEnableSaveDataHeader)) { if (should_update_existing_headers) { headers->RemoveHeader("Save-Data"); } diff --git a/services/network/public/cpp/features.cc b/services/network/public/cpp/features.cc --- a/services/network/public/cpp/features.cc +++ b/services/network/public/cpp/features.cc @@ -150,6 +150,10 @@ const base::FeatureParam const base::Feature kDisableKeepaliveFetch{"DisableKeepaliveFetch", base::FEATURE_DISABLED_BY_DEFAULT}; +// Enable save-data header seprately, without enabled data reduction service +const base::Feature kEnableSaveDataHeader{"EnableSaveDataHeader", + base::FEATURE_DISABLED_BY_DEFAULT}; + // Attach the origin of the destination URL to the "origin" header const base::Feature kDeriveOriginFromUrlForNeitherGetNorHeadRequestWhenHavingSpecialAccess{ diff --git a/services/network/public/cpp/features.h b/services/network/public/cpp/features.h --- a/services/network/public/cpp/features.h +++ b/services/network/public/cpp/features.h @@ -58,6 +58,8 @@ extern const base::FeatureParam COMPONENT_EXPORT(NETWORK_CPP) extern const base::Feature kDisableKeepaliveFetch; COMPONENT_EXPORT(NETWORK_CPP) +extern const base::Feature kEnableSaveDataHeader; +COMPONENT_EXPORT(NETWORK_CPP) extern const base::Feature kDeriveOriginFromUrlForNeitherGetNorHeadRequestWhenHavingSpecialAccess; COMPONENT_EXPORT(NETWORK_CPP) -- 2.17.1