element-video.sub.html (1504B)
1 <!DOCTYPE html> 2 <!-- 3 [%provenance%] 4 --> 5 <html lang="en"> 6 <meta charset="utf-8"> 7 <title>HTTP headers on request for HTML "video" element source</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, attributes) { 16 const video = document.createElement('video'); 17 18 for (const [ name, value ] of Object.entries(attributes)) { 19 video.setAttribute(name, value); 20 } 21 22 return new Promise((resolve) => { 23 video.setAttribute('src', url); 24 video.onload = video.onerror = resolve; 25 }); 26 } 27 28 {%- for subtest in subtests %} 29 30 promise_test(() => { 31 const key = '{{uuid()}}'; 32 33 return induceRequest( 34 makeRequestURL(key, [% subtest.origins %]), 35 [%subtest.elementAttrs | default({}) | tojson%] 36 ) 37 .then(() => retrieve(key)) 38 .then((headers) => { 39 {%- if subtest.expected == none %} 40 assert_not_own_property(headers, '[%subtest.headerName%]'); 41 {%- else %} 42 assert_own_property(headers, '[%subtest.headerName%]'); 43 assert_array_equals(headers['[%subtest.headerName%]'], ['[%subtest.expected%]']); 44 {%- endif %} 45 }); 46 }, '[%subtest.headerName%] - [%subtest.description | pad("end", ", ")%][%subtest.elementAttrs | collection("attributes")%]'); 47 48 {%- endfor %} 49 </script> 50 </body> 51 </html>