1.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 1.2 +++ b/js/src/jit-test/tests/debug/Debugger-onNewGlobalObject-01.js Wed Dec 31 06:09:35 2014 +0100 1.3 @@ -0,0 +1,64 @@ 1.4 +// Debugger.prototype.onNewGlobalObject surfaces. 1.5 + 1.6 +load(libdir + 'asserts.js'); 1.7 + 1.8 +var dbg = new Debugger; 1.9 + 1.10 +function f() { } 1.11 +function g() { } 1.12 + 1.13 +assertEq(Object.getOwnPropertyDescriptor(dbg, 'onNewGlobalObject'), undefined); 1.14 + 1.15 +var d = Object.getOwnPropertyDescriptor(Object.getPrototypeOf(dbg), 'onNewGlobalObject'); 1.16 +assertEq(d.enumerable, false); 1.17 +assertEq(d.configurable, true); 1.18 +assertEq(typeof d.get, "function"); 1.19 +assertEq(typeof d.set, "function"); 1.20 + 1.21 +assertEq(dbg.onNewGlobalObject, undefined); 1.22 + 1.23 +assertThrowsInstanceOf(function () { dbg.onNewGlobalObject = ''; }, TypeError); 1.24 +assertEq(dbg.onNewGlobalObject, undefined); 1.25 + 1.26 +assertThrowsInstanceOf(function () { dbg.onNewGlobalObject = false; }, TypeError); 1.27 +assertEq(dbg.onNewGlobalObject, undefined); 1.28 + 1.29 +assertThrowsInstanceOf(function () { dbg.onNewGlobalObject = 0; }, TypeError); 1.30 +assertEq(dbg.onNewGlobalObject, undefined); 1.31 + 1.32 +assertThrowsInstanceOf(function () { dbg.onNewGlobalObject = Math.PI; }, TypeError); 1.33 +assertEq(dbg.onNewGlobalObject, undefined); 1.34 + 1.35 +assertThrowsInstanceOf(function () { dbg.onNewGlobalObject = null; }, TypeError); 1.36 +assertEq(dbg.onNewGlobalObject, undefined); 1.37 + 1.38 +assertThrowsInstanceOf(function () { dbg.onNewGlobalObject = {}; }, TypeError); 1.39 +assertEq(dbg.onNewGlobalObject, undefined); 1.40 + 1.41 +// But any function, even a useless one, is okay. How fair is that? 1.42 +dbg.onNewGlobalObject = f; 1.43 +assertEq(dbg.onNewGlobalObject, f); 1.44 + 1.45 +dbg.onNewGlobalObject = undefined; 1.46 +assertEq(dbg.onNewGlobalObject, undefined); 1.47 + 1.48 +var dbg2 = new Debugger; 1.49 +assertEq(dbg.onNewGlobalObject, undefined); 1.50 +assertEq(dbg2.onNewGlobalObject, undefined); 1.51 + 1.52 +dbg.onNewGlobalObject = f; 1.53 +assertEq(dbg.onNewGlobalObject, f); 1.54 +assertEq(dbg2.onNewGlobalObject, undefined); 1.55 + 1.56 +dbg2.onNewGlobalObject = g; 1.57 +assertEq(dbg.onNewGlobalObject, f); 1.58 +assertEq(dbg2.onNewGlobalObject, g); 1.59 + 1.60 +dbg.onNewGlobalObject = undefined; 1.61 +assertEq(dbg.onNewGlobalObject, undefined); 1.62 +assertEq(dbg2.onNewGlobalObject, g); 1.63 + 1.64 +// You shouldn't be able to apply the accessor to the prototype. 1.65 +assertThrowsInstanceOf(function () { 1.66 + Debugger.prototype.onNewGlobalObject = function () { }; 1.67 + }, TypeError);