cross-realm-iterator-lookup.js (688B)
1 // Test for `arguments[Symbol.iterator]` lookups on a cross-realm ArgumentsObject. 2 // The result must have the same realm as the object. 3 function test() { 4 var g = newGlobal({sameCompartmentAs: this}); 5 for (var i = 0; i < 30; i++) { 6 var myRealmArgs = (function() { return arguments; })(1, 2, 3); 7 var crossRealmArgs = g.evaluate(`(function() { return arguments; })(1, 2, 3)`); 8 var args = (i & 1) ? myRealmArgs : crossRealmArgs; 9 var createIter = args[Symbol.iterator]; 10 assertEq(objectGlobal(createIter), (i & 1) ? this : g); 11 var iter = createIter.call(args); 12 assertEq(objectGlobal(iter), (i & 1) ? this : g); 13 assertEq(iter.next().value, 1); 14 } 15 } 16 test();