Wed, 31 Dec 2014 06:09:35 +0100
Cloned upstream origin tor-browser at tor-browser-31.3.0esr-4.5-1-build1
revision ID fc1c9ff7c1b2defdbc039f12214767608f46423f for hacking purpose.
1 // After clearing one breakpoint, another breakpoint at the same instruction still works.
3 var g = newGlobal();
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);
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 };
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);
34 g.log = '';
35 g.f();
36 assertEq(g.log, 'x012y');
38 script.clearBreakpoint(handlers[0]);
40 g.log = '';
41 g.f();
42 assertEq(g.log, 'x12y');