summaryrefslogtreecommitdiffstats
path: root/js/src/jit-test/tests/debug/onNewScript-01.js
diff options
context:
space:
mode:
Diffstat (limited to 'js/src/jit-test/tests/debug/onNewScript-01.js')
-rw-r--r--js/src/jit-test/tests/debug/onNewScript-01.js44
1 files changed, 44 insertions, 0 deletions
diff --git a/js/src/jit-test/tests/debug/onNewScript-01.js b/js/src/jit-test/tests/debug/onNewScript-01.js
new file mode 100644
index 0000000000..7c820ae58b
--- /dev/null
+++ b/js/src/jit-test/tests/debug/onNewScript-01.js
@@ -0,0 +1,44 @@
+// Basic newScript hook tests.
+
+var g = newGlobal({newCompartment: true});
+var dbg = Debugger(g);
+var seen = new WeakMap();
+var hits = 0;
+dbg.onNewScript = function (s) {
+ // Exceptions thrown from onNewScript are swept under the rug, but they
+ // will at least prevent hits from being the expected number.
+ assertEq(s instanceof Debugger.Script, true);
+ assertEq(!seen.has(s), true);
+ seen.set(s, true);
+ hits++;
+};
+
+dbg.uncaughtExceptionHook = function () { hits = -999; };
+
+// eval code
+hits = 0;
+assertEq(g.eval("2 + 2"), 4);
+assertEq(hits, 1);
+
+hits = 0;
+assertEq(g.eval("eval('2 + 3')"), 5);
+assertEq(hits, 2);
+
+// global code
+hits = 0;
+g.evaluate("3 + 4");
+assertEq(hits, 1);
+
+// function code
+hits = 0;
+var fn = g.Function("a", "return 5 + a;");
+assertEq(hits, 1);
+assertEq(fn(8), 13);
+assertEq(hits, 1);
+
+// cloning functions across compartments
+var g2 = newGlobal({newCompartment: true});
+dbg.addDebuggee(g2, dbg);
+hits = 0;
+cloneAndExecuteScript("(function(a) { return 5 + a; })", g2);
+assertEq(hits, 1);