Object-getProperty-03.js (1941B)
1 // tests calling script functions via Debugger.Object.prototype.getProperty 2 // with different receiver objects. 3 "use strict"; 4 load(libdir + "/asserts.js"); 5 6 var global = newGlobal({newCompartment: true}); 7 var dbg = new Debugger(); 8 var globalDO = dbg.addDebuggee(global); 9 var windowProxyDO = globalDO.makeDebuggeeValue(global); 10 dbg.onDebuggerStatement = onDebuggerStatement; 11 12 global.eval(` 13 const sloppy = { 14 get getter() { return this; }, 15 }; 16 const strict = { 17 get getter() { "use strict"; return this; }, 18 }; 19 debugger; 20 `); 21 22 function onDebuggerStatement(frame) { 23 const { environment } = frame; 24 const sloppy = environment.getVariable("sloppy"); 25 const strict = environment.getVariable("strict"); 26 27 assertEq(sloppy.getProperty("getter").return, sloppy); 28 assertEq(sloppy.getProperty("getter", sloppy).return, sloppy); 29 assertEq(sloppy.getProperty("getter", strict).return, strict); 30 assertEq(sloppy.getProperty("getter", 1).return.class, "Number"); 31 assertEq(sloppy.getProperty("getter", true).return.class, "Boolean"); 32 assertEq(sloppy.getProperty("getter", null).return, windowProxyDO); 33 assertEq(sloppy.getProperty("getter", undefined).return, windowProxyDO); 34 assertErrorMessage(() => sloppy.getProperty("getter", {}), TypeError, 35 "Debugger: expected Debugger.Object, got Object"); 36 37 assertEq(strict.getProperty("getter").return, strict); 38 assertEq(strict.getProperty("getter", sloppy).return, sloppy); 39 assertEq(strict.getProperty("getter", strict).return, strict); 40 assertEq(strict.getProperty("getter", 1).return, 1); 41 assertEq(strict.getProperty("getter", true).return, true); 42 assertEq(strict.getProperty("getter", null).return, null); 43 assertEq(strict.getProperty("getter", undefined).return, undefined); 44 assertErrorMessage(() => strict.getProperty("getter", {}), TypeError, 45 "Debugger: expected Debugger.Object, got Object"); 46 };