tor-browser

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

Environment-names-02.js (991B)


      1 // env.names() on object environments ignores property names that are not identifiers.
      2 
      3 var g = newGlobal({newCompartment: true});
      4 var dbg = Debugger(g);
      5 var withNames, globalNames;
      6 g.h = function () {
      7    var env = dbg.getNewestFrame().environment;
      8    withNames = env.names();
      9    while (env.parent !== null)
     10        env = env.parent;
     11    globalNames = env.names();
     12 };
     13 
     14 g.eval("" +
     15       function fill(obj) {
     16           obj.sanityCheck = 1;
     17           obj["0xcafe"] = 2;
     18           obj[" "] = 3;
     19           obj[""] = 4;
     20           obj[0] = 5;
     21           obj[Symbol.for("moon")] = 6;
     22           return obj;
     23       })
     24 g.eval("fill(this);\n" +
     25       "with (fill({})) h();");
     26 
     27 for (var names of [withNames, globalNames]) {
     28    assertEq(names.indexOf("sanityCheck") !== -1, true);
     29    assertEq(names.indexOf("0xcafe"), -1);
     30    assertEq(names.indexOf(" "), -1);
     31    assertEq(names.indexOf(""), -1);
     32    assertEq(names.indexOf("0"), -1);
     33    assertEq(names.indexOf(Symbol.for("moon")), -1);
     34 }