tor-browser

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

Script-getBreakpoints-01.js (1203B)


      1 // Basic Script.prototype.getBreakpoints tests.
      2 
      3 var g = newGlobal({newCompartment: true});
      4 g.eval("var line0 = Error().lineNumber;\n" +
      5       "function f(x) {\n" +        // line0 + 1
      6       "    if (x < 0)\n" +         // line0 + 2
      7       "        return -x;\n" +     // line0 + 3
      8       "    return x;\n" +
      9       "}");
     10 
     11 var s;
     12 var offsets = [];
     13 var handlers = [];
     14 var dbg = Debugger(g);
     15 dbg.onDebuggerStatement = function (frame) {
     16    s = frame.eval("f").return.script;
     17    var off;
     18 
     19    for (var i = 0; i < 3; i++) {
     20        var off = s.getLineOffsets(g.line0 + 2 + i)[0];
     21        assertEq(typeof off, 'number');
     22        handlers[i] = {};
     23        s.setBreakpoint(off, handlers[i]);
     24        offsets[i] = off;
     25    }
     26 };
     27 g.eval("debugger;");
     28 
     29 // getBreakpoints without an offset gets all breakpoints in the script.
     30 var bps = s.getBreakpoints();
     31 assertEq(bps.length, handlers.length);
     32 for (var i = 0; i < bps.length; i++)
     33    assertEq(bps.indexOf(handlers[i]) !== -1, true);
     34 
     35 // getBreakpoints with an offset finds only breakpoints at that offset.
     36 for (var i = 0; i < offsets.length; i++) {
     37    var bps = s.getBreakpoints(offsets[i]);
     38    assertEq(bps.length, 1);
     39    assertEq(bps[0], handlers[i]);
     40 }