tor-browser

The Tor Browser
git clone https://git.dasho.dev/tor-browser.git
Log | Files | Refs | README | LICENSE

array-species-create.js (1268B)


      1 function testSelfHosted() {
      2    var g = newGlobal({sameCompartmentAs: this});
      3    var arr = g.evaluate("[1, 2]");
      4    for (var i = 0; i < 20; i++) {
      5        var mapped = Array.prototype.map.call(arr, x => x + 1);
      6        assertEq(mapped.constructor, Array);
      7    }
      8 }
      9 testSelfHosted();
     10 
     11 function testNative() {
     12    var g = newGlobal({sameCompartmentAs: this});
     13    var arr = g.evaluate("[1, 2, 3, 4]");
     14    for (var i = 0; i < 20; i++) {
     15        var slice = Array.prototype.slice.call(arr, 0, 3);
     16        assertEq(slice.constructor, Array);
     17    }
     18 }
     19 testNative();
     20 
     21 function testIntrinsic() {
     22    var g1 = newGlobal({sameCompartmentAs: this});
     23    var g2 = newGlobal();
     24    var IsCrossRealmArrayConstructor = getSelfHostedValue("IsCrossRealmArrayConstructor");
     25    for (var i = 0; i < 20; i++) {
     26        assertEq(IsCrossRealmArrayConstructor(Array), false);
     27        assertEq(IsCrossRealmArrayConstructor(Math), false);
     28        assertEq(IsCrossRealmArrayConstructor(() => 1), false);
     29        assertEq(IsCrossRealmArrayConstructor(g1.Array), true);
     30        assertEq(IsCrossRealmArrayConstructor(g2.Array), true);
     31        assertEq(IsCrossRealmArrayConstructor(g1.assertEq), false);
     32        assertEq(IsCrossRealmArrayConstructor(g2.assertEq), false);
     33    }
     34 }
     35 testIntrinsic();