tor-browser

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

shared.html (1391B)


      1 <!doctype html>
      2 <title>structured clone to shared worker</title>
      3 <script src="/resources/testharness.js"></script>
      4 <script src="/resources/testharnessreport.js"></script>
      5 <script src=/common/sab.js></script>
      6 <script src=/html/webappapis/structured-clone/structured-clone-battery-of-tests.js></script>
      7 <script src=/html/webappapis/structured-clone/structured-clone-battery-of-tests-with-transferables.js></script>
      8 <script src=/html/webappapis/structured-clone/structured-clone-battery-of-tests-harness.js></script>
      9 <div id=log></div>
     10 <script>
     11  runStructuredCloneBatteryOfTests({
     12    setup() {
     13      const blob = new Blob([`
     14        onconnect = ev => {
     15          const port = ev.ports[0];
     16          port.onmessage = ev => port.postMessage(ev.data, ev.data.transfer);
     17        };
     18      `], {type: 'text/javascript'});
     19      this.blobURL = URL.createObjectURL(blob);
     20      this.worker = new SharedWorker(this.blobURL);
     21      this.port = this.worker.port;
     22    },
     23    structuredClone(data, transfer) {
     24      return new Promise(resolve => {
     25        this.port.addEventListener('message', function f(ev) {
     26          this.port.removeEventListener('message', f);
     27          resolve(ev.data.data);
     28        }.bind(this));
     29        this.port.start();
     30        this.port.postMessage({data, transfer}, transfer);
     31      });
     32    },
     33    teardown() {
     34      URL.revokeObjectURL(this.blobURL);
     35    }
     36  });
     37 </script>