tor-browser

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

Debugger-debuggees-25.js (893B)


      1 // Turning debugger off global at a time.
      2 
      3 var g1 = newGlobal({newCompartment: true});
      4 var g2 = newGlobal({newCompartment: true});
      5 var g3 = newGlobal({newCompartment: true});
      6 
      7 g1.eval("" + function f() {
      8  var name = "f";
      9  g();
     10  return name;
     11 });
     12 g2.eval("" + function g() {
     13  var name = "g";
     14  h();
     15  return name;
     16 });
     17 g3.eval("" + function h() {
     18  var name = "h";
     19  toggle();
     20  return name;
     21 });
     22 
     23 g1.g = g2.g;
     24 g2.h = g3.h;
     25 
     26 function name(f) {
     27  return f.environment.getVariable("name");
     28 }
     29 
     30 var dbg = new Debugger;
     31 g3.toggle = function () {
     32  var frame;
     33 
     34  // Add all globals.
     35  dbg.addDebuggee(g1);
     36  dbg.addDebuggee(g3);
     37  dbg.addDebuggee(g2);
     38 
     39  // Remove one at a time.
     40  dbg.removeDebuggee(g3);
     41  assertEq(name(dbg.getNewestFrame()), "g");
     42  dbg.removeDebuggee(g2);
     43  assertEq(name(dbg.getNewestFrame()), "f");
     44  dbg.removeDebuggee(g1);
     45 };
     46 
     47 g1.eval("(" + function () { f(); } + ")();");