preload-dynamic-csp.html (1153B)
1 <!DOCTYPE html> 2 <title>Makes sure that preload requests respect CSP directives that are added after the preload</title> 3 <script src="/resources/testharness.js"></script> 4 <script src="/resources/testharnessreport.js"></script> 5 <script src="/preload/resources/preload_helper.js"></script> 6 <link id="preload" rel=preload href="resources/square.png" as=image> 7 <body> 8 <script> 9 setup({single_test: true}); 10 11 const preload = document.querySelector("#preload"); 12 preload.addEventListener("load", async () => { 13 const meta = document.createElement("meta"); 14 meta.httpEquiv = "Content-Security-Policy"; 15 meta.content = "img-src 'none'"; 16 document.head.appendChild(meta); 17 const img = document.createElement("img"); 18 img.src = preload.href; 19 document.body.appendChild(img); 20 const load = new Promise(resolve => img.addEventListener("load", () => resolve('load'))); 21 const error = new Promise(resolve => img.addEventListener("error", () => resolve('error'))); 22 const result = await Promise.any([load, error]); 23 assert_equals(result, "error"); 24 done(); 25 }); 26 </script>