|
1 // Return resumption values to non-debuggee frames. |
|
2 |
|
3 load(libdir + 'asserts.js'); |
|
4 |
|
5 var g = newGlobal(); |
|
6 var dbg = new Debugger; |
|
7 |
|
8 var log; |
|
9 |
|
10 function handlerWithResumption(resumption) { |
|
11 return function (frame) { |
|
12 log += 'd'; |
|
13 dbg.removeDebuggee(g); |
|
14 return resumption; |
|
15 }; |
|
16 } |
|
17 |
|
18 log = ''; |
|
19 dbg.onDebuggerStatement = handlerWithResumption(undefined); |
|
20 dbg.addDebuggee(g); |
|
21 assertEq(g.eval('debugger; 42;'), 42); |
|
22 assertEq(log, 'd'); |
|
23 |
|
24 log = ''; |
|
25 dbg.onDebuggerStatement = handlerWithResumption({ return: 1729 }); |
|
26 dbg.addDebuggee(g); |
|
27 assertEq(g.eval('debugger; 42;'), 1729); |
|
28 assertEq(log, 'd'); |
|
29 |
|
30 log = ''; |
|
31 dbg.onDebuggerStatement = handlerWithResumption(null); |
|
32 dbg.addDebuggee(g); |
|
33 assertEq(g.evaluate('debugger; 42;', { catchTermination: true }), 'terminated'); |
|
34 assertEq(log, 'd'); |