|
1 // If debugger.onEnterFrame returns {return:val}, the frame returns immediately. |
|
2 |
|
3 load(libdir + "asserts.js"); |
|
4 |
|
5 var g = newGlobal(); |
|
6 g.set = false; |
|
7 |
|
8 var dbg = Debugger(g); |
|
9 var savedFrame; |
|
10 dbg.onDebuggerStatement = function (frame) { |
|
11 var innerSavedFrame; |
|
12 dbg.onEnterFrame = function (frame) { |
|
13 innerSavedFrame = frame; |
|
14 return null; |
|
15 }; |
|
16 // Using frame.eval lets us catch termination. |
|
17 assertEq(frame.eval("set = true;"), null); |
|
18 assertEq(innerSavedFrame.live, false); |
|
19 savedFrame = frame; |
|
20 return { return: "pass" }; |
|
21 }; |
|
22 |
|
23 savedFrame = undefined; |
|
24 assertEq(g.eval("debugger;"), "pass"); |
|
25 assertEq(savedFrame.live, false); |
|
26 assertEq(g.set, false); |