tor-browser

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

Script-clearBreakpoint-02.js (881B)


      1 // A breakpoint cleared during dispatch does not fire.
      2 // (Breakpoint dispatch is well-behaved even when breakpoint handlers clear other breakpoints.)
      3 
      4 var g = newGlobal({newCompartment: true});
      5 var dbg = Debugger(g);
      6 var log = '';
      7 dbg.onDebuggerStatement = function (frame) {
      8    var s = frame.script;
      9    function handler(i) {
     10        if (i === 1)
     11            return function () { log += i; s.clearBreakpoint(h[1]); s.clearBreakpoint(h[2]); };
     12        return function () { log += i; };
     13    }
     14    var offs = s.getLineOffsets(g.line0 + 2);
     15    var h = [];
     16    for (var i = 0; i < 4; i++) {
     17        h[i] = {hit: handler(i)};
     18        for (var j = 0; j < offs.length; j++)
     19            s.setBreakpoint(offs[j], h[i]);
     20    }
     21 };
     22 
     23 g.eval("var line0 = Error().lineNumber;\n" +
     24       "debugger;\n" +          // line0 + 1
     25       "result = 'ok';\n");     // line0 + 2
     26 assertEq(log, '013');