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