tor-browser

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

Object-defineProperty-non-primitive-key.js (780B)


      1 var g = newGlobal({newCompartment: true});
      2 var dbg = new Debugger(g);
      3 var gw = dbg.addDebuggee(g);
      4 
      5 g.eval(`
      6  var obj = {
      7    p: 0,
      8    [Symbol.iterator]: 0,
      9  };
     10 `);
     11 
     12 // Return |key| as an object.
     13 function toObject(key) {
     14  return {
     15    [Symbol.toPrimitive]() {
     16      return key;
     17    }
     18  };
     19 }
     20 
     21 let obj = gw.getProperty("obj").return;
     22 
     23 for (let key of obj.getOwnPropertyNames()) {
     24  let keyObject = toObject(key);
     25 
     26  obj.defineProperty(key, {value: 1});
     27  assertEq(g.obj[key], 1);
     28 
     29  obj.defineProperty(keyObject, {value: 1});
     30  assertEq(g.obj[key], 1);
     31 }
     32 
     33 for (let key of obj.getOwnPropertySymbols()) {
     34  let keyObject = toObject(key);
     35 
     36  obj.defineProperty(key, {value: 1});
     37  assertEq(g.obj[key], 1);
     38 
     39  obj.defineProperty(keyObject, {value: 1});
     40  assertEq(g.obj[key], 1);
     41 }