|
1 // Basic tests for Debugger.Object.prototype.class. |
|
2 var g = newGlobal(); |
|
3 var dbg = new Debugger(g); |
|
4 var hits = 0; |
|
5 g.eval('function f() { debugger; }'); |
|
6 |
|
7 dbg.onDebuggerStatement = function (frame) { |
|
8 var arr = frame.arguments; |
|
9 assertEq(arr[0].class, "Object"); |
|
10 assertEq(arr[1].class, "Array"); |
|
11 assertEq(arr[2].class, "Function"); |
|
12 assertEq(arr[3].class, "Date"); |
|
13 assertEq(arr[4].class, "Object"); |
|
14 assertEq(arr[5].class, "Function"); |
|
15 assertEq(arr[6].class, "Date"); |
|
16 hits++; |
|
17 }; |
|
18 g.f(Object.prototype, [], eval, new Date, |
|
19 Proxy.create({}), Proxy.createFunction({}, eval), new Proxy(new Date, {})); |
|
20 assertEq(hits, 1); |
|
21 |
|
22 // Debugger.Object.prototype.class should see through cross-compartment |
|
23 // wrappers. |
|
24 g.eval('f(Object.prototype, [], eval, new Date,\ |
|
25 Proxy.create({}), Proxy.createFunction({}, f), new Proxy(new Date, {}));'); |
|
26 assertEq(hits, 2); |