summaryrefslogtreecommitdiffstats
path: root/js/src/jit-test/tests/debug/Debugger-debuggees-19.js
diff options
context:
space:
mode:
Diffstat (limited to 'js/src/jit-test/tests/debug/Debugger-debuggees-19.js')
-rw-r--r--js/src/jit-test/tests/debug/Debugger-debuggees-19.js49
1 files changed, 49 insertions, 0 deletions
diff --git a/js/src/jit-test/tests/debug/Debugger-debuggees-19.js b/js/src/jit-test/tests/debug/Debugger-debuggees-19.js
new file mode 100644
index 0000000000..7883a8a076
--- /dev/null
+++ b/js/src/jit-test/tests/debug/Debugger-debuggees-19.js
@@ -0,0 +1,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, '');