tor-browser

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

Environment-01.js (767B)


      1 // A live Environment can observe the new variables introduced by ES5 non-strict direct eval.
      2 
      3 var g = newGlobal({newCompartment: true});
      4 g.eval("var x = 'global'; function f(s) { h(); eval(s); h(); }");
      5 g.eval("function h() { debugger; }");
      6 var dbg = Debugger(g);
      7 var env = undefined;
      8 var hits = 0;
      9 dbg.onDebuggerStatement = function (hframe) {
     10    if (env === undefined) {
     11        // First debugger statement.
     12        env = hframe.older.environment;
     13        assertEq(env.find("x") !== env, true);
     14        assertEq(env.names().indexOf("x"), -1);
     15    } else {
     16        // Second debugger statement, post-eval.
     17        assertEq(env.find("x"), env);
     18        assertEq(env.names().indexOf("x") >= 0, true);
     19    }
     20    hits++;
     21 };
     22 g.f("var x = 'local';");
     23 assertEq(hits, 2);