Object-class.js (894B)
1 // Basic tests for Debugger.Object.prototype.class. 2 var g = newGlobal({newCompartment: true}); 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, "Object"); 16 hits++; 17 }; 18 g.f(Object.prototype, [], eval, new Date, 19 new Proxy({}, {}), new Proxy(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 new Proxy({}, {}), new Proxy(f, {}), new Proxy(new Date, {}));'); 26 assertEq(hits, 2);