tor-browser

The Tor Browser
git clone https://git.dasho.dev/tor-browser.git
Log | Files | Refs | README | LICENSE

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>