|
1 // Trying to set an onPop handler on a dead frame throws an exception. |
|
2 var g = newGlobal(); |
|
3 g.eval("function f() { }"); |
|
4 g.eval("function g() { f(); }"); |
|
5 g.eval("function h() { g(); }"); |
|
6 g.eval("function i() { h(); }"); |
|
7 var dbg = new Debugger(g); |
|
8 var log; |
|
9 |
|
10 var frames = []; |
|
11 dbg.onEnterFrame = function handleEnter(f) { |
|
12 log += "("; |
|
13 assertEq(f.live, true); |
|
14 frames.push(f); |
|
15 }; |
|
16 log = ''; |
|
17 g.i(); |
|
18 assertEq(log, "(((("); |
|
19 assertEq(frames.length, 4); |
|
20 for (i = 0; i < frames.length; i++) { |
|
21 assertEq(frames[i].live, false); |
|
22 var set = false; |
|
23 try { |
|
24 frames[i].onPop = function unappreciated() { }; |
|
25 set = true; // don't assert in a 'try' block |
|
26 } catch (x) { |
|
27 assertEq(x instanceof Error, true); |
|
28 } |
|
29 assertEq(set, false); |
|
30 } |