|
1 // The script and environment of a non-debuggee frame are inaccessible. |
|
2 |
|
3 load(libdir + 'asserts.js'); |
|
4 |
|
5 var g = newGlobal(); |
|
6 var dbg = new Debugger; |
|
7 |
|
8 var log; |
|
9 dbg.onDebuggerStatement = function (frame) { |
|
10 log += frame.type; |
|
11 // Initially, 'frame' is a debuggee frame, and we should be able to see its script and environment. |
|
12 assertEq(frame.script instanceof Debugger.Script, true); |
|
13 assertEq(frame.environment instanceof Debugger.Environment, true); |
|
14 |
|
15 // If we make g no longer a debuggee, then trying to touch the frame at |
|
16 // all show throw. |
|
17 dbg.removeDebuggee(g); |
|
18 assertThrowsInstanceOf(() => frame.script, Error); |
|
19 assertThrowsInstanceOf(() => frame.environment, Error); |
|
20 } |
|
21 |
|
22 g.eval('function f() { debugger; }'); |
|
23 |
|
24 log = ''; |
|
25 dbg.addDebuggee(g); |
|
26 g.f(); |
|
27 assertEq(log, 'call'); |
|
28 |
|
29 log = ''; |
|
30 dbg.addDebuggee(g); |
|
31 g.eval('debugger;'); |
|
32 assertEq(log, 'eval'); |