|
3 | 3 | <script src=/resources/testharness.js></script>
|
4 | 4 | <script src=/resources/testharnessreport.js></script>
|
5 | 5 | <script>
|
6 |
| - var minor = ""; |
| 6 | + var sec_ch_ua_header = ""; |
7 | 7 | promise_test(t => {
|
8 | 8 | return new Promise((resolve, reject) => {
|
9 | 9 | var w;
|
10 | 10 | window.onmessage = e => {
|
11 | 11 | try {
|
12 |
| - assert_not_equals(e.data.header, "", "The `Sec-CH-UA` header is delivered."); |
13 |
| - minor = e.data.header; |
| 12 | + assert_not_equals(e.data.header, "", "`Sec-CH-UA` is sent."); |
| 13 | + sec_ch_ua_header = e.data.header; |
14 | 14 | } catch (ex) {
|
15 | 15 | reject(ex);
|
16 | 16 | }
|
|
19 | 19 | };
|
20 | 20 | w = window.open("./resources/sec-ch-ua.py");
|
21 | 21 | });
|
22 |
| - }, "Open HTTPS window prior to opt-in: `Sec-CH-UA` header with minor version.") |
| 22 | + }, "Open HTTPS window: `Sec-CH-UA` header returned by default."); |
23 | 23 |
|
24 | 24 | promise_test(t => {
|
25 | 25 | return new Promise((resolve, reject) => {
|
26 | 26 | var w;
|
27 | 27 | window.onmessage = e => {
|
28 | 28 | try {
|
29 |
| - assert_not_equals(e.data.header, "", "The `Sec-CH-UA` header is delivered."); |
30 |
| - assert_equals(e.data.header, minor, "The `Sec-CH-UA` header did not change after the opt-in."); |
| 29 | + assert_not_equals(e.data.header, "", |
| 30 | + "The `Sec-CH-UA` header is delivered."); |
| 31 | + assert_equals(e.data.header, |
| 32 | + sec_ch_ua_header, |
| 33 | + "The `Sec-CH-UA` header did not change between requests."); |
31 | 34 | } catch (ex) {
|
32 | 35 | reject(ex);
|
33 | 36 | }
|
|
36 | 39 | };
|
37 | 40 | w = window.open("./resources/sec-ch-ua.py");
|
38 | 41 | });
|
39 |
| - }, "Open HTTPS window post-opt-in: `Sec-CH-UA` header with minor version.") |
| 42 | + }, "Open HTTPS window: `Sec-CH-UA` header is consistent across versions."); |
| 43 | + |
| 44 | + promise_test(t => { |
| 45 | + return new Promise((resolve, reject) => { |
| 46 | + var w; |
| 47 | + window.onmessage = e => { |
| 48 | + try { |
| 49 | + let header = e.data.header; |
| 50 | + assert_true(header.split(", ").every((brand) => { |
| 51 | + let brandEnd = brand.indexOf(";v="); |
| 52 | + assert_true(brandEnd !== -1, |
| 53 | + "A well-formed Sec-CH-UA header must have version (v=) params"); |
| 54 | + /* 32 + 2, becuase of the extra quotes padding the brand, |
| 55 | + e.g. '"lol";v=22"' */ |
| 56 | + return brandEnd < 34; |
| 57 | + })); |
| 58 | + } catch (ex) { |
| 59 | + reject(ex); |
| 60 | + } |
| 61 | + w.close(); |
| 62 | + resolve(); |
| 63 | + }; |
| 64 | + w = window.open("./resources/sec-ch-ua.py"); |
| 65 | + }); |
| 66 | + }, "Open HTTPS window: No brand in `Sec-CH-UA` header is > than 32 chars."); |
40 | 67 | </script>
|
41 | 68 | </head>
|
0 commit comments