js/src/jit-test/tests/debug/Frame-script-environment-nondebuggee.js

changeset 0
6474c204b198
equal deleted inserted replaced
-1:000000000000 0:c7a7ab6a35f1
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');

mercurial