tor-browser

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

call-generic-cross-realm.js (764B)


      1 // Test that the generic call tramponline handles cross-realm calls.
      2 
      3 function foo(f) {
      4  return f(1);
      5 }
      6 function foo_call(f) {
      7  return f.call({}, 1);
      8 }
      9 
     10 with ({}) {}
     11 
     12 var g = newGlobal({sameCompartmentAs: this});
     13 g.eval(`
     14 function f1(x) { return x; }
     15 var f2 = f1.bind({});
     16 var f3 = Math.log;
     17 `);
     18 
     19 var f1 = g.f1;
     20 var f2 = g.f2;
     21 var f3 = g.f3;
     22 
     23 var f4 = f1.bind({});
     24 var f5 = f2.bind({});
     25 var f6 = f3.bind({});
     26 
     27 for (var i = 0; i < 500; i++) {
     28  assertEq(foo(f1), 1);
     29  assertEq(foo(f2), 1);
     30  assertEq(foo(f3), 0);
     31  assertEq(foo(f4), 1);
     32  assertEq(foo(f5), 1);
     33  assertEq(foo(f6), 0);
     34  assertEq(foo_call(f1), 1);
     35  assertEq(foo_call(f2), 1);
     36  assertEq(foo_call(f3), 0);
     37  assertEq(foo_call(f4), 1);
     38  assertEq(foo_call(f5), 1);
     39  assertEq(foo_call(f6), 0);
     40 }