Wed, 31 Dec 2014 06:09:35 +0100
Cloned upstream origin tor-browser at tor-browser-31.3.0esr-4.5-1-build1
revision ID fc1c9ff7c1b2defdbc039f12214767608f46423f for hacking purpose.
1 // Turning debugger on for a particular global with on-stack scripts shouldn't
2 // make other globals' scripts observable.
4 var g1 = newGlobal();
5 var g2 = newGlobal();
6 var g3 = newGlobal();
8 g1.eval("" + function f() {
9 var name = "f";
10 g();
11 return name;
12 });
13 g2.eval("" + function g() {
14 var name = "g";
15 h();
16 return name;
17 });
18 g3.eval("" + function h() {
19 var name = "h";
20 toggle();
21 return name;
22 });
24 g1.g = g2.g;
25 g2.h = g3.h;
27 function name(f) {
28 return f.environment.getVariable("name");
29 }
31 var dbg = new Debugger;
32 g3.toggle = function () {
33 var frame;
35 // Only f should be visible.
36 dbg.addDebuggee(g1);
37 frame = dbg.getNewestFrame();
38 assertEq(name(frame), "f");
40 // Now h should also be visible.
41 dbg.addDebuggee(g3);
42 frame = dbg.getNewestFrame();
43 assertEq(name(frame), "h");
44 assertEq(name(frame.older), "f");
46 // Finally everything should be visible.
47 dbg.addDebuggee(g2);
48 frame = dbg.getNewestFrame();
49 assertEq(name(frame), "h");
50 assertEq(name(frame.older), "g");
51 assertEq(name(frame.older.older), "f");
52 };
54 g1.eval("(" + function () { f(); } + ")();");