|
1 // Debugger.prototype.onNewGlobalObject surfaces. |
|
2 |
|
3 load(libdir + 'asserts.js'); |
|
4 |
|
5 var dbg = new Debugger; |
|
6 |
|
7 function f() { } |
|
8 function g() { } |
|
9 |
|
10 assertEq(Object.getOwnPropertyDescriptor(dbg, 'onNewGlobalObject'), undefined); |
|
11 |
|
12 var d = Object.getOwnPropertyDescriptor(Object.getPrototypeOf(dbg), 'onNewGlobalObject'); |
|
13 assertEq(d.enumerable, false); |
|
14 assertEq(d.configurable, true); |
|
15 assertEq(typeof d.get, "function"); |
|
16 assertEq(typeof d.set, "function"); |
|
17 |
|
18 assertEq(dbg.onNewGlobalObject, undefined); |
|
19 |
|
20 assertThrowsInstanceOf(function () { dbg.onNewGlobalObject = ''; }, TypeError); |
|
21 assertEq(dbg.onNewGlobalObject, undefined); |
|
22 |
|
23 assertThrowsInstanceOf(function () { dbg.onNewGlobalObject = false; }, TypeError); |
|
24 assertEq(dbg.onNewGlobalObject, undefined); |
|
25 |
|
26 assertThrowsInstanceOf(function () { dbg.onNewGlobalObject = 0; }, TypeError); |
|
27 assertEq(dbg.onNewGlobalObject, undefined); |
|
28 |
|
29 assertThrowsInstanceOf(function () { dbg.onNewGlobalObject = Math.PI; }, TypeError); |
|
30 assertEq(dbg.onNewGlobalObject, undefined); |
|
31 |
|
32 assertThrowsInstanceOf(function () { dbg.onNewGlobalObject = null; }, TypeError); |
|
33 assertEq(dbg.onNewGlobalObject, undefined); |
|
34 |
|
35 assertThrowsInstanceOf(function () { dbg.onNewGlobalObject = {}; }, TypeError); |
|
36 assertEq(dbg.onNewGlobalObject, undefined); |
|
37 |
|
38 // But any function, even a useless one, is okay. How fair is that? |
|
39 dbg.onNewGlobalObject = f; |
|
40 assertEq(dbg.onNewGlobalObject, f); |
|
41 |
|
42 dbg.onNewGlobalObject = undefined; |
|
43 assertEq(dbg.onNewGlobalObject, undefined); |
|
44 |
|
45 var dbg2 = new Debugger; |
|
46 assertEq(dbg.onNewGlobalObject, undefined); |
|
47 assertEq(dbg2.onNewGlobalObject, undefined); |
|
48 |
|
49 dbg.onNewGlobalObject = f; |
|
50 assertEq(dbg.onNewGlobalObject, f); |
|
51 assertEq(dbg2.onNewGlobalObject, undefined); |
|
52 |
|
53 dbg2.onNewGlobalObject = g; |
|
54 assertEq(dbg.onNewGlobalObject, f); |
|
55 assertEq(dbg2.onNewGlobalObject, g); |
|
56 |
|
57 dbg.onNewGlobalObject = undefined; |
|
58 assertEq(dbg.onNewGlobalObject, undefined); |
|
59 assertEq(dbg2.onNewGlobalObject, g); |
|
60 |
|
61 // You shouldn't be able to apply the accessor to the prototype. |
|
62 assertThrowsInstanceOf(function () { |
|
63 Debugger.prototype.onNewGlobalObject = function () { }; |
|
64 }, TypeError); |