1.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 1.2 +++ b/js/src/jit-test/tests/debug/Debugger-debuggees-24.js Wed Dec 31 06:09:35 2014 +0100 1.3 @@ -0,0 +1,55 @@ 1.4 +// Turning debugger on for a particular global with on-stack scripts shouldn't 1.5 +// make other globals' scripts observable. 1.6 + 1.7 +var g1 = newGlobal(); 1.8 +var g2 = newGlobal(); 1.9 +var g3 = newGlobal(); 1.10 + 1.11 +g1.eval("" + function f() { 1.12 + var name = "f"; 1.13 + g(); 1.14 + return name; 1.15 +}); 1.16 +g2.eval("" + function g() { 1.17 + var name = "g"; 1.18 + h(); 1.19 + return name; 1.20 +}); 1.21 +g3.eval("" + function h() { 1.22 + var name = "h"; 1.23 + toggle(); 1.24 + return name; 1.25 +}); 1.26 + 1.27 +g1.g = g2.g; 1.28 +g2.h = g3.h; 1.29 + 1.30 +function name(f) { 1.31 + return f.environment.getVariable("name"); 1.32 +} 1.33 + 1.34 +var dbg = new Debugger; 1.35 +g3.toggle = function () { 1.36 + var frame; 1.37 + 1.38 + // Only f should be visible. 1.39 + dbg.addDebuggee(g1); 1.40 + frame = dbg.getNewestFrame(); 1.41 + assertEq(name(frame), "f"); 1.42 + 1.43 + // Now h should also be visible. 1.44 + dbg.addDebuggee(g3); 1.45 + frame = dbg.getNewestFrame(); 1.46 + assertEq(name(frame), "h"); 1.47 + assertEq(name(frame.older), "f"); 1.48 + 1.49 + // Finally everything should be visible. 1.50 + dbg.addDebuggee(g2); 1.51 + frame = dbg.getNewestFrame(); 1.52 + assertEq(name(frame), "h"); 1.53 + assertEq(name(frame.older), "g"); 1.54 + assertEq(name(frame.older.older), "f"); 1.55 +}; 1.56 + 1.57 +g1.eval("(" + function () { f(); } + ")();"); 1.58 +