summaryrefslogtreecommitdiffstats
path: root/testing/web-platform/tests/client-hints/clear-site-data
diff options
context:
space:
mode:
Diffstat (limited to 'testing/web-platform/tests/client-hints/clear-site-data')
-rw-r--r--testing/web-platform/tests/client-hints/clear-site-data/clear-site-data-all.https.html37
-rw-r--r--testing/web-platform/tests/client-hints/clear-site-data/clear-site-data-all.https.html.headers1
-rw-r--r--testing/web-platform/tests/client-hints/clear-site-data/clear-site-data-cache.https.html37
-rw-r--r--testing/web-platform/tests/client-hints/clear-site-data/clear-site-data-cache.https.html.headers1
-rw-r--r--testing/web-platform/tests/client-hints/clear-site-data/clear-site-data-client-hints.https.html37
-rw-r--r--testing/web-platform/tests/client-hints/clear-site-data/clear-site-data-client-hints.https.html.headers1
-rw-r--r--testing/web-platform/tests/client-hints/clear-site-data/clear-site-data-cookies.https.html37
-rw-r--r--testing/web-platform/tests/client-hints/clear-site-data/clear-site-data-cookies.https.html.headers1
-rw-r--r--testing/web-platform/tests/client-hints/clear-site-data/clear-site-data-storage.https.html37
-rw-r--r--testing/web-platform/tests/client-hints/clear-site-data/clear-site-data-storage.https.html.headers1
-rw-r--r--testing/web-platform/tests/client-hints/clear-site-data/resources/check-client-hints.py15
-rw-r--r--testing/web-platform/tests/client-hints/clear-site-data/resources/clear-site-data.py12
-rw-r--r--testing/web-platform/tests/client-hints/clear-site-data/set-client-hints-after-clear-all.https.html24
-rw-r--r--testing/web-platform/tests/client-hints/clear-site-data/set-client-hints-after-clear-all.https.html.headers2
-rw-r--r--testing/web-platform/tests/client-hints/clear-site-data/set-client-hints-after-clear-cache.https.html24
-rw-r--r--testing/web-platform/tests/client-hints/clear-site-data/set-client-hints-after-clear-cache.https.html.headers2
-rw-r--r--testing/web-platform/tests/client-hints/clear-site-data/set-client-hints-after-clear-client-hints.https.html24
-rw-r--r--testing/web-platform/tests/client-hints/clear-site-data/set-client-hints-after-clear-client-hints.https.html.headers2
-rw-r--r--testing/web-platform/tests/client-hints/clear-site-data/set-client-hints-after-clear-cookies.https.html24
-rw-r--r--testing/web-platform/tests/client-hints/clear-site-data/set-client-hints-after-clear-cookies.https.html.headers2
-rw-r--r--testing/web-platform/tests/client-hints/clear-site-data/set-client-hints-after-clear-storage.https.html24
-rw-r--r--testing/web-platform/tests/client-hints/clear-site-data/set-client-hints-after-clear-storage.https.html.headers2
-rw-r--r--testing/web-platform/tests/client-hints/clear-site-data/set-critical-client-hints-after-clear-all.https.html24
-rw-r--r--testing/web-platform/tests/client-hints/clear-site-data/set-critical-client-hints-after-clear-all.https.html.headers3
-rw-r--r--testing/web-platform/tests/client-hints/clear-site-data/set-critical-client-hints-after-clear-cache.https.html24
-rw-r--r--testing/web-platform/tests/client-hints/clear-site-data/set-critical-client-hints-after-clear-cache.https.html.headers3
-rw-r--r--testing/web-platform/tests/client-hints/clear-site-data/set-critical-client-hints-after-clear-client-hints.https.html24
-rw-r--r--testing/web-platform/tests/client-hints/clear-site-data/set-critical-client-hints-after-clear-client-hints.https.html.headers3
-rw-r--r--testing/web-platform/tests/client-hints/clear-site-data/set-critical-client-hints-after-clear-cookies.https.html24
-rw-r--r--testing/web-platform/tests/client-hints/clear-site-data/set-critical-client-hints-after-clear-cookies.https.html.headers3
-rw-r--r--testing/web-platform/tests/client-hints/clear-site-data/set-critical-client-hints-after-clear-storage.https.html24
-rw-r--r--testing/web-platform/tests/client-hints/clear-site-data/set-critical-client-hints-after-clear-storage.https.html.headers3
32 files changed, 482 insertions, 0 deletions
diff --git a/testing/web-platform/tests/client-hints/clear-site-data/clear-site-data-all.https.html b/testing/web-platform/tests/client-hints/clear-site-data/clear-site-data-all.https.html
new file mode 100644
index 0000000000..a371f07fed
--- /dev/null
+++ b/testing/web-platform/tests/client-hints/clear-site-data/clear-site-data-all.https.html
@@ -0,0 +1,37 @@
+<!DOCTYPE html>
+<body>
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script>
+// Here's the set-up for this test:
+// Step 1 (first window) Open new window to verify that hints were set.
+// Step 2 (second window) Alert first window of client hints present.
+// Step 3 (first window) Asserts client hints were present.
+// Step 4 (first window) Navigate other window to page that clears all data.
+// Step 5 (second window) Navigate to a page that can check client hints still sent.
+// Step 6 (second window) Alert first window of client hints present.
+// Step 7 (first window) Asserts client hints were not present.
+async_test(t => {
+ var new_window;
+
+ // Step 3
+ window.addEventListener("message", t.step_func(e => {
+ assert_equals(e.data, "HadDeviceMemory");
+
+ // Step 7
+ window.addEventListener("message", t.step_func(e => {
+ assert_equals(e.data, "MissingDeviceMemory");
+ t.done();
+ }), {once: true});
+
+ // Step 4
+ new_window.location.href = "/client-hints/clear-site-data/resources/clear-site-data.py";
+ }), {once: true});
+
+ // Step 1
+ new_window = window.open("/client-hints/clear-site-data/resources/check-client-hints.py");
+ t.add_cleanup(() => new_window.close());
+}, "Clear-Site-Data for * should remove all client hints.");
+</script>
+</body>
+</html>
diff --git a/testing/web-platform/tests/client-hints/clear-site-data/clear-site-data-all.https.html.headers b/testing/web-platform/tests/client-hints/clear-site-data/clear-site-data-all.https.html.headers
new file mode 100644
index 0000000000..226bb1c3b1
--- /dev/null
+++ b/testing/web-platform/tests/client-hints/clear-site-data/clear-site-data-all.https.html.headers
@@ -0,0 +1 @@
+Accept-CH: Sec-CH-Device-Memory
diff --git a/testing/web-platform/tests/client-hints/clear-site-data/clear-site-data-cache.https.html b/testing/web-platform/tests/client-hints/clear-site-data/clear-site-data-cache.https.html
new file mode 100644
index 0000000000..1be71bf8b0
--- /dev/null
+++ b/testing/web-platform/tests/client-hints/clear-site-data/clear-site-data-cache.https.html
@@ -0,0 +1,37 @@
+<!DOCTYPE html>
+<body>
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script>
+// Here's the set-up for this test:
+// Step 1 (first window) Open new window to verify that hints were set.
+// Step 2 (second window) Alert first window of client hints present.
+// Step 3 (first window) Asserts client hints were present.
+// Step 4 (first window) Navigate other window to page that clears cache data.
+// Step 5 (second window) Navigate to a page that can check client hints still sent.
+// Step 6 (second window) Alert first window of client hints present.
+// Step 7 (first window) Asserts client hints were not present.
+async_test(t => {
+ var new_window;
+
+ // Step 3
+ window.addEventListener("message", t.step_func(e => {
+ assert_equals(e.data, "HadDeviceMemory");
+
+ // Step 7
+ window.addEventListener("message", t.step_func(e => {
+ assert_equals(e.data, "MissingDeviceMemory");
+ t.done();
+ }), {once: true});
+
+ // Step 4
+ new_window.location.href = "/client-hints/clear-site-data/resources/clear-site-data.py?target=cache";
+ }), {once: true});
+
+ // Step 1
+ new_window = window.open("/client-hints/clear-site-data/resources/check-client-hints.py");
+ t.add_cleanup(() => new_window.close());
+}, "Clear-Site-Data for cache should remove all client hints.");
+</script>
+</body>
+</html>
diff --git a/testing/web-platform/tests/client-hints/clear-site-data/clear-site-data-cache.https.html.headers b/testing/web-platform/tests/client-hints/clear-site-data/clear-site-data-cache.https.html.headers
new file mode 100644
index 0000000000..226bb1c3b1
--- /dev/null
+++ b/testing/web-platform/tests/client-hints/clear-site-data/clear-site-data-cache.https.html.headers
@@ -0,0 +1 @@
+Accept-CH: Sec-CH-Device-Memory
diff --git a/testing/web-platform/tests/client-hints/clear-site-data/clear-site-data-client-hints.https.html b/testing/web-platform/tests/client-hints/clear-site-data/clear-site-data-client-hints.https.html
new file mode 100644
index 0000000000..d37f62af8f
--- /dev/null
+++ b/testing/web-platform/tests/client-hints/clear-site-data/clear-site-data-client-hints.https.html
@@ -0,0 +1,37 @@
+<!DOCTYPE html>
+<body>
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script>
+// Here's the set-up for this test:
+// Step 1 (first window) Open new window to verify that hints were set.
+// Step 2 (second window) Alert first window of client hints present.
+// Step 3 (first window) Asserts client hints were present.
+// Step 4 (first window) Navigate other window to page that clears client hint data.
+// Step 5 (second window) Navigate to a page that can check client hints still sent.
+// Step 6 (second window) Alert first window of client hints present.
+// Step 7 (first window) Asserts client hints were not present.
+async_test(t => {
+ var new_window;
+
+ // Step 3
+ window.addEventListener("message", t.step_func(e => {
+ assert_equals(e.data, "HadDeviceMemory");
+
+ // Step 7
+ window.addEventListener("message", t.step_func(e => {
+ assert_equals(e.data, "MissingDeviceMemory");
+ t.done();
+ }), {once: true});
+
+ // Step 4
+ new_window.location.href = "/client-hints/clear-site-data/resources/clear-site-data.py?target=clientHints";
+ }), {once: true});
+
+ // Step 1
+ new_window = window.open("/client-hints/clear-site-data/resources/check-client-hints.py");
+ t.add_cleanup(() => new_window.close());
+}, "Clear-Site-Data for clientHints should remove all client hints.");
+</script>
+</body>
+</html>
diff --git a/testing/web-platform/tests/client-hints/clear-site-data/clear-site-data-client-hints.https.html.headers b/testing/web-platform/tests/client-hints/clear-site-data/clear-site-data-client-hints.https.html.headers
new file mode 100644
index 0000000000..226bb1c3b1
--- /dev/null
+++ b/testing/web-platform/tests/client-hints/clear-site-data/clear-site-data-client-hints.https.html.headers
@@ -0,0 +1 @@
+Accept-CH: Sec-CH-Device-Memory
diff --git a/testing/web-platform/tests/client-hints/clear-site-data/clear-site-data-cookies.https.html b/testing/web-platform/tests/client-hints/clear-site-data/clear-site-data-cookies.https.html
new file mode 100644
index 0000000000..e506b717e1
--- /dev/null
+++ b/testing/web-platform/tests/client-hints/clear-site-data/clear-site-data-cookies.https.html
@@ -0,0 +1,37 @@
+<!DOCTYPE html>
+<body>
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script>
+// Here's the set-up for this test:
+// Step 1 (first window) Open new window to verify that hints were set.
+// Step 2 (second window) Alert first window of client hints present.
+// Step 3 (first window) Asserts client hints were present.
+// Step 4 (first window) Navigate other window to page that clears cookies.
+// Step 5 (second window) Navigate to a page that can check client hints still sent.
+// Step 6 (second window) Alert first window of client hints present.
+// Step 7 (first window) Asserts client hints were not present.
+async_test(t => {
+ var new_window;
+
+ // Step 3
+ window.addEventListener("message", t.step_func(e => {
+ assert_equals(e.data, "HadDeviceMemory");
+
+ // Step 7
+ window.addEventListener("message", t.step_func(e => {
+ assert_equals(e.data, "MissingDeviceMemory");
+ t.done();
+ }), {once: true});
+
+ // Step 4
+ new_window.location.href = "/client-hints/clear-site-data/resources/clear-site-data.py?target=cookies";
+ }), {once: true});
+
+ // Step 1
+ new_window = window.open("/client-hints/clear-site-data/resources/check-client-hints.py");
+ t.add_cleanup(() => new_window.close());
+}, "Clear-Site-Data for cookies should remove all client hints.");
+</script>
+</body>
+</html>
diff --git a/testing/web-platform/tests/client-hints/clear-site-data/clear-site-data-cookies.https.html.headers b/testing/web-platform/tests/client-hints/clear-site-data/clear-site-data-cookies.https.html.headers
new file mode 100644
index 0000000000..226bb1c3b1
--- /dev/null
+++ b/testing/web-platform/tests/client-hints/clear-site-data/clear-site-data-cookies.https.html.headers
@@ -0,0 +1 @@
+Accept-CH: Sec-CH-Device-Memory
diff --git a/testing/web-platform/tests/client-hints/clear-site-data/clear-site-data-storage.https.html b/testing/web-platform/tests/client-hints/clear-site-data/clear-site-data-storage.https.html
new file mode 100644
index 0000000000..19bce9e91e
--- /dev/null
+++ b/testing/web-platform/tests/client-hints/clear-site-data/clear-site-data-storage.https.html
@@ -0,0 +1,37 @@
+<!DOCTYPE html>
+<body>
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script>
+// Here's the set-up for this test:
+// Step 1 (first window) Open new window to verify that hints were set.
+// Step 2 (second window) Alert first window of client hints present.
+// Step 3 (first window) Asserts client hints were present.
+// Step 4 (first window) Navigate other window to page that clears storage data.
+// Step 5 (second window) Navigate to a page that can check client hints still sent.
+// Step 6 (second window) Alert first window of client hints present.
+// Step 7 (first window) Asserts client hints were present.
+async_test(t => {
+ var new_window;
+
+ // Step 3
+ window.addEventListener("message", t.step_func(e => {
+ assert_equals(e.data, "HadDeviceMemory");
+
+ // Step 7
+ window.addEventListener("message", t.step_func(e => {
+ assert_equals(e.data, "HadDeviceMemory");
+ t.done();
+ }), {once: true});
+
+ // Step 4
+ new_window.location.href = "/client-hints/clear-site-data/resources/clear-site-data.py?target=storage";
+ }), {once: true});
+
+ // Step 1
+ new_window = window.open("/client-hints/clear-site-data/resources/check-client-hints.py");
+ t.add_cleanup(() => new_window.close());
+}, "Clear-Site-Data for storage should not remove all client hints.");
+</script>
+</body>
+</html>
diff --git a/testing/web-platform/tests/client-hints/clear-site-data/clear-site-data-storage.https.html.headers b/testing/web-platform/tests/client-hints/clear-site-data/clear-site-data-storage.https.html.headers
new file mode 100644
index 0000000000..226bb1c3b1
--- /dev/null
+++ b/testing/web-platform/tests/client-hints/clear-site-data/clear-site-data-storage.https.html.headers
@@ -0,0 +1 @@
+Accept-CH: Sec-CH-Device-Memory
diff --git a/testing/web-platform/tests/client-hints/clear-site-data/resources/check-client-hints.py b/testing/web-platform/tests/client-hints/clear-site-data/resources/check-client-hints.py
new file mode 100644
index 0000000000..4fc4c331f2
--- /dev/null
+++ b/testing/web-platform/tests/client-hints/clear-site-data/resources/check-client-hints.py
@@ -0,0 +1,15 @@
+"""
+Step 2/6 (/client-hints/clear-site-data/clear-site-data-{}.https.html)
+Step 3/4 (/client-hints/clear-site-data/set-client-hints-{}-clear-{}.https.html)
+"""
+def main(request, response):
+ if b"sec-ch-device-memory" in request.headers:
+ result = u"HadDeviceMemory"
+ else:
+ result = u"MissingDeviceMemory"
+ content = u'''
+ <script>
+ window.opener.postMessage("%s" , "*");
+ </script>''' % (result)
+ headers = [(b"Content-Type", b"text/html")]
+ return 200, headers, content
diff --git a/testing/web-platform/tests/client-hints/clear-site-data/resources/clear-site-data.py b/testing/web-platform/tests/client-hints/clear-site-data/resources/clear-site-data.py
new file mode 100644
index 0000000000..fd16be9fbc
--- /dev/null
+++ b/testing/web-platform/tests/client-hints/clear-site-data/resources/clear-site-data.py
@@ -0,0 +1,12 @@
+"""
+Step 5 (/client-hints/clear-site-data/clear-site-data-{}.https.html)
+"""
+def main(request, response):
+ content = u'''
+ <script>
+ window.onload = function() {
+ window.location.href = "/client-hints/clear-site-data/resources/check-client-hints.py";
+ };
+ </script>'''
+ headers = [(b"Content-Type", b"text/html"), (b"Clear-Site-Data", b'"%s"' % (request.GET.first(b"target", b"*")))]
+ return 200, headers, content
diff --git a/testing/web-platform/tests/client-hints/clear-site-data/set-client-hints-after-clear-all.https.html b/testing/web-platform/tests/client-hints/clear-site-data/set-client-hints-after-clear-all.https.html
new file mode 100644
index 0000000000..22ee0f9861
--- /dev/null
+++ b/testing/web-platform/tests/client-hints/clear-site-data/set-client-hints-after-clear-all.https.html
@@ -0,0 +1,24 @@
+<!DOCTYPE html>
+<body>
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script>
+// Here's the set-up for this test:
+// Step 1 (first window) Set client hints in the same header that clears them.
+// Step 2 (first window) Open second window.
+// Step 3 (second window) Message first window about client hints sent.
+// Step 4 (first window) Asserts client hints not sent.
+async_test(t => {
+ // Step 4
+ window.addEventListener("message", t.step_func(e => {
+ assert_equals(e.data, "MissingDeviceMemory");
+ t.done();
+ }), {once: true});
+
+ // Step 2
+ new_window = window.open("/client-hints/clear-site-data/resources/check-client-hints.py");
+ t.add_cleanup(new_window.close);
+}, "Setting client hints after Clear-Site-Data for all shouldn't allow the client hints to take.");
+</script>
+</body>
+</html>
diff --git a/testing/web-platform/tests/client-hints/clear-site-data/set-client-hints-after-clear-all.https.html.headers b/testing/web-platform/tests/client-hints/clear-site-data/set-client-hints-after-clear-all.https.html.headers
new file mode 100644
index 0000000000..9768d865bc
--- /dev/null
+++ b/testing/web-platform/tests/client-hints/clear-site-data/set-client-hints-after-clear-all.https.html.headers
@@ -0,0 +1,2 @@
+Clear-Site-Data: "*"
+Accept-CH: Sec-CH-Device-Memory
diff --git a/testing/web-platform/tests/client-hints/clear-site-data/set-client-hints-after-clear-cache.https.html b/testing/web-platform/tests/client-hints/clear-site-data/set-client-hints-after-clear-cache.https.html
new file mode 100644
index 0000000000..3436138b2c
--- /dev/null
+++ b/testing/web-platform/tests/client-hints/clear-site-data/set-client-hints-after-clear-cache.https.html
@@ -0,0 +1,24 @@
+<!DOCTYPE html>
+<body>
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script>
+// Here's the set-up for this test:
+// Step 1 (first window) Set client hints in the same header that clears them.
+// Step 2 (first window) Open second window.
+// Step 3 (second window) Message first window about client hints sent.
+// Step 4 (first window) Asserts client hints not sent.
+async_test(t => {
+ // Step 4
+ window.addEventListener("message", t.step_func(e => {
+ assert_equals(e.data, "MissingDeviceMemory");
+ t.done();
+ }), {once: true});
+
+ // Step 2
+ new_window = window.open("/client-hints/clear-site-data/resources/check-client-hints.py");
+ t.add_cleanup(new_window.close);
+}, "Setting client hints after Clear-Site-Data for cache shouldn't allow the client hints to take.");
+</script>
+</body>
+</html>
diff --git a/testing/web-platform/tests/client-hints/clear-site-data/set-client-hints-after-clear-cache.https.html.headers b/testing/web-platform/tests/client-hints/clear-site-data/set-client-hints-after-clear-cache.https.html.headers
new file mode 100644
index 0000000000..bb61032ede
--- /dev/null
+++ b/testing/web-platform/tests/client-hints/clear-site-data/set-client-hints-after-clear-cache.https.html.headers
@@ -0,0 +1,2 @@
+Clear-Site-Data: "cache"
+Accept-CH: Sec-CH-Device-Memory
diff --git a/testing/web-platform/tests/client-hints/clear-site-data/set-client-hints-after-clear-client-hints.https.html b/testing/web-platform/tests/client-hints/clear-site-data/set-client-hints-after-clear-client-hints.https.html
new file mode 100644
index 0000000000..18aeab2f63
--- /dev/null
+++ b/testing/web-platform/tests/client-hints/clear-site-data/set-client-hints-after-clear-client-hints.https.html
@@ -0,0 +1,24 @@
+<!DOCTYPE html>
+<body>
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script>
+// Here's the set-up for this test:
+// Step 1 (first window) Set client hints in the same header that clears them.
+// Step 2 (first window) Open second window.
+// Step 3 (second window) Message first window about client hints sent.
+// Step 4 (first window) Asserts client hints not sent.
+async_test(t => {
+ // Step 4
+ window.addEventListener("message", t.step_func(e => {
+ assert_equals(e.data, "MissingDeviceMemory");
+ t.done();
+ }), {once: true});
+
+ // Step 2
+ new_window = window.open("/client-hints/clear-site-data/resources/check-client-hints.py");
+ t.add_cleanup(new_window.close);
+}, "Setting client hints after Clear-Site-Data for client hints shouldn't allow the client hints to take.");
+</script>
+</body>
+</html>
diff --git a/testing/web-platform/tests/client-hints/clear-site-data/set-client-hints-after-clear-client-hints.https.html.headers b/testing/web-platform/tests/client-hints/clear-site-data/set-client-hints-after-clear-client-hints.https.html.headers
new file mode 100644
index 0000000000..e815201076
--- /dev/null
+++ b/testing/web-platform/tests/client-hints/clear-site-data/set-client-hints-after-clear-client-hints.https.html.headers
@@ -0,0 +1,2 @@
+Clear-Site-Data: "clientHints"
+Accept-CH: Sec-CH-Device-Memory
diff --git a/testing/web-platform/tests/client-hints/clear-site-data/set-client-hints-after-clear-cookies.https.html b/testing/web-platform/tests/client-hints/clear-site-data/set-client-hints-after-clear-cookies.https.html
new file mode 100644
index 0000000000..db780d3abd
--- /dev/null
+++ b/testing/web-platform/tests/client-hints/clear-site-data/set-client-hints-after-clear-cookies.https.html
@@ -0,0 +1,24 @@
+<!DOCTYPE html>
+<body>
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script>
+// Here's the set-up for this test:
+// Step 1 (first window) Set client hints in the same header that clears them.
+// Step 2 (first window) Open second window.
+// Step 3 (second window) Message first window about client hints sent.
+// Step 4 (first window) Asserts client hints not sent.
+async_test(t => {
+ // Step 4
+ window.addEventListener("message", t.step_func(e => {
+ assert_equals(e.data, "MissingDeviceMemory");
+ t.done();
+ }), {once: true});
+
+ // Step 2
+ new_window = window.open("/client-hints/clear-site-data/resources/check-client-hints.py");
+ t.add_cleanup(new_window.close);
+}, "Setting client hints after Clear-Site-Data for cookies shouldn't allow the client hints to take.");
+</script>
+</body>
+</html>
diff --git a/testing/web-platform/tests/client-hints/clear-site-data/set-client-hints-after-clear-cookies.https.html.headers b/testing/web-platform/tests/client-hints/clear-site-data/set-client-hints-after-clear-cookies.https.html.headers
new file mode 100644
index 0000000000..d0c1afae77
--- /dev/null
+++ b/testing/web-platform/tests/client-hints/clear-site-data/set-client-hints-after-clear-cookies.https.html.headers
@@ -0,0 +1,2 @@
+Clear-Site-Data: "cookies"
+Accept-CH: Sec-CH-Device-Memory
diff --git a/testing/web-platform/tests/client-hints/clear-site-data/set-client-hints-after-clear-storage.https.html b/testing/web-platform/tests/client-hints/clear-site-data/set-client-hints-after-clear-storage.https.html
new file mode 100644
index 0000000000..30d541b6ed
--- /dev/null
+++ b/testing/web-platform/tests/client-hints/clear-site-data/set-client-hints-after-clear-storage.https.html
@@ -0,0 +1,24 @@
+<!DOCTYPE html>
+<body>
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script>
+// Here's the set-up for this test:
+// Step 1 (first window) Set client hints in the same header that clears them.
+// Step 2 (first window) Open second window.
+// Step 3 (second window) Message first window about client hints sent.
+// Step 4 (first window) Asserts client hints sent.
+async_test(t => {
+ // Step 4
+ window.addEventListener("message", t.step_func(e => {
+ assert_equals(e.data, "HadDeviceMemory");
+ t.done();
+ }), {once: true});
+
+ // Step 2
+ new_window = window.open("/client-hints/clear-site-data/resources/check-client-hints.py");
+ t.add_cleanup(new_window.close);
+}, "Setting client hints after Clear-Site-Data for storage should allow the client hints to take.");
+</script>
+</body>
+</html>
diff --git a/testing/web-platform/tests/client-hints/clear-site-data/set-client-hints-after-clear-storage.https.html.headers b/testing/web-platform/tests/client-hints/clear-site-data/set-client-hints-after-clear-storage.https.html.headers
new file mode 100644
index 0000000000..d898684cac
--- /dev/null
+++ b/testing/web-platform/tests/client-hints/clear-site-data/set-client-hints-after-clear-storage.https.html.headers
@@ -0,0 +1,2 @@
+Clear-Site-Data: "storage"
+Accept-CH: Sec-CH-Device-Memory
diff --git a/testing/web-platform/tests/client-hints/clear-site-data/set-critical-client-hints-after-clear-all.https.html b/testing/web-platform/tests/client-hints/clear-site-data/set-critical-client-hints-after-clear-all.https.html
new file mode 100644
index 0000000000..062e72b544
--- /dev/null
+++ b/testing/web-platform/tests/client-hints/clear-site-data/set-critical-client-hints-after-clear-all.https.html
@@ -0,0 +1,24 @@
+<!DOCTYPE html>
+<body>
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script>
+// Here's the set-up for this test:
+// Step 1 (first window) Set client hints in the same header that clears them.
+// Step 2 (first window) Open second window.
+// Step 3 (second window) Message first window about client hints sent.
+// Step 4 (first window) Asserts client hints not sent.
+async_test(t => {
+ // Step 4
+ window.addEventListener("message", t.step_func(e => {
+ assert_equals(e.data, "MissingDeviceMemory");
+ t.done();
+ }), {once: true});
+
+ // Step 2
+ new_window = window.open("/client-hints/clear-site-data/resources/check-client-hints.py");
+ t.add_cleanup(new_window.close);
+}, "Setting critical client hints after Clear-Site-Data for all shouldn't allow the client hints to take.");
+</script>
+</body>
+</html>
diff --git a/testing/web-platform/tests/client-hints/clear-site-data/set-critical-client-hints-after-clear-all.https.html.headers b/testing/web-platform/tests/client-hints/clear-site-data/set-critical-client-hints-after-clear-all.https.html.headers
new file mode 100644
index 0000000000..ebd7a88cc6
--- /dev/null
+++ b/testing/web-platform/tests/client-hints/clear-site-data/set-critical-client-hints-after-clear-all.https.html.headers
@@ -0,0 +1,3 @@
+Clear-Site-Data: "*"
+Accept-CH: Sec-CH-Device-Memory
+Critical-CH: Sec-CH-Device-Memory
diff --git a/testing/web-platform/tests/client-hints/clear-site-data/set-critical-client-hints-after-clear-cache.https.html b/testing/web-platform/tests/client-hints/clear-site-data/set-critical-client-hints-after-clear-cache.https.html
new file mode 100644
index 0000000000..ab97fa182b
--- /dev/null
+++ b/testing/web-platform/tests/client-hints/clear-site-data/set-critical-client-hints-after-clear-cache.https.html
@@ -0,0 +1,24 @@
+<!DOCTYPE html>
+<body>
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script>
+// Here's the set-up for this test:
+// Step 1 (first window) Set client hints in the same header that clears them.
+// Step 2 (first window) Open second window.
+// Step 3 (second window) Message first window about client hints sent.
+// Step 4 (first window) Asserts client hints not sent.
+async_test(t => {
+ // Step 4
+ window.addEventListener("message", t.step_func(e => {
+ assert_equals(e.data, "MissingDeviceMemory");
+ t.done();
+ }), {once: true});
+
+ // Step 2
+ new_window = window.open("/client-hints/clear-site-data/resources/check-client-hints.py");
+ t.add_cleanup(new_window.close);
+}, "Setting critical client hints after Clear-Site-Data for cache shouldn't allow the client hints to take.");
+</script>
+</body>
+</html>
diff --git a/testing/web-platform/tests/client-hints/clear-site-data/set-critical-client-hints-after-clear-cache.https.html.headers b/testing/web-platform/tests/client-hints/clear-site-data/set-critical-client-hints-after-clear-cache.https.html.headers
new file mode 100644
index 0000000000..03d39b6fd7
--- /dev/null
+++ b/testing/web-platform/tests/client-hints/clear-site-data/set-critical-client-hints-after-clear-cache.https.html.headers
@@ -0,0 +1,3 @@
+Clear-Site-Data: "cache"
+Accept-CH: Sec-CH-Device-Memory
+Critical-CH: Sec-CH-Device-Memory
diff --git a/testing/web-platform/tests/client-hints/clear-site-data/set-critical-client-hints-after-clear-client-hints.https.html b/testing/web-platform/tests/client-hints/clear-site-data/set-critical-client-hints-after-clear-client-hints.https.html
new file mode 100644
index 0000000000..cdddb9ff35
--- /dev/null
+++ b/testing/web-platform/tests/client-hints/clear-site-data/set-critical-client-hints-after-clear-client-hints.https.html
@@ -0,0 +1,24 @@
+<!DOCTYPE html>
+<body>
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script>
+// Here's the set-up for this test:
+// Step 1 (first window) Set client hints in the same header that clears them.
+// Step 2 (first window) Open second window.
+// Step 3 (second window) Message first window about client hints sent.
+// Step 4 (first window) Asserts client hints not sent.
+async_test(t => {
+ // Step 4
+ window.addEventListener("message", t.step_func(e => {
+ assert_equals(e.data, "MissingDeviceMemory");
+ t.done();
+ }), {once: true});
+
+ // Step 2
+ new_window = window.open("/client-hints/clear-site-data/resources/check-client-hints.py");
+ t.add_cleanup(new_window.close);
+}, "Setting critical client hints after Clear-Site-Data for client hints shouldn't allow the client hints to take.");
+</script>
+</body>
+</html>
diff --git a/testing/web-platform/tests/client-hints/clear-site-data/set-critical-client-hints-after-clear-client-hints.https.html.headers b/testing/web-platform/tests/client-hints/clear-site-data/set-critical-client-hints-after-clear-client-hints.https.html.headers
new file mode 100644
index 0000000000..f55913cb5b
--- /dev/null
+++ b/testing/web-platform/tests/client-hints/clear-site-data/set-critical-client-hints-after-clear-client-hints.https.html.headers
@@ -0,0 +1,3 @@
+Clear-Site-Data: "clientHints"
+Accept-CH: Sec-CH-Device-Memory
+Critical-CH: Sec-CH-Device-Memory
diff --git a/testing/web-platform/tests/client-hints/clear-site-data/set-critical-client-hints-after-clear-cookies.https.html b/testing/web-platform/tests/client-hints/clear-site-data/set-critical-client-hints-after-clear-cookies.https.html
new file mode 100644
index 0000000000..0060f3aaa0
--- /dev/null
+++ b/testing/web-platform/tests/client-hints/clear-site-data/set-critical-client-hints-after-clear-cookies.https.html
@@ -0,0 +1,24 @@
+<!DOCTYPE html>
+<body>
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script>
+// Here's the set-up for this test:
+// Step 1 (first window) Set client hints in the same header that clears them.
+// Step 2 (first window) Open second window.
+// Step 3 (second window) Message first window about client hints sent.
+// Step 4 (first window) Asserts client hints not sent.
+async_test(t => {
+ // Step 4
+ window.addEventListener("message", t.step_func(e => {
+ assert_equals(e.data, "MissingDeviceMemory");
+ t.done();
+ }), {once: true});
+
+ // Step 2
+ new_window = window.open("/client-hints/clear-site-data/resources/check-client-hints.py");
+ t.add_cleanup(new_window.close);
+}, "Setting critical client hints after Clear-Site-Data for cookies shouldn't allow the client hints to take.");
+</script>
+</body>
+</html>
diff --git a/testing/web-platform/tests/client-hints/clear-site-data/set-critical-client-hints-after-clear-cookies.https.html.headers b/testing/web-platform/tests/client-hints/clear-site-data/set-critical-client-hints-after-clear-cookies.https.html.headers
new file mode 100644
index 0000000000..69c7e720ac
--- /dev/null
+++ b/testing/web-platform/tests/client-hints/clear-site-data/set-critical-client-hints-after-clear-cookies.https.html.headers
@@ -0,0 +1,3 @@
+Clear-Site-Data: "cookies"
+Accept-CH: Sec-CH-Device-Memory
+Critical-CH: Sec-CH-Device-Memory
diff --git a/testing/web-platform/tests/client-hints/clear-site-data/set-critical-client-hints-after-clear-storage.https.html b/testing/web-platform/tests/client-hints/clear-site-data/set-critical-client-hints-after-clear-storage.https.html
new file mode 100644
index 0000000000..9237e28ced
--- /dev/null
+++ b/testing/web-platform/tests/client-hints/clear-site-data/set-critical-client-hints-after-clear-storage.https.html
@@ -0,0 +1,24 @@
+<!DOCTYPE html>
+<body>
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script>
+// Here's the set-up for this test:
+// Step 1 (first window) Set client hints in the same header that clears them.
+// Step 2 (first window) Open second window.
+// Step 3 (second window) Message first window about client hints sent.
+// Step 4 (first window) Asserts client hints sent.
+async_test(t => {
+ // Step 4
+ window.addEventListener("message", t.step_func(e => {
+ assert_equals(e.data, "HadDeviceMemory");
+ t.done();
+ }), {once: true});
+
+ // Step 2
+ new_window = window.open("/client-hints/clear-site-data/resources/check-client-hints.py");
+ t.add_cleanup(new_window.close);
+}, "Setting critical client hints after Clear-Site-Data for storage should allow the client hints to take.");
+</script>
+</body>
+</html>
diff --git a/testing/web-platform/tests/client-hints/clear-site-data/set-critical-client-hints-after-clear-storage.https.html.headers b/testing/web-platform/tests/client-hints/clear-site-data/set-critical-client-hints-after-clear-storage.https.html.headers
new file mode 100644
index 0000000000..0f18541cf7
--- /dev/null
+++ b/testing/web-platform/tests/client-hints/clear-site-data/set-critical-client-hints-after-clear-storage.https.html.headers
@@ -0,0 +1,3 @@
+Clear-Site-Data: "storage"
+Accept-CH: Sec-CH-Device-Memory
+Critical-CH: Sec-CH-Device-Memory