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 // One Debugger's onPop handler can remove another Debugger's onPop handler.
2 var g = newGlobal();
3 var dbg1 = new Debugger(g);
4 var dbg2 = new Debugger(g);
6 var log;
7 var frames = [];
8 var firstPop = true;
10 function handleEnter(frame) {
11 log += '(';
12 frames.push(frame);
13 frame.onPop = function handlePop(completion) {
14 log += ')';
15 assertEq(completion.return, 42);
16 if (firstPop) {
17 // We can't say which frame's onPop handler will get called first.
18 if (this == frames[0])
19 frames[1].onPop = undefined;
20 else
21 frames[0].onPop = undefined;
22 gc();
23 } else {
24 assertEq("second pop handler was called",
25 "second pop handler should not be called");
26 }
27 firstPop = false;
28 };
29 };
31 dbg1.onEnterFrame = handleEnter;
32 dbg2.onEnterFrame = handleEnter;
34 log = '';
35 assertEq(g.eval('40 + 2'), 42);
36 assertEq(log, '(()');