| <!DOCTYPE html> |
| <meta charset="utf-8"> |
| <title>import() doesn't have any integrity metadata when initiated by compiled strings inside a module script</title> |
| <link rel="author" title="Domenic Denicola" href="mailto:d@domenic.me"> |
| <meta http-equiv="Content-Security-Policy" content="require-sri-for script"> |
| |
| <script src="/resources/testharness.js" integrity="sha384-4Nybydhnr3tOpv1yrTkDxu3RFpnxWAxlU5kGn7c8ebKvh1iUdfVMjqP6jf0dacrV"></script> |
| <script src="/resources/testharnessreport.js" integrity="sha384-GOnHxuyo+nnsFAe4enY+RAl4/+w5NPMJPCQiDroTjxtR7ndRz7Uan8vNbM2qWKmU"></script> |
| |
| <div id="dummy"></div> |
| |
| <script type="module"> |
| function createTestPromise() { |
| return new Promise((resolve, reject) => { |
| window.continueTest = resolve; |
| window.errorTest = reject; |
| }); |
| } |
| |
| const dummyDiv = document.querySelector("#dummy"); |
| |
| const evaluators = { |
| eval, |
| setTimeout, |
| "the Function constructor"(x) { |
| Function(x)(); |
| }, |
| "reflected inline event handlers"(x) { |
| dummyDiv.setAttribute("onclick", x); |
| dummyDiv.onclick(); |
| }, |
| "inline event handlers triggered via UA code"(x) { |
| dummyDiv.setAttribute("onclick", x); |
| dummyDiv.click(); // different from .**on**click() |
| } |
| }; |
| |
| for (const [label, evaluator] of Object.entries(evaluators)) { |
| promise_test(t => { |
| t.add_cleanup(() => { |
| dummyDiv.removeAttribute("onclick"); |
| delete window.evaluated_imports_a; |
| }); |
| |
| const promise = createTestPromise(); |
| |
| evaluator(`import('../imports-a.js?label=${label}').then(window.continueTest, window.errorTest);`); |
| |
| return promise_rejects(t, new TypeError(), promise); |
| }, label + " should fail to import"); |
| }; |
| </script> |