tor-browser

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

same-origin-check.sub.html (1917B)


      1 <!DOCTYPE html>
      2 <script src="/resources/testharness.js"></script>
      3 <script src="/resources/testharnessreport.js"></script>
      4 <script>
      5 const sameOrigin = 'http://{{host}}:{{ports[http][0]}}';
      6 const crossOrigin = 'http://{{host}}:{{ports[http][1]}}';
      7 const workerPath = '/workers/support/post-message-on-load-worker.js?pipe=header(Access-Control-Allow-Origin,*)';
      8 const redirectPath = '/service-workers/service-worker/resources/redirect.py?ACAOrigin=*&Redirect=';
      9 const tests = [
     10  {
     11    name: "cross-origin",
     12    url: crossOrigin + workerPath
     13  },
     14  {
     15    name: "cross-origin-to-same-origin-redirect",
     16    url: crossOrigin + redirectPath +
     17         encodeURIComponent(sameOrigin + workerPath)
     18  },
     19  {
     20    name: "same-origin-to-cross-origin-redirect",
     21    url: sameOrigin + redirectPath + encodeURIComponent(crossOrigin + workerPath)
     22  },
     23  {
     24    name: "same-origin-to-cross-origin-to-same-origin-redirect",
     25    url: sameOrigin + redirectPath +
     26         encodeURIComponent(
     27             crossOrigin + redirectPath +
     28             encodeURIComponent(sameOrigin + workerPath))
     29  },
     30 ];
     31 
     32 for (const test of tests) {
     33  for (const type of ['classic', 'module']) {
     34    promise_test(t => new Promise((resolve, reject) => {
     35        try {
     36          const worker = new Worker(test.url, {type});
     37          worker.onmessage = _ => reject('Worker loaded unexpectedly');
     38          worker.onerror = resolve;
     39        } catch (e) {
     40          resolve();
     41        }
     42      }), 'Worker: ' + test.name + ' (' + type + ')');
     43 
     44    promise_test(t => new Promise((resolve, reject) => {
     45        try {
     46          const worker = new SharedWorker(
     47              test.url + '&label=' + type + test.name, {type});
     48          worker.port.onmessage = _ => reject('Worker loaded unexpectedly');
     49          worker.onerror = resolve;
     50        } catch (e) {
     51          resolve();
     52        }
     53      }), 'SharedWorker: ' + test.name + ' (' + type + ')');
     54  }
     55 }
     56 </script>