From: csagan5 <32685696+csagan5@users.noreply.github.com> Date: Thu, 22 Jul 2021 23:10:52 +0200 Subject: Client hints overrides Disable critical client hints Hard-code model to SAMSUNG SM-G960U use Google Chrome branding for client hints --- chrome/browser/prefs/browser_prefs.cc | 2 +- components/embedder_support/user_agent_utils.cc | 4 +--- content/browser/client_hints/client_hints.cc | 3 ++- content/browser/loader/navigation_url_loader_impl.cc | 5 +++++ content/common/user_agent.cc | 9 +-------- content/public/common/content_features.cc | 2 +- services/network/public/cpp/client_hints.cc | 1 + services/network/public/cpp/features.cc | 6 ++++++ services/network/public/cpp/features.h | 3 +++ services/network/url_loader.cc | 3 ++- services/network/url_loader_unittest.cc | 3 ++- third_party/blink/common/client_hints/client_hints.cc | 1 + .../blink/common/client_hints/enabled_client_hints.cc | 4 +++- third_party/blink/common/features.cc | 4 ++-- 14 files changed, 31 insertions(+), 19 deletions(-) diff --git a/chrome/browser/prefs/browser_prefs.cc b/chrome/browser/prefs/browser_prefs.cc --- a/chrome/browser/prefs/browser_prefs.cc +++ b/chrome/browser/prefs/browser_prefs.cc @@ -765,7 +765,7 @@ void RegisterLocalStatePrefsForMigration(PrefRegistrySimple* registry) { registry->RegisterListPref(prefs::kUsedPolicyCertificates); #endif // BUILDFLAG(IS_CHROMEOS_ASH) - registry->RegisterBooleanPref(kUserAgentClientHintsEnabled, true); + registry->RegisterBooleanPref(kUserAgentClientHintsEnabled, false); registry->RegisterBooleanPref(kCloudPolicyOverridesPlatformPolicy, false); diff --git a/components/embedder_support/user_agent_utils.cc b/components/embedder_support/user_agent_utils.cc --- a/components/embedder_support/user_agent_utils.cc +++ b/components/embedder_support/user_agent_utils.cc @@ -226,9 +226,7 @@ const blink::UserAgentBrandList GetUserAgentBrandList( bool parse_result = base::StringToInt(major_version, &major_version_number); DCHECK(parse_result); absl::optional brand; -#if !BUILDFLAG(CHROMIUM_BRANDING) - brand = version_info::GetProductName(); -#endif + brand = "Google Chrome"; absl::optional maybe_brand_override = base::GetFieldTrialParamValueByFeature(features::kGreaseUACH, "brand_override"); diff --git a/content/browser/client_hints/client_hints.cc b/content/browser/client_hints/client_hints.cc --- a/content/browser/client_hints/client_hints.cc +++ b/content/browser/client_hints/client_hints.cc @@ -433,7 +433,8 @@ void AddPrefersColorSchemeHeader(net::HttpRequestHeaders* headers, is_dark_mode ? "dark" : "light"); } -bool IsValidURLForClientHints(const url::Origin& origin) { +bool IsValidURLForClientHints(const url::Origin& origin) { // disabled in Bromite + if ((true)) return false; return network::IsOriginPotentiallyTrustworthy(origin); } diff --git a/content/browser/loader/navigation_url_loader_impl.cc b/content/browser/loader/navigation_url_loader_impl.cc --- a/content/browser/loader/navigation_url_loader_impl.cc +++ b/content/browser/loader/navigation_url_loader_impl.cc @@ -983,6 +983,11 @@ void NavigationURLLoaderImpl::OnAcceptCHFrameReceived( const std::vector& accept_ch_frame, OnAcceptCHFrameReceivedCallback callback) { received_accept_ch_frame_ = true; + if (!base::FeatureList::IsEnabled(network::features::kAcceptCHFrame)) { + std::move(callback).Run(net::OK); + return; + } + LogAcceptCHFrameStatus(AcceptCHFrameRestart::kFramePresent); // Given that this is happening in the middle of navigation, there should diff --git a/content/common/user_agent.cc b/content/common/user_agent.cc --- a/content/common/user_agent.cc +++ b/content/common/user_agent.cc @@ -300,14 +300,7 @@ std::string BuildUserAgentFromProduct(const std::string& product) { } std::string BuildModelInfo() { - std::string model; -#if BUILDFLAG(IS_ANDROID) - // Only send the model information if on the release build of Android, - // matching user agent behaviour. - if (base::SysInfo::GetAndroidBuildCodename() == "REL") - model = base::SysInfo::HardwareModelName(); -#endif - return model; + return "SAMSUNG SM-G960U"; } #if BUILDFLAG(IS_ANDROID) diff --git a/content/public/common/content_features.cc b/content/public/common/content_features.cc --- a/content/public/common/content_features.cc +++ b/content/public/common/content_features.cc @@ -240,7 +240,7 @@ const base::Feature kCrashReporting{"CrashReporting", // Enables support for the `Critical-CH` response header. // https://github.com/WICG/client-hints-infrastructure/blob/master/reliability.md#critical-ch const base::Feature kCriticalClientHint{"CriticalClientHint", - base::FEATURE_ENABLED_BY_DEFAULT}; + base::FEATURE_DISABLED_BY_DEFAULT}; // Enable debugging the issue crbug.com/1201355 const base::Feature kDebugHistoryInterventionNoUserActivation{ diff --git a/services/network/public/cpp/client_hints.cc b/services/network/public/cpp/client_hints.cc --- a/services/network/public/cpp/client_hints.cc +++ b/services/network/public/cpp/client_hints.cc @@ -98,6 +98,7 @@ const DecodeMap& GetDecodeMap() { absl::optional> ParseClientHintsHeader(const std::string& header) { + if ((true)) return absl::nullopt; // Accept-CH is an sh-list of tokens; see: // https://datatracker.ietf.org/doc/html/draft-ietf-httpbis-header-structure-19#section-3.1 absl::optional maybe_list = 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 @@ -181,6 +181,12 @@ const base::FeatureParam kPlatformProvidedTrustTokenIssuance{ const base::Feature kWebSocketReassembleShortMessages{ "WebSocketReassembleShortMessages", base::FEATURE_ENABLED_BY_DEFAULT}; +// Enable support for ACCEPT_CH H2/3 frame as part of Client Hint Reliability. +// See: +// https://tools.ietf.org/html/draft-davidben-http-client-hint-reliability-02#section-4.3 +const base::Feature kAcceptCHFrame{"AcceptCHFrame", + base::FEATURE_DISABLED_BY_DEFAULT}; + const base::Feature kSCTAuditingRetryReports{"SCTAuditingRetryReports", base::FEATURE_ENABLED_BY_DEFAULT}; 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 @@ -66,6 +66,9 @@ extern const base::FeatureParam kPlatformProvidedTrustTokenIssuance; COMPONENT_EXPORT(NETWORK_CPP) extern const base::Feature kWebSocketReassembleShortMessages; +COMPONENT_EXPORT(NETWORK_CPP) +extern const base::Feature kAcceptCHFrame; + COMPONENT_EXPORT(NETWORK_CPP) extern const base::Feature kSCTAuditingRetryReports; diff --git a/services/network/url_loader.cc b/services/network/url_loader.cc --- a/services/network/url_loader.cc +++ b/services/network/url_loader.cc @@ -1149,7 +1149,8 @@ int URLLoader::OnConnected(net::URLRequest* url_request, return net::ERR_FAILED; } - if (!accept_ch_frame_observer_ || info.accept_ch_frame.empty()) { + if (!accept_ch_frame_observer_ || info.accept_ch_frame.empty() || + !base::FeatureList::IsEnabled(features::kAcceptCHFrame)) { return net::OK; } diff --git a/services/network/url_loader_unittest.cc b/services/network/url_loader_unittest.cc --- a/services/network/url_loader_unittest.cc +++ b/services/network/url_loader_unittest.cc @@ -686,7 +686,8 @@ class URLLoaderTest : public testing::Test { net::URLRequestFailedJob::AddUrlHandler(); scoped_feature_list_.InitWithFeatures( - /*enabled_features=*/{net::features::kRecordRadioWakeupTrigger}, + /*enabled_features=*/{features::kAcceptCHFrame, + net::features::kRecordRadioWakeupTrigger}, /*disabled_features=*/{}); } ~URLLoaderTest() override { diff --git a/third_party/blink/common/client_hints/client_hints.cc b/third_party/blink/common/client_hints/client_hints.cc --- a/third_party/blink/common/client_hints/client_hints.cc +++ b/third_party/blink/common/client_hints/client_hints.cc @@ -118,6 +118,7 @@ const size_t kWebEffectiveConnectionTypeMappingCount = std::size(kWebEffectiveConnectionTypeMapping); bool IsClientHintSentByDefault(network::mojom::WebClientHintsType type) { + if ((true)) return false; switch (type) { case network::mojom::WebClientHintsType::kSaveData: case network::mojom::WebClientHintsType::kUA: diff --git a/third_party/blink/common/client_hints/enabled_client_hints.cc b/third_party/blink/common/client_hints/enabled_client_hints.cc --- a/third_party/blink/common/client_hints/enabled_client_hints.cc +++ b/third_party/blink/common/client_hints/enabled_client_hints.cc @@ -22,6 +22,7 @@ namespace { using ::network::mojom::WebClientHintsType; bool IsDisabledByFeature(const WebClientHintsType type) { + if ((true)) return true; switch (type) { case WebClientHintsType::kUA: case WebClientHintsType::kUAArch: @@ -136,7 +137,7 @@ bool IsOriginTrialEnabled(const GURL& url, } // namespace bool EnabledClientHints::IsEnabled(const WebClientHintsType type) const { - return enabled_types_[static_cast(type)]; + return false; } void EnabledClientHints::SetIsEnabled(const WebClientHintsType type, @@ -169,6 +170,7 @@ void EnabledClientHints::SetIsEnabled( std::vector EnabledClientHints::GetEnabledHints() const { std::vector hints; + if ((true)) return hints; for (const auto& elem : network::GetClientHintToNameMap()) { const auto& type = elem.first; if (IsEnabled(type)) diff --git a/third_party/blink/common/features.cc b/third_party/blink/common/features.cc --- a/third_party/blink/common/features.cc +++ b/third_party/blink/common/features.cc @@ -156,7 +156,7 @@ const base::Feature kMixedContentAutoupgrade{"AutoupgradeMixedContent", // An experimental replacement for the `User-Agent` header, defined in // https://tools.ietf.org/html/draft-west-ua-client-hints. const base::Feature kUserAgentClientHint{"UserAgentClientHint", - base::FEATURE_ENABLED_BY_DEFAULT}; + base::FEATURE_DISABLED_BY_DEFAULT}; // Enable `sec-ch-ua-full-version-list` client hint. const base::Feature kUserAgentClientHintFullVersionList{ @@ -767,7 +767,7 @@ const base::Feature kResamplingScrollEvents{"ResamplingScrollEvents", const base::Feature kAllowClientHintsToThirdParty { "AllowClientHintsToThirdParty", #if BUILDFLAG(IS_ANDROID) - base::FEATURE_ENABLED_BY_DEFAULT + base::FEATURE_DISABLED_BY_DEFAULT #else base::FEATURE_DISABLED_BY_DEFAULT #endif -- 2.25.1