tor-browser

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

worker-gc.https.window.js (914B)


      1 // META: title=An active notification should prevent worker cycle collection
      2 // META: script=/resources/testdriver.js
      3 // META: script=/resources/testdriver-vendor.js
      4 // META: script=/common/gc.js
      5 // META: script=resources/helpers.js
      6 
      7 promise_setup(async () => {
      8  await trySettingPermission("granted");
      9 });
     10 
     11 promise_test(async t => {
     12  let worker = new Worker(URL.createObjectURL(new Blob([`
     13    const n = new Notification("foo");
     14    onmessage = () => n.close();
     15    n.onclose = () => self.postMessage("closed");
     16    postMessage("ready");
     17  `])));
     18  await new Promise(resolve => {
     19    worker.addEventListener("message", ev => {
     20      if (ev.data === "ready") {
     21        resolve();
     22      }
     23    }, { once: true });
     24  });
     25  const weakref = new WeakRef(worker);
     26  worker = null;
     27 
     28  t.add_cleanup(() => {
     29    weakref.deref()?.postMessage("close");
     30  });
     31 
     32  await garbageCollect();
     33  assert_true(!!weakref.deref());
     34 });