header-refresh.optional.sub.html (1637B)
1 <!DOCTYPE html> 2 <!-- 3 [%provenance%] 4 --> 5 <html lang="en"> 6 <meta charset="utf-8"> 7 {%- if subtests|length > 10 %} 8 <meta name="timeout" content="long"> 9 {%- endif %} 10 <title>HTTP headers on request for HTTP "Refresh" header</title> 11 <script src="/resources/testharness.js"></script> 12 <script src="/resources/testharnessreport.js"></script> 13 <script src="/fetch/metadata/resources/helper.sub.js"></script> 14 <body> 15 <script> 16 'use strict'; 17 18 function induceRequest(url, test) { 19 const win = window.open(); 20 test.add_cleanup(() => win.close()); 21 22 win.location = `/common/refresh.py?location=${encodeURIComponent(url)}` 23 24 return new Promise((resolve) => { 25 addEventListener('message', (event) => { 26 if (event.source === win) { 27 resolve(); 28 } 29 }); 30 }); 31 } 32 33 const responseParams = { 34 mime: 'text/html', 35 body: `<script>opener.postMessage(0, '*')</${''}script>` 36 }; 37 {%- for subtest in subtests %} 38 39 promise_test((t) => { 40 const key = '{{uuid()}}'; 41 42 return induceRequest( 43 makeRequestURL(key, [% subtest.origins %], responseParams), t 44 ) 45 .then(() => retrieve(key)) 46 .then((headers) => { 47 {%- if subtest.expected == none %} 48 assert_not_own_property(headers, '[%subtest.headerName%]'); 49 {%- else %} 50 assert_own_property(headers, '[%subtest.headerName%]'); 51 assert_array_equals(headers['[%subtest.headerName%]'], ['[%subtest.expected%]']); 52 {%- endif %} 53 }); 54 }, '[%subtest.headerName%][%subtest.description | pad("start", " - ")%]'); 55 56 {%- endfor %} 57 </script> 58 </body> 59 </html>