tor-browser

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

promise-1.js (1582B)


      1 // Mutating Promise.prototype.constructor pops the fuse. A no-op change is fine.
      2 newGlobal().evaluate(`
      3  assertEq(getFuseState().OptimizePromiseLookupFuse.intact, true);
      4  let v = Promise.prototype.constructor;
      5  Promise.prototype.constructor = v;
      6  assertEq(getFuseState().OptimizePromiseLookupFuse.intact, true);
      7  Promise.prototype.constructor = {};
      8  assertEq(getFuseState().OptimizePromiseLookupFuse.intact, false);
      9 `);
     10 
     11 // Same for Promise.prototype.then.
     12 newGlobal().evaluate(`
     13  assertEq(getFuseState().OptimizePromiseLookupFuse.intact, true);
     14  let v = Promise.prototype.then;
     15  Promise.prototype.then = v;
     16  assertEq(getFuseState().OptimizePromiseLookupFuse.intact, true);
     17  Promise.prototype.then = x => x;
     18  assertEq(getFuseState().OptimizePromiseLookupFuse.intact, false);
     19 `);
     20 
     21 // Same for Promise.resolve.
     22 newGlobal().evaluate(`
     23  assertEq(getFuseState().OptimizePromiseLookupFuse.intact, true);
     24  let v = Promise.resolve;
     25  Promise.resolve = v;
     26  assertEq(getFuseState().OptimizePromiseLookupFuse.intact, true);
     27  delete Promise.resolve;
     28  assertEq(getFuseState().OptimizePromiseLookupFuse.intact, false);
     29 `);
     30 
     31 // Same for the Promise[@@species] getter.
     32 newGlobal().evaluate(`
     33  assertEq(getFuseState().OptimizePromiseLookupFuse.intact, true);
     34  Object.defineProperty(Promise, Symbol.species, {});
     35  assertEq(getFuseState().OptimizePromiseLookupFuse.intact, true);
     36  Object.defineProperty(Promise, Symbol.species, {value: null});
     37  assertEq(getFuseState().OptimizePromiseLookupFuse.intact, false);
     38 `);
     39 
     40 assertEq(getUseCounterResults().OptimizePromiseLookupFuse, 4);