| <!DOCTYPE html> | |
| <meta charset="utf-8"> | |
| <title>Tests Stale While Revalidate is not executed for fetch API</title> | |
| <script src="/resources/testharness.js"></script> | |
| <script src="/resources/testharnessreport.js"></script> | |
| <script src="/common/utils.js"></script> | |
| <script> | |
| const verify_headers = (header_list, response, verification_func) => { | |
| header_list.forEach(header => { | |
| const value = response.headers.get(header+"-received"); | |
| if(value) { | |
| verification_func(value); | |
| } | |
| }); | |
| }; | |
| promise_test(async (test) => { | |
| const request_token = token(); | |
| const string_list_client_hint_headers = [ | |
| "sec-ch-ua", | |
| ]; | |
| const string_client_hint_headers = [ | |
| "sec-ch-ua-arch", | |
| "sec-ch-ua-platform", | |
| "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-full-version-list", | |
| "sec-ch-ua-wow64", | |
| "sec-ch-prefers-reduced-transparency", | |
| ]; | |
| const boolean_client_hint_headers = [ | |
| "sec-ch-mobile", | |
| ]; | |
| const response = await fetch("resources/echo-ua-client-hints-received.py"); | |
| verify_headers(string_client_hint_headers, response, value => { | |
| if(value) { | |
| // Check that the hints have quotes | |
| // TODO(yoav): this doesn't account for parameters. Need an SH parser, that verifies no parameters are present. | |
| assert_equals(value.slice(0,1), "\""); | |
| assert_equals(value.slice(-1), "\""); | |
| } | |
| }); | |
| verify_headers(string_list_client_hint_headers, response, value => { | |
| // Check that the hints have quotes | |
| // TODO(yoav): this doesn't account for list parsing or parameters. Need an SH parser, that verifies this is a list of strings with a "v" parameter present in at least one value. | |
| assert_false((typeof value) == "undefined"); | |
| assert_equals(value.slice(0,1), "\""); | |
| assert_equals(value.slice(-1), "\""); | |
| }); | |
| verify_headers(boolean_client_hint_headers, response, value => { | |
| if(value) { | |
| // Check that the value is a valid boolean | |
| assert_false((typeof value) == "undefined"); | |
| assert_equals(value.slice(0,1), "?"); | |
| const num = value.slice(-1); | |
| assert_true(num == "0" || num == "1"); | |
| } | |
| }); | |
| }, 'User agent client hint header values are surrounded by quotes'); | |
| </script> |