|
1 // Debugger.Script.prototype.script returns the global the script runs in. |
|
2 // Multi-global version. |
|
3 |
|
4 var dbg = new Debugger; |
|
5 |
|
6 var g1 = newGlobal(); |
|
7 var g1w = dbg.addDebuggee(g1); |
|
8 |
|
9 var g2 = newGlobal(); |
|
10 var g2w = dbg.addDebuggee(g2); |
|
11 |
|
12 var g3 = newGlobal(); |
|
13 var g3w = dbg.addDebuggee(g3); |
|
14 |
|
15 var log = ''; |
|
16 dbg.onDebuggerStatement = function (frame) { |
|
17 log += 'd'; |
|
18 assertEq(frame.script.global, g1w); |
|
19 assertEq(frame.older.script.global, g2w); |
|
20 assertEq(frame.older.older.script.global, g3w); |
|
21 assertEq(frame.older.older.older.script.global, g1w); |
|
22 } |
|
23 |
|
24 g1.eval('function f() { debugger; }'); |
|
25 |
|
26 g2.g1 = g1; |
|
27 g2.eval('function g() { g1.f(); }'); |
|
28 |
|
29 g3.g2 = g2; |
|
30 g3.eval('function h() { g2.g(); }'); |
|
31 |
|
32 g1.g3 = g3; |
|
33 g1.eval('function i() { g3.h(); }'); |
|
34 |
|
35 g1.i(); |
|
36 assertEq(log, 'd'); |
|
37 |
|
38 assertEq(g1w.getOwnPropertyDescriptor('f').value.global, g1w); |
|
39 assertEq(g2w.getOwnPropertyDescriptor('g').value.global, g2w); |
|
40 assertEq(g3w.getOwnPropertyDescriptor('h').value.global, g3w); |