tor-browser

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

breakpoint-multi-02.js (1073B)


      1 // After clearing one breakpoint, another breakpoint at the same instruction still works.
      2 
      3 var g = newGlobal({newCompartment: true});
      4 var dbg = Debugger(g);
      5 var script = null;
      6 var handlers = [];
      7 dbg.onDebuggerStatement = function (frame) {
      8    function handler(i) {
      9        return {hit: function (frame) { g.log += '' + i; }};
     10    }
     11    var f = frame.eval("f").return;
     12    var s = f.script;
     13    if (script === null)
     14        script = s;
     15    else
     16        assertEq(s, script);
     17 
     18    var offs = s.getLineOffsets(g.line0 + 3);
     19    for (var i = 0; i < 3; i++) {
     20        handlers[i] = handler(i);
     21        for (var j = 0; j < offs.length; j++)
     22            s.setBreakpoint(offs[j], handlers[i]);
     23    }
     24 };
     25 
     26 g.eval("var line0 = Error().lineNumber;\n" +
     27       "function f() {\n" +     // line0 + 1
     28       "    log += 'x';\n" +    // line0 + 2
     29       "    log += 'y';\n" +    // line0 + 3
     30       "}\n" +
     31       "debugger;\n");
     32 assertEq(handlers.length, 3);
     33 
     34 g.log = '';
     35 g.f();
     36 assertEq(g.log, 'x012y');
     37 
     38 script.clearBreakpoint(handlers[0]);
     39 
     40 g.log = '';
     41 g.f();
     42 assertEq(g.log, 'x12y');