tor-browser

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

disposal-with-ccws.js (1200B)


      1 // |jit-test| skip-if: !getBuildConfiguration("explicit-resource-management"); --enable-explicit-resource-management
      2 
      3 load(libdir + "asserts.js");
      4 
      5 {
      6  const g1 = newGlobal({ newCompartment: true });
      7  const d = g1.eval(`
      8    globalThis.disposed = [];
      9    const d = { [Symbol.dispose]: () => globalThis.disposed.push(1) };
     10    d;
     11  `);
     12  const g2 = newGlobal({ newCompartment: true });
     13  const d2 = g2.eval(`
     14    globalThis.disposed = [];
     15    const d2 = { [Symbol.dispose]: () => globalThis.disposed.push(2) };
     16    d2;
     17  `);
     18  {
     19    using disp = d;
     20    using disp2 = d2;
     21  }
     22  assertArrayEq(g1.eval("globalThis.disposed"), [1]);
     23  assertArrayEq(g2.eval("globalThis.disposed"), [2]);
     24 }
     25 
     26 {
     27  const g1 = newGlobal({ newCompartment: true });
     28  const d = g1.eval(`
     29    globalThis.disposed = [];
     30    const d = { [Symbol.dispose]: () => globalThis.disposed.push(1) };
     31    d;
     32  `);
     33  const g2 = newGlobal({ newCompartment: true });
     34  const d2 = g2.eval(`
     35    globalThis.disposed = [];
     36    const d2 = { [Symbol.dispose]: () => globalThis.disposed.push(2) };
     37    d2;
     38  `);
     39  assertThrowsInstanceOf(() => {
     40    {
     41      using disp = d;
     42      using disp2 = d2;
     43      nukeAllCCWs();
     44    }
     45  }, SuppressedError);
     46 }