Source code

Revision control

Copy as Markdown

Other Tools

// The script and environment of a non-debuggee function are null.
var g = newGlobal({newCompartment: true});
g.eval('function f() { return "from f"; }');
var dbg = new Debugger;
var gw = dbg.makeGlobalObjectReference(g);
var fw = gw.getOwnPropertyDescriptor('f').value;
// g is not a debuggee, so we can't fetch f's script or environment.
assertEq(fw.script, null);
assertEq(fw.environment, null);
// If we add g as a debuggee, we can fetch f's script and environment.
dbg.addDebuggee(g);
var fscript = fw.script;
var fenv = fw.environment;
assertEq(fscript instanceof Debugger.Script, true);
assertEq(fenv instanceof Debugger.Environment, true);
// Removing g as a debuggee makes the script and environment inaccessible again.
dbg.removeDebuggee(g);
assertEq(fw.script, null);
assertEq(fw.environment, null);