tor-browser

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

non_syntactic.js (1405B)


      1 // |reftest| skip-if(!xulRuntime.shell) -- needs evaluate()
      2 // Any copyright is dedicated to the Public Domain.
      3 // http://creativecommons.org/licenses/publicdomain/
      4 
      5 // Check references to someVar, both as a variable and on |this|, in
      6 // various evaluation contexts.
      7 var someVar = 1;
      8 
      9 // Top level.
     10 assertEq(someVar, 1);
     11 assertEq(this.someVar, 1);
     12 
     13 // Inside evaluate.
     14 evaluate("assertEq(someVar, 1);");
     15 evaluate("assertEq(this.someVar, 1);");
     16 
     17 // With an object on the scope, no shadowing.
     18 var someObject = { someOtherField: 2 };
     19 var evalOpt = { envChainObject: someObject };
     20 evaluate("assertEq(someVar, 1);", evalOpt);
     21 evaluate("assertEq(this.someVar, undefined);", evalOpt);
     22 
     23 // With an object on the scope, shadowing global.
     24 someObject = { someVar: 2 };
     25 evalOpt = { envChainObject: someObject };
     26 var alsoSomeObject = someObject;
     27 evaluate("assertEq(someVar, 2);", evalOpt);
     28 evaluate("assertEq(this.someVar, 2);", evalOpt);
     29 evaluate("assertEq(this, alsoSomeObject);", evalOpt);
     30 
     31 // With an object on the scope, inside a function.
     32 evaluate("(function() { assertEq(someVar, 2);})()", evalOpt);
     33 evaluate("(function() { assertEq(this !== alsoSomeObject, true);})()", evalOpt);
     34 evaluate("(function() { assertEq(this.someVar, 1);})()", evalOpt);
     35 
     36 // `this` is ShellWindowProxy instead of GlobalObject, and it's allowed.
     37 evaluate("assertEq(someVar, 1);", { envChainObject: this });
     38 
     39 reportCompare(true, true);