tor-browser

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

Script-getBreakpoints-02.js (1234B)


      1 // Script.prototype.getBreakpoints returns breakpoints for the current Debugger object only.
      2 
      3 var g = newGlobal({newCompartment: true});
      4 
      5 var debuggers = [];
      6 var hits = 0;
      7 function attach(g, i) {
      8    var dbg = Debugger(g);
      9    dbg.onDebuggerStatement = function (frame) {
     10        var s = frame.script;
     11        var offs = s.getLineOffsets(g.line0 + 2);
     12        var hitAny = false;
     13        var handler = {
     14            hit: function (frame) {
     15                assertEq(this, handler);
     16                assertEq(frame.script, s);
     17                var bps = s.getBreakpoints();
     18                assertEq(bps.length, offs.length);
     19                for (var i = 0; i < bps.length; i++)
     20                    assertEq(bps[i], handler);
     21 
     22                if (!hitAny) {
     23                    hitAny = true;
     24                    hits++;
     25                }
     26            }
     27        };
     28        for (var i = 0; i < offs.length; i++)
     29            s.setBreakpoint(offs[i], handler);
     30        hits++;
     31    };
     32    debuggers[i] = dbg;
     33 }
     34 
     35 for (var i = 0; i < 3; i++)
     36    attach(g, i);
     37 g.done = false;
     38 g.eval("var line0 = Error().lineNumber;\n" +
     39       "debugger;\n" +      // line0 + 1
     40       "done = true;\n");   // line0 + 2
     41 assertEq(hits, 6);
     42 assertEq(g.done, true);