tor-browser

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

Frame-onPop-23.js (1021B)


      1 // Check that the line number reported at an onPop stop makes sense,
      2 // even when it happens on an "artificial" instruction.
      3 
      4 var g = newGlobal({newCompartment: true});
      5 
      6 // This bit of code arranges for the line number of the "artificial"
      7 // instruction to be something nonsensical -- the middle of a loop
      8 // which cannot be entered.
      9 g.eval(`function f() {
     10  debugger;                   // +0
     11  if(false) {                 // +1
     12    for(var b=0; b<0; b++) {  // +2
     13      c = 2;                  // +3
     14    }                         // +4
     15  }                           // +5
     16 }                             // +6
     17 `);
     18 
     19 var dbg = Debugger(g);
     20 
     21 let debugLine;
     22 let foundLine;
     23 
     24 dbg.onDebuggerStatement = function(frame) {
     25  debugLine = frame.script.getOffsetLocation(frame.offset).lineNumber;
     26  frame.onPop = function(c) {
     27    foundLine = this.script.getOffsetLocation(this.offset).lineNumber;
     28  };
     29 };
     30 
     31 g.eval("f();\n");
     32 
     33 // The stop should happen on the closing brace of the function.
     34 assertEq(foundLine == debugLine + 6, true);