diff options
Diffstat (limited to 'testing/web-platform/tests/client-hints/accept-ch-change.https.html')
-rw-r--r-- | testing/web-platform/tests/client-hints/accept-ch-change.https.html | 67 |
1 files changed, 67 insertions, 0 deletions
diff --git a/testing/web-platform/tests/client-hints/accept-ch-change.https.html b/testing/web-platform/tests/client-hints/accept-ch-change.https.html new file mode 100644 index 0000000000..b0a4da61dd --- /dev/null +++ b/testing/web-platform/tests/client-hints/accept-ch-change.https.html @@ -0,0 +1,67 @@ +<!DOCTYPE html> +<html> +<title>Accept-CH test</title> +<body> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<script src="resources/open-and-add-load-event.js"></script> + +<!-- +Apart from this webpage, the test opens two more html web page. One test is run +in this web page, and two in the other web pages. +--> + +<script> + +// This test fetches resources/accept_ch.html. The response headers to +// that webpage contains only the Accept-CH header. These preferences should be +// stored so that the next request to the same origin is sent with the +// requested client hint headers. + +// Next, to verify that the origin preferences were persisted by the user +// agent, this test fetches resources/expect_client_hints_headers.html in a new +// window. Fetching of resources/expect_client_hints_headers.html verifies that +// the user agent does send the client hints in the request headers. + +// After this, the same is done but with a differet Accept-CH header, to test +// that the preferences change after receiving a different header. + +promise_test(async () => { + r = await fetch("resources/echo-client-hints-received.py"); + + assert_equals(r.status, 200); + // Verify that the browser did not include client hints in the request + // headers when fetching echo_client_hints_received.py. + assert_false(r.headers.has("device-memory-received"), "device-memory-received"); + assert_false(r.headers.has("device-memory-deprecated-received"), "device-memory-deprecated-received"); + assert_false(r.headers.has("viewport-width-received"), "viewport-width-received"); + assert_false(r.headers.has("viewport-width-deprecated-received"), "viewport-width-deprecated-received"); + + // Fetching this webpage should cause user-agent to persist client hint + // preferences for the origin. + await open_and_add_load_event("resources/accept-ch.html"); + + // Open a new window. Verify that the user agent does attach the client hints. + await open_and_expect_headers("resources/expect-client-hints-headers.html"); + + // Use new window to overwrite client hint preferences, then verify new + // settings have been saved + await open_and_add_load_event("resources/accept-ch-different.html"); + + // Use new window to overwrite client hint preferences, then verify new + // settings have been saved + await open_and_expect_headers("resources/expect-different-client-hints-headers.html"); + + // Use new window to overwrite client hint preferences, then verify new + // settings have been saved + await open_and_add_load_event("resources/accept-ch-empty.html"); + + // Use new window to overwrite client hint preferences, then verify new + // settings have been saved + await open_and_expect_headers("resources/expect-no-client-hints-headers.html"); + +}, "Accept-CH changes based on header"); + +</script> +</body> +</html> |