tor-browser

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

offscreencanvas.transferrable.sw.https.window.js (1344B)


      1 // META: script=/resources/testdriver.js
      2 // META: script=/resources/testdriver-vendor.js
      3 // META: script=/service-workers/service-worker/resources/test-helpers.sub.js
      4 
      5 function unregisterAllServiceWorker() {
      6  return navigator.serviceWorker.getRegistrations().then(registrations => {
      7    return Promise.all(registrations.map(r => r.unregister()));
      8  });
      9 }
     10 
     11 async function prepareActiveServiceWorker(script) {
     12  await unregisterAllServiceWorker();
     13  const reg = await navigator.serviceWorker.register(script);
     14  add_completion_callback(() => reg.unregister());
     15  await navigator.serviceWorker.ready;
     16  return reg;
     17 }
     18 
     19 let registration;
     20 
     21 promise_setup(async () => {
     22  registration = await prepareActiveServiceWorker("offscreencanvas.transferrable.sw.js");
     23 });
     24 
     25 promise_test(async () => {
     26  const canvas = new OffscreenCanvas(100, 100);
     27  registration.active.postMessage({ canvas }, { transfer: [canvas] });
     28  const data = await new Promise(resolve => navigator.serviceWorker.addEventListener("message", ev => {
     29    resolve(ev.data);
     30  }, { once: true }));
     31  assert_equals(data.constructorName, "OffscreenCanvas", "Should get OffscreenCanvas from the window")
     32  assert_true(data.canvas instanceof OffscreenCanvas, "Should get OffscreenCanvas from the service worker");
     33 }, "Sending and receiving OffscreenCanvas between window and service worker");