tor-browser

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

property-mutation-2.js (927B)


      1 function test() {
      2  assertEq(getFuseState().ArrayPrototypeIteratorFuse.intact, true);
      3 
      4  // Redefine Array.prototype properties but don't change their values.
      5  // This shouldn't pop the fuse.
      6  let proto = Array.prototype;
      7  for (let i = 0; i < 3; i++) {
      8    for (let p of Reflect.ownKeys(proto)) {
      9      let desc = Object.getOwnPropertyDescriptor(proto, p);
     10      if (desc.configurable) {
     11        // Change desc.enumerable to ensure this isn't a no-op.
     12        desc.enumerable = !desc.enumerable;
     13        Object.defineProperty(proto, p, desc);  
     14      }
     15    }
     16  }
     17  assertEq(getFuseState().ArrayPrototypeIteratorFuse.intact, true);
     18 
     19  // Now actually change the value. This pops the fuse.
     20  let desc = Object.getOwnPropertyDescriptor(proto, Symbol.iterator);
     21  desc.value = function() {};
     22  Object.defineProperty(proto, Symbol.iterator, desc);  
     23  assertEq(getFuseState().ArrayPrototypeIteratorFuse.intact, false);
     24 }
     25 test();