g = { 'global noneval': 1 }; netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect"); eval("g['global eval'] = 1"); // Function to step through and set breakpoints on function f1() { g['function noneval'] = 1; eval("g['function eval'] = 1"); x = 1; for (y = 0; y < 10; y++) { x++; } for (y = 0; y < 3; y++) { x++; } z = 3; } var f2 = new Function("g['function noneval'] = 2; eval(\"g['function eval'] = 2\")"); function testJSD(jsd) { netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect"); ok(jsd.isOn, "JSD needs to be running for this test."); var numBreakpoints = 0; f1(); f2(); jsd.topLevelHook = null; jsd.functionHook = null; dump("numGlobalNonevals="+numGlobalNonevals+"\n"); dump("numFunctionNonevals="+numFunctionNonevals+"\n"); dump("numGlobalEvals="+numGlobalEvals+"\n"); dump("numFunctionEvals="+numFunctionEvals+"\n"); ok(numFunctionNonevals == 3, "(fn) Should have hit f1(), testJSD(), and f2(); hit " + hits.fn); ok(numGlobalNonevals == 1, "(gn) Overall script, hit " + hits.gn); ok(numGlobalEvals == 1, "(ge) Eval in global area, hit " + hits.ge); ok(numFunctionEvals == 2, "(fe) Evals within f1() and f2(), hit " + hits.fe); if (!jsdOnAtStart) { // turn JSD off if it wasn't on when this test started jsd.off(); ok(!jsd.isOn, "JSD shouldn't be running at the end of this test."); } SimpleTest.finish(); } testJSD(jsd);