summaryrefslogtreecommitdiffstats
path: root/js/src/jit-test/tests/debug/Debugger-debuggees-19.js
blob: 7883a8a076e6d58cf66d5e83c5384153f8bf98fa (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
// removeAllDebuggees removes all the debuggees.

var dbg = new Debugger;

// If we eval in a debuggee, log which debuggee it was.
var log;
dbg.onEnterFrame = function (frame) {
  log += 'e';
  // frame.environment in all evals below is the global lexical env.
  log += frame.environment.parent.object.label;
};

var g1 = newGlobal({newCompartment: true});
log = '';
g1.eval('Math');
assertEq(log, '');              // not yet a debuggee

var g1w = dbg.addDebuggee(g1);
assertEq(g1w instanceof Debugger.Object, true);
g1w.label = 'g1';
log = '';
g1.eval('Math');                // now a debuggee
assertEq(log, 'eg1');

var g2 = newGlobal({newCompartment: true});
log = '';
g1.eval('Math');                // debuggee
g2.eval('Math');                // not a debuggee
assertEq(log, 'eg1');

var g2w = dbg.addDebuggee(g2);
assertEq(g2w instanceof Debugger.Object, true);
g2w.label = 'g2';
log = '';
g1.eval('Math');                // debuggee
g2.eval('this');                // debuggee
assertEq(log, 'eg1eg2');

var a1 = dbg.getDebuggees();
assertEq(a1.length, 2);

assertEq(dbg.removeAllDebuggees(), undefined);
var a2 = dbg.getDebuggees();
assertEq(a2.length, 0);

log = '';
g1.eval('Math');                // no longer a debuggee
g2.eval('this');                // no longer a debuggee
assertEq(log, '');