Skip to content

Commit

Permalink
Implement Sec-CH-Prefers-Reduced-Transparency
Browse files Browse the repository at this point in the history
The `Sec-CH-Prefers-Reduced-Transparency` client hint is modeled after
the `prefers-reduced-transparency` user preference media feature as
defined in Media Queries 5.

Intent to prototype: https://groups.google.com/a/chromium.org/g/blink-dev/c/GFHrc2-lOo8

Bug: 1466423
Change-Id: I7b1e37d879dcc05b19475ba184daf28275d6ae9e
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/4705483
Reviewed-by: Nate Fischer <ntfschr@chromium.org>
Reviewed-by: Jeremy Roman <jbroman@chromium.org>
Reviewed-by: Ari Chivukula <arichiv@chromium.org>
Reviewed-by: Mike Taylor <miketaylr@chromium.org>
Reviewed-by: Reilly Grant <reillyg@chromium.org>
Reviewed-by: Avi Drissman <avi@chromium.org>
Reviewed-by: Daniel Cheng <dcheng@chromium.org>
Commit-Queue: Luke <lukewarlow156@gmail.com>
Cr-Commit-Position: refs/heads/main@{#1188705}
  • Loading branch information
lukewarlow authored and Chromium LUCI CQ committed Aug 26, 2023
1 parent 2b186e8 commit 8633929
Show file tree
Hide file tree
Showing 60 changed files with 470 additions and 81 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -102,6 +102,7 @@ public ClientHintsTestResult(
@SmallTest
@Feature({"AndroidWebView"})
@CommandLineFlags.Add({"disable-features=UserAgentClientHint",
"enable-features=ClientHintsPrefersReducedTransparency",
ContentSwitches.HOST_RESOLVER_RULES + "=MAP * 127.0.0.1"})
public void
testAllClientHints() throws Throwable {
Expand Down Expand Up @@ -145,6 +146,7 @@ public ClientHintsTestResult(
"save-data",
"sec-ch-prefers-reduced-motion",
"sec-ch-ua-form-factor",
"sec-ch-prefers-reduced-transparency",
// Add client hints above. The final row should have a trailing comma for cleaner
// diffs.
};
Expand Down Expand Up @@ -209,6 +211,8 @@ public ClientHintsTestResult(
Assert.assertEquals("HEADER_NOT_FOUND", jsonObject.getString("save-data"));
Assert.assertNotEquals("HEADER_NOT_FOUND", jsonObject.getString("sec-ch-prefers-reduced-motion"));
Assert.assertEquals("HEADER_NOT_FOUND", jsonObject.getString("sec-ch-ua-form-factor"));
Assert.assertNotEquals(
"HEADER_NOT_FOUND", jsonObject.getString("sec-ch-prefers-reduced-transparency"));

// Cleanup after test.
clearCookies();
Expand Down
103 changes: 92 additions & 11 deletions chrome/browser/client_hints/client_hints_browsertest.cc
Original file line number Diff line number Diff line change
Expand Up @@ -106,10 +106,10 @@ using ::testing::Key;
using ::testing::Not;
using ::testing::Optional;

constexpr unsigned expected_client_hints_number = 20u;
constexpr unsigned expected_client_hints_number = 21u;
constexpr unsigned expected_default_third_party_client_hints_number = 3u;
constexpr unsigned expected_requested_third_party_client_hints_number = 23u;
constexpr unsigned expected_pre_merge_third_party_client_hints_number = 15u;
constexpr unsigned expected_requested_third_party_client_hints_number = 24u;
constexpr unsigned expected_pre_merge_third_party_client_hints_number = 16u;

// All of the status codes from HttpResponseHeaders::IsRedirectResponseCode.
const net::HttpStatusCode kRedirectStatusCodes[] = {
Expand Down Expand Up @@ -423,7 +423,8 @@ const std::vector<network::mojom::WebClientHintsType> kStandardHTTPHeaderHints(
network::mojom::WebClientHintsType::kViewportHeight,
network::mojom::WebClientHintsType::kUAFullVersionList,
network::mojom::WebClientHintsType::kUAWoW64,
network::mojom::WebClientHintsType::kUAFormFactor});
network::mojom::WebClientHintsType::kUAFormFactor,
network::mojom::WebClientHintsType::kPrefersReducedTransparency});

const std::vector<network::mojom::WebClientHintsType>
kStandardAcceptCHMetaHints(
Expand Down Expand Up @@ -487,7 +488,8 @@ const std::vector<network::mojom::WebClientHintsType>
network::mojom::WebClientHintsType::kViewportHeight,
network::mojom::WebClientHintsType::kUAFullVersionList,
network::mojom::WebClientHintsType::kUAWoW64,
network::mojom::WebClientHintsType::kUAFormFactor});
network::mojom::WebClientHintsType::kUAFormFactor,
network::mojom::WebClientHintsType::kPrefersReducedTransparency});

