tor-browser

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

workers.html (1859B)


      1 <html>
      2  <head>
      3    <title>Referrer Policy: local scheme workers inherit from creator</title>
      4    <script src="/resources/testharness.js"></script>
      5    <script src="/resources/testharnessreport.js"></script>
      6    <script src="/common/get-host-info.sub.js"></script>
      7    <meta name="referrer" content="no-referrer">
      8  </head>
      9  <script>
     10    let cross_origin = get_host_info().REMOTE_ORIGIN;
     11 
     12    let generateFetchString = postmessage => `
     13      fetch("${cross_origin}/common/security-features/subresource/xhr.py",
     14            {referrer: "${location.href}/custom"})
     15          .then(r => r.json())
     16          .then(j => ${postmessage}({referrer: j.headers.referer}))
     17          .catch(e => ${postmessage}({referrer: "FAILURE"}));`
     18 
     19    async_test(t => {
     20      let blob = new Blob([generateFetchString("postMessage")],
     21                          {type : 'application/javascript'});
     22      let blob_url = URL.createObjectURL(blob);
     23      let worker = new Worker(blob_url);
     24      worker.onmessage = t.step_func_done(msg => {
     25        assert_equals(msg.data.referrer, undefined);
     26      });
     27    }, "Dedicated worker with local scheme inherits referrer policy " +
     28               "from the creating document.");
     29 
     30    async_test(t => {
     31      let script = `
     32        onconnect = e => {
     33          let port = e.ports[0];
     34          port.start();
     35          ${generateFetchString("port.postMessage")}
     36        };`
     37      let blob = new Blob([script], {type : 'application/javascript'});
     38      let blob_url = URL.createObjectURL(blob);
     39      let shared_worker = new SharedWorker(blob_url);
     40      shared_worker.port.start();
     41      shared_worker.port.onmessage = t.step_func_done(msg => {
     42        assert_equals(msg.data.referrer, undefined);
     43      });
     44    }, "Shared worker with local scheme inherits referrer policy " +
     45               "from the creating document.");
     46  </script>
     47 </html>