tor-browser

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

nukedCCW.js (1017B)


      1 function testNuke() {
      2    var wrapper = evaluate("({a: 15, b: {c: 42}})",
      3                           {global: newGlobal({newCompartment: true, sameZoneAs: this})});
      4 
      5    var i, error;
      6    try {
      7        for (i = 0; i < 150; i++) {
      8            assertEq(wrapper.b.c, 42);
      9            assertEq(wrapper.a, 15);
     10 
     11            if (i == 142) {
     12                // Next access to wrapper.b should throw.
     13                nukeCCW(wrapper);
     14            }
     15        }
     16    } catch (e) {
     17        error = e;
     18    }
     19 
     20    assertEq(error.message.includes("dead object"), true);
     21    assertEq(i, 143);
     22 }
     23 
     24 function testSweep() {
     25    var wrapper = evaluate("({a: 15, b: {c: 42}})",
     26                           {global: newGlobal({newCompartment: true})});
     27    var error;
     28    nukeCCW(wrapper);
     29    gczeal(8, 1); // Sweep zones separately
     30    try {
     31      // Next access to wrapper.b should throw.
     32      wrapper.x = 4;
     33    } catch (e) {
     34        error = e;
     35    }
     36    assertEq(error.message.includes("dead object"), true);
     37 }
     38 
     39 testNuke();
     40 testSweep();