makeGlobalObjectReference-01.js (942B)
1 // Debugger.prototype.makeGlobalObjectReference returns a D.O for a global 2 // without adding it as a debuggee. 3 4 let g1 = newGlobal({newCompartment: true}); 5 let dbg = new Debugger; 6 assertEq(dbg.hasDebuggee(g1), false); 7 8 let g1w = dbg.makeGlobalObjectReference(g1); 9 assertEq(dbg.hasDebuggee(g1), false); 10 assertEq(g1w.unsafeDereference(), g1); 11 assertEq(g1, g1w.makeDebuggeeValue(g1).unsafeDereference()); 12 13 assertEq(dbg.addDebuggee(g1w), g1w); 14 assertEq(dbg.hasDebuggee(g1), true); 15 assertEq(dbg.hasDebuggee(g1w), true); 16 assertEq(g1w.unsafeDereference(), g1); 17 assertEq(g1, g1w.makeDebuggeeValue(g1).unsafeDereference()); 18 19 // makeGlobalObjectReference dereferences CCWs. 20 let g2 = newGlobal({newCompartment: true}); 21 g2.g1 = g1; 22 let g2w = dbg.addDebuggee(g2); 23 let g2g1w = g2w.getOwnPropertyDescriptor('g1').value; 24 assertEq(g2g1w !== g1w, true); 25 assertEq(g2g1w.unwrap(), g1w.makeDebuggeeValue(g1)); 26 assertEq(dbg.makeGlobalObjectReference(g2g1w), g1w);