|
1 // When there are multiple debuggers, their hooks are called in order. |
|
2 |
|
3 var g = newGlobal(); |
|
4 var log; |
|
5 var arr = []; |
|
6 |
|
7 function addDebug(msg) { |
|
8 var dbg = new Debugger(g); |
|
9 dbg.onDebuggerStatement = function (stack) { log += msg; }; |
|
10 arr.push(dbg); |
|
11 } |
|
12 |
|
13 addDebug('a'); |
|
14 addDebug('b'); |
|
15 addDebug('c'); |
|
16 |
|
17 log = ''; |
|
18 assertEq(g.eval("debugger; 0;"), 0); |
|
19 assertEq(log, 'abc'); |
|
20 |
|
21 // Calling debugger hooks stops as soon as any hook returns a resumption value |
|
22 // other than undefined. |
|
23 |
|
24 arr[0].onDebuggerStatement = function (stack) { |
|
25 log += 'a'; |
|
26 return {return: 1}; |
|
27 }; |
|
28 |
|
29 log = ''; |
|
30 assertEq(g.eval("debugger; 0;"), 1); |
|
31 assertEq(log, 'a'); |