tor-browser

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

Script-getOffsetLocation.js (1162B)


      1 // getOffsetLocation agrees with getAllColumnOffsets
      2 
      3 var global = newGlobal({newCompartment: true});
      4 Debugger(global).onDebuggerStatement = function (frame) {
      5    var script = frame.script;
      6    var byOffset = [];
      7    script.getAllColumnOffsets().forEach(function (entry) {
      8        var {lineNumber, columnNumber, offset} = entry;
      9        byOffset[offset] = {lineNumber, columnNumber};
     10    });
     11 
     12    frame.onStep = function() {
     13        var offset = frame.offset;
     14        var location = script.getOffsetLocation(offset);
     15        if (location.isEntryPoint) {
     16            assertEq(location.lineNumber, byOffset[offset].lineNumber);
     17            assertEq(location.columnNumber, byOffset[offset].columnNumber);
     18        } else {
     19            assertEq(byOffset[offset], undefined);
     20        }
     21    };
     22 };
     23 
     24 function test(body) {
     25  print("Test: " + body);
     26  global.eval(`function f(n) { debugger; ${body} }`);
     27  global.f(3);
     28 }
     29 
     30 test("for (var i = 0; i < n; ++i) ;");
     31 test("var w0,x1=3,y2=4,z3=9");
     32 test("print(n),print(n),print(n)");
     33 test("var o={a:1,b:2,c:3}");
     34 test("var a=[1,2,n]");
     35 
     36 global.eval("function ppppp() { return 1; }");
     37 test("1 && ppppp(ppppp()) && new Error()");