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