const std::vector<network::mojom::WebClientHintsType>
kExtendedDelegateCHMetaHints(
Expand All @@ -511,7 +513,8 @@ const std::vector<network::mojom::WebClientHintsType>
network::mojom::WebClientHintsType::kUAFullVersionList,
network::mojom::WebClientHintsType::kUAWoW64,
network::mojom::WebClientHintsType::kPrefersReducedMotion,
network::mojom::WebClientHintsType::kUAFormFactor});
network::mojom::WebClientHintsType::kUAFormFactor,
network::mojom::WebClientHintsType::kPrefersReducedTransparency});
} // namespace

class ClientHintsBrowserTest : public policy::PolicyTest {
Expand Down Expand Up @@ -649,7 +652,7 @@ class ClientHintsBrowserTest : public policy::PolicyTest {
// represented in the various header counts.
feature_list->InitializeFromCommandLine(
"UserAgentClientHint,CriticalClientHint,AcceptCHFrame,"
"ClientHintsFormFactor",
"ClientHintsFormFactor,ClientHintsPrefersReducedTransparency",
"");
return feature_list;
}
Expand Down Expand Up @@ -1246,6 +1249,14 @@ class ClientHintsBrowserTest : public policy::PolicyTest {
continue;
}

// Skip over `Sec-CH-Prefers-Reduced-Transparency` when its feature is
// disabled
if (header == "sec-ch-prefers-reduced-transparency" &&
!base::FeatureList::IsEnabled(
blink::features::kClientHintsPrefersReducedTransparency)) {
continue;
}

EXPECT_EQ(expect_client_hints, base::Contains(request.headers, header));
}
}
Expand Down Expand Up @@ -3321,7 +3332,9 @@ class ClientHintsWebHoldbackBrowserTest : public ClientHintsBrowserTest {

std::unique_ptr<base::FeatureList> feature_list(new base::FeatureList);
feature_list->InitializeFromCommandLine(
"UserAgentClientHint,ClientHintsFormFactor", "");
"UserAgentClientHint,ClientHintsFormFactor,"
"ClientHintsPrefersReducedTransparency",
"");
feature_list->RegisterFieldTrialOverride(
features::kNetworkQualityEstimatorWebHoldback.name,
base::FeatureList::OVERRIDE_ENABLE_FEATURE, trial.get());
Expand Down Expand Up @@ -4016,9 +4029,15 @@ class ClientHintsBrowserTestWithEmulatedMedia
: public DevToolsProtocolTestBase {
public:
ClientHintsBrowserTestWithEmulatedMedia()
: ClientHintsBrowserTestWithEmulatedMedia(
"UserAgentClientHint,AcceptCHFrame,"
"ClientHintsPrefersReducedTransparency",
"") {}

ClientHintsBrowserTestWithEmulatedMedia(const std::string& enable_features,
const std::string& disable_features)
: https_server_(net::EmbeddedTestServer::TYPE_HTTPS) {
scoped_feature_list_.InitFromCommandLine(
"UserAgentClientHint,AcceptCHFrame", "");
scoped_feature_list_.InitFromCommandLine(enable_features, disable_features);

https_server_.ServeFilesFromSourceDirectory(
"chrome/test/data/client_hints");
Expand Down Expand Up @@ -4046,6 +4065,11 @@ class ClientHintsBrowserTestWithEmulatedMedia
prefers_reduced_motion_observed_ =
request.headers.at("sec-ch-prefers-reduced-motion");
}
if (base::Contains(request.headers,
"sec-ch-prefers-reduced-transparency")) {
prefers_reduced_transparency_observed_ =
request.headers.at("sec-ch-prefers-reduced-transparency");
}
}

const GURL& test_url() const { return test_url_; }
Expand All @@ -4058,6 +4082,10 @@ class ClientHintsBrowserTestWithEmulatedMedia
return prefers_reduced_motion_observed_;
}

