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