tor-browser

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

garbage-collected.tentative.any.js (865B)


      1 // META: title=Close event test when an entangled port is GCed.
      2 // META: script=/common/gc.js
      3 
      4 /**
      5 * Create a new MessageChannel and return port1 and a weak reference to port2.
      6 * It is expected that port2 will be garbage collected and a close event
      7 * will be fired on port1.
      8 *
      9 * @returns {Array.<[MessagePort, WeakRef<MessagePort>]>}
     10 */
     11 function createMessageChannelAndWeakReferToPort() {
     12  const {port1, port2} = new MessageChannel();
     13  port1.start();
     14  return [port1, new WeakRef(port2)];
     15 }
     16 
     17 promise_test(async t => {
     18  const [port1, weakport2] = createMessageChannelAndWeakReferToPort();
     19  const closeEventPromise = new Promise(resolve => port1.onclose = resolve);
     20  garbageCollect();
     21  await closeEventPromise;
     22  assert_equals(weakport2.deref(), undefined, 'port2 should be GCed');
     23 }, 'Entangled port is garbage collected, and the close event is fired.')