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>