const std::string& prefers_reduced_transparency_observed() const {
return prefers_reduced_transparency_observed_;
}

void EmulateMedia(base::StringPiece string) {
base::Value features = base::test::ParseJson(string);
DCHECK(features.is_list());
Expand All @@ -4066,12 +4094,13 @@ class ClientHintsBrowserTestWithEmulatedMedia
SendCommandSync("Emulation.setEmulatedMedia", std::move(params));
}

private:
protected:
base::test::ScopedFeatureList scoped_feature_list_;
net::EmbeddedTestServer https_server_;
GURL test_url_;
std::string prefers_color_scheme_observed_;
std::string prefers_reduced_motion_observed_;
std::string prefers_reduced_transparency_observed_;
};

IN_PROC_BROWSER_TEST_F(ClientHintsBrowserTestWithEmulatedMedia,
Expand Down Expand Up @@ -4104,11 +4133,28 @@ IN_PROC_BROWSER_TEST_F(ClientHintsBrowserTestWithEmulatedMedia,
EXPECT_EQ(prefers_reduced_motion_observed(), "no-preference");
}

IN_PROC_BROWSER_TEST_F(ClientHintsBrowserTestWithEmulatedMedia,
PrefersReducedTransparency) {
ASSERT_TRUE(ui_test_utils::NavigateToURL(browser(), test_url()));
EXPECT_EQ(prefers_reduced_transparency_observed(), "");
Attach();

EmulateMedia(
R"([{"name": "prefers-reduced-transparency", "value": "reduce"}])");
ASSERT_TRUE(ui_test_utils::NavigateToURL(browser(), test_url()));
EXPECT_EQ(prefers_reduced_transparency_observed(), "reduce");

EmulateMedia(R"([{"name": "prefers-reduced-transparency", "value": ""}])");
ASSERT_TRUE(ui_test_utils::NavigateToURL(browser(), test_url()));
EXPECT_EQ(prefers_reduced_transparency_observed(), "no-preference");
}

IN_PROC_BROWSER_TEST_F(ClientHintsBrowserTestWithEmulatedMedia,
MultipleMediaFeatures) {
ASSERT_TRUE(ui_test_utils::NavigateToURL(browser(), test_url()));
EXPECT_EQ(prefers_color_scheme_observed(), "");
EXPECT_EQ(prefers_reduced_motion_observed(), "");
EXPECT_EQ(prefers_reduced_transparency_observed(), "");
Attach();

EmulateMedia(
Expand All @@ -4117,11 +4163,21 @@ IN_PROC_BROWSER_TEST_F(ClientHintsBrowserTestWithEmulatedMedia,
ASSERT_TRUE(ui_test_utils::NavigateToURL(browser(), test_url()));
EXPECT_EQ(prefers_color_scheme_observed(), "light");
EXPECT_EQ(prefers_reduced_motion_observed(), "reduce");
EXPECT_EQ(prefers_reduced_transparency_observed(), "no-preference");

EmulateMedia(
R"([{"name": "prefers-color-scheme", "value": "light"},
{"name": "prefers-reduced-transparency", "value": "reduce"}])");
ASSERT_TRUE(ui_test_utils::NavigateToURL(browser(), test_url()));
EXPECT_EQ(prefers_color_scheme_observed(), "light");
EXPECT_EQ(prefers_reduced_motion_observed(), "no-preference");
EXPECT_EQ(prefers_reduced_transparency_observed(), "reduce");

EmulateMedia(R"([{"name": "prefers-color-scheme", "value": "dark"}])");
ASSERT_TRUE(ui_test_utils::NavigateToURL(browser(), test_url()));
EXPECT_EQ(prefers_color_scheme_observed(), "dark");
EXPECT_EQ(prefers_reduced_motion_observed(), "no-preference");
EXPECT_EQ(prefers_reduced_transparency_observed(), "no-preference");
}

// Base class for the User-Agent reduction browser tests. Common functionality
Expand Down Expand Up @@ -4906,3 +4962,28 @@ IN_PROC_BROWSER_TEST_F(RedirectUaReductionBrowserTest, NormalRedirectRequest) {
base::FeatureList::IsEnabled(
blink::features::kReduceUserAgentMinorVersion));
}

class PrefersReducedTransparencyExplicitlyDisabledBrowserTest
: public ClientHintsBrowserTestWithEmulatedMedia {
public:
PrefersReducedTransparencyExplicitlyDisabledBrowserTest()
: ClientHintsBrowserTestWithEmulatedMedia(
"",
"ClientHintsPrefersReducedTransparency") {}
};

IN_PROC_BROWSER_TEST_F(PrefersReducedTransparencyExplicitlyDisabledBrowserTest,
PrefersReducedTransparencyDisabled) {
ASSERT_TRUE(ui_test_utils::NavigateToURL(browser(), test_url()));
EXPECT_EQ(prefers_reduced_transparency_observed(), "");
Attach();

EmulateMedia(
R"([{"name": "prefers-reduced-transparency", "value": "reduce"}])");
ASSERT_TRUE(ui_test_utils::NavigateToURL(browser(), test_url()));
EXPECT_EQ(prefers_reduced_transparency_observed(), "");

EmulateMedia(R"([{"name": "prefers-reduced-transparency", "value": ""}])");
ASSERT_TRUE(ui_test_utils::NavigateToURL(browser(), test_url()));
EXPECT_EQ(prefers_reduced_transparency_observed(), "");
}
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
HTTP/1.1 200 OK
Accept-CH: dpr,sec-ch-dpr,device-memory,sec-ch-device-memory,viewport-width,sec-ch-viewport-width,rtt,downlink,ect,sec-ch-ua-arch,sec-ch-ua-platform-version,sec-ch-ua-model,sec-ch-ua-full-version,sec-ch-prefers-color-scheme,sec-ch-prefers-reduced-motion,sec-ch-ua-bitness,sec-ch-viewport-height,sec-ch-ua-full-version-list,sec-ch-ua-wow64,sec-ch-ua-form-factor
Accept-CH: dpr,sec-ch-dpr,device-memory,sec-ch-device-memory,viewport-width,sec-ch-viewport-width,rtt,downlink,ect,sec-ch-ua-arch,sec-ch-ua-platform-version,sec-ch-ua-model,sec-ch-ua-full-version,sec-ch-prefers-color-scheme,sec-ch-prefers-reduced-motion,sec-ch-ua-bitness,sec-ch-viewport-height,sec-ch-ua-full-version-list,sec-ch-ua-wow64,sec-ch-ua-form-factor,sec-ch-prefers-reduced-transparency
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
HTTP/1.1 200 OK
Accept-CH: dpr,sec-ch-dpr,device-memory,sec-ch-device-memory,viewport-width,sec-ch-viewport-width,rtt,downlink,ect,sec-ch-ua-arch,sec-ch-ua-platform-version,sec-ch-ua-model,sec-ch-ua-full-version,sec-ch-prefers-color-scheme,sec-ch-prefers-reduced-motion,sec-ch-ua-bitness,sec-ch-viewport-height,sec-ch-ua-full-version-list,sec-ch-ua-wow64,sec-ch-ua-form-factor
Accept-CH: dpr,sec-ch-dpr,device-memory,sec-ch-device-memory,viewport-width,sec-ch-viewport-width,rtt,downlink,ect,sec-ch-ua-arch,sec-ch-ua-platform-version,sec-ch-ua-model,sec-ch-ua-full-version,sec-ch-prefers-color-scheme,sec-ch-prefers-reduced-motion,sec-ch-ua-bitness,sec-ch-viewport-height,sec-ch-ua-full-version-list,sec-ch-ua-wow64,sec-ch-ua-form-factor,sec-ch-prefers-reduced-transparency
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
<html>
<meta http-equiv="Accept-CH" content="dpr=(https://bar.com/),sec-ch-dpr=(https://bar.com/),device-memory=(https://bar.com/),sec-ch-device-memory=(https://bar.com/),viewport-width=(https://bar.com/),sec-ch-viewport-width=(https://bar.com/),rtt=(https://bar.com/),downlink=(https://bar.com/),ect=(https://bar.com/),sec-ch-ua-arch=(https://bar.com/),sec-ch-ua-platform-version=(https://bar.com/),sec-ch-ua-model=(https://bar.com/),sec-ch-ua-full-version=(https://bar.com/),sec-ch-prefers-color-scheme=(https://bar.com/),sec-ch-prefers-reduced-motion=(https://bar.com/),sec-ch-ua-bitness=(https://bar.com/),sec-ch-viewport-height=(https://bar.com/),sec-ch-ua-full-version-list=(https://bar.com/),sec-ch-ua-wow64=(https://bar.com/),sec-ch-ua-form-factor=(https://bar.com/)">
<meta http-equiv="Accept-CH" content="dpr=(https://bar.com/),sec-ch-dpr=(https://bar.com/),device-memory=(https://bar.com/),sec-ch-device-memory=(https://bar.com/),viewport-width=(https://bar.com/),sec-ch-viewport-width=(https://bar.com/),rtt=(https://bar.com/),downlink=(https://bar.com/),ect=(https://bar.com/),sec-ch-ua-arch=(https://bar.com/),sec-ch-ua-platform-version=(https://bar.com/),sec-ch-ua-model=(https://bar.com/),sec-ch-ua-full-version=(https://bar.com/),sec-ch-prefers-color-scheme=(https://bar.com/),sec-ch-prefers-reduced-motion=(https://bar.com/),sec-ch-ua-bitness=(https://bar.com/),sec-ch-viewport-height=(https://bar.com/),sec-ch-ua-full-version-list=(https://bar.com/),sec-ch-ua-wow64=(https://bar.com/),sec-ch-ua-form-factor=(https://bar.com/),sec-ch-prefers-reduced-transparency=(https://bar.com/)">
<link rel="icon" href="data:;base64,=">
<body>
<img src="test_img.jpg"></img>
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
<html>
<meta http-equiv="Accept-CH" content="dpr=(https://foo.com/),sec-ch-dpr=(https://foo.com/),device-memory=(https://foo.com/),sec-ch-device-memory=(https://foo.com/),viewport-width=(https://foo.com/),sec-ch-viewport-width=(https://foo.com/),rtt=(https://foo.com/),downlink=(https://foo.com/),ect=(https://foo.com/),sec-ch-ua-arch=(https://foo.com/),sec-ch-ua-platform-version=(https://foo.com/),sec-ch-ua-model=(https://foo.com/),sec-ch-ua-full-version=(https://foo.com/),sec-ch-prefers-color-scheme=(https://foo.com/),sec-ch-prefers-reduced-motion=(https://foo.com/),sec-ch-ua-bitness=(https://foo.com/),sec-ch-viewport-height=(https://foo.com/),sec-ch-ua-full-version-list=(https://foo.com/),sec-ch-ua-wow64=(https://foo.com/),sec-ch-ua-form-factor=(https://foo.com/)">
<meta http-equiv="Accept-CH" content="dpr=(https://foo.com/),sec-ch-dpr=(https://foo.com/),device-memory=(https://foo.com/),sec-ch-device-memory=(https://foo.com/),viewport-width=(https://foo.com/),sec-ch-viewport-width=(https://foo.com/),rtt=(https://foo.com/),downlink=(https://foo.com/),ect=(https://foo.com/),sec-ch-ua-arch=(https://foo.com/),sec-ch-ua-platform-version=(https://foo.com/),sec-ch-ua-model=(https://foo.com/),sec-ch-ua-full-version=(https://foo.com/),sec-ch-prefers-color-scheme=(https://foo.com/),sec-ch-prefers-reduced-motion=(https://foo.com/),sec-ch-ua-bitness=(https://foo.com/),sec-ch-viewport-height=(https://foo.com/),sec-ch-ua-full-version-list=(https://foo.com/),sec-ch-ua-wow64=(https://foo.com/),sec-ch-ua-form-factor=(https://foo.com/),sec-ch-prefers-reduced-transparency=(https://foo.com/)">
<link rel="icon" href="data:;base64,=">
<body>
<img src="test_img.jpg"></img>
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
<html>
<meta http-equiv="Accept-CH" content="dpr=(https://bar.com/),sec-ch-dpr=(https://bar.com/),device-memory=(https://bar.com/),sec-ch-device-memory=(https://bar.com/),viewport-width=(https://bar.com/),sec-ch-viewport-width=(https://bar.com/),rtt=(https://bar.com/),downlink=(https://bar.com/),ect=(https://bar.com/),sec-ch-ua-arch=(https://bar.com/),sec-ch-ua-platform-version=(https://bar.com/),sec-ch-ua-model=(https://bar.com/),sec-ch-ua-full-version=(https://bar.com/),sec-ch-prefers-color-scheme=(https://bar.com/),sec-ch-prefers-reduced-motion=(https://bar.com/),sec-ch-ua-bitness=(https://bar.com/),sec-ch-viewport-height=(https://bar.com/),sec-ch-ua-full-version-list=(https://bar.com/),sec-ch-ua-wow64=(https://bar.com/),sec-ch-ua-form-factor=(https://bar.com/)">
<meta http-equiv="Accept-CH" content="dpr=(https://bar.com/),sec-ch-dpr=(https://bar.com/),device-memory=(https://bar.com/),sec-ch-device-memory=(https://bar.com/),viewport-width=(https://bar.com/),sec-ch-viewport-width=(https://bar.com/),rtt=(https://bar.com/),downlink=(https://bar.com/),ect=(https://bar.com/),sec-ch-ua-arch=(https://bar.com/),sec-ch-ua-platform-version=(https://bar.com/),sec-ch-ua-model=(https://bar.com/),sec-ch-ua-full-version=(https://bar.com/),sec-ch-prefers-color-scheme=(https://bar.com/),sec-ch-prefers-reduced-motion=(https://bar.com/),sec-ch-ua-bitness=(https://bar.com/),sec-ch-viewport-height=(https://bar.com/),sec-ch-ua-full-version-list=(https://bar.com/),sec-ch-ua-wow64=(https://bar.com/),sec-ch-ua-form-factor=(https://bar.com/),sec-ch-prefers-reduced-transparency=(https://bar.com/)">
<link rel="icon" href="data:;base64,=">
<body>
<img src="test_img.jpg"></img>
Expand Down
Original file line number Diff line number Diff line change
@@ -1,3 +1,3 @@
HTTP/1.1 200 OK
Accept-CH: dpr,sec-ch-dpr,device-memory,sec-ch-device-memory,viewport-width,sec-ch-viewport-width,rtt,downlink,ect,sec-ch-ua-arch,sec-ch-ua-platform-version,sec-ch-ua-model,sec-ch-ua-full-version,sec-ch-prefers-color-scheme,sec-ch-prefers-reduced-motion,sec-ch-ua-bitness,sec-ch-viewport-height,sec-ch-ua-full-version-list,sec-ch-ua-wow64,sec-ch-ua-form-factor
Permissions-Policy: ch-dpr=(*),ch-device-memory=(self "https://foo.com/"),ch-viewport-width=(*),ch-rtt=(self "https://foo.com/"),ch-downlink=(*),ch-ect=(self "https://foo.com/"),ch-ua-arch=(*),ch-ua-platform-version=(self "https://foo.com/"),ch-ua-model=(*),ch-ua-full-version=(self "https://foo.com/"),ch-prefers-color-scheme=(*),ch-prefers-reduced-motion=(*),ch-ua-bitness=(self "https://foo.com/"),ch-viewport-height=(*),ch-ua-full-version-list=(self "https://foo.com/"),ch-ua-wow64=(*),ch-ua-form-factor=(*)
Accept-CH: dpr,sec-ch-dpr,device-memory,sec-ch-device-memory,viewport-width,sec-ch-viewport-width,rtt,downlink,ect,sec-ch-ua-arch,sec-ch-ua-platform-version,sec-ch-ua-model,sec-ch-ua-full-version,sec-ch-prefers-color-scheme,sec-ch-prefers-reduced-motion,sec-ch-ua-bitness,sec-ch-viewport-height,sec-ch-ua-full-version-list,sec-ch-ua-wow64,sec-ch-ua-form-factor,sec-ch-prefers-reduced-transparency
Permissions-Policy: ch-dpr=(*),ch-device-memory=(self "https://foo.com/"),ch-viewport-width=(*),ch-rtt=(self "https://foo.com/"),ch-downlink=(*),ch-ect=(self "https://foo.com/"),ch-ua-arch=(*),ch-ua-platform-version=(self "https://foo.com/"),ch-ua-model=(*),ch-ua-full-version=(self "https://foo.com/"),ch-prefers-color-scheme=(*),ch-prefers-reduced-motion=(*),ch-ua-bitness=(self "https://foo.com/"),ch-viewport-height=(*),ch-ua-full-version-list=(self "https://foo.com/"),ch-ua-wow64=(*),ch-ua-form-factor=(*),ch-prefers-reduced-transparency=(*)

0 comments on commit 8633929

Please sign in to comment.