| <!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+"-recieved"); |
| 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", |
| ]; |
| 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> |