237 lines
11 KiB
Diff
237 lines
11 KiB
Diff
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<std::string> brand;
|
|
-#if !BUILDFLAG(CHROMIUM_BRANDING)
|
|
- brand = version_info::GetProductName();
|
|
-#endif
|
|
+ brand = "Google Chrome";
|
|
absl::optional<std::string> 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<network::mojom::WebClientHintsType>& 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<std::vector<network::mojom::WebClientHintsType>>
|
|
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<net::structured_headers::List> 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<bool> 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<bool> 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<int>(type)];
|
|
+ return false;
|
|
}
|
|
|
|
void EnabledClientHints::SetIsEnabled(const WebClientHintsType type,
|
|
@@ -169,6 +170,7 @@ void EnabledClientHints::SetIsEnabled(
|
|
|
|
std::vector<WebClientHintsType> EnabledClientHints::GetEnabledHints() const {
|
|
std::vector<WebClientHintsType> 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
|