tor-browser

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

known-class.js (2656B)


      1 var IsRegExpObject = getSelfHostedValue("IsRegExpObject");
      2 var IsCallable = getSelfHostedValue("IsCallable");
      3 var NewArrayIterator = getSelfHostedValue("NewArrayIterator");
      4 var GuardToArrayIterator = getSelfHostedValue("GuardToArrayIterator");
      5 
      6 function array() {
      7    var a = [0];
      8    assertEq(Array.isArray(a), true);
      9    assertEq(typeof a, "object");
     10    assertEq(IsRegExpObject(a), false);
     11    assertEq(IsCallable(a), false);
     12 }
     13 
     14 function array2(x) {
     15    var a;
     16    if (x) {
     17        a = [0];
     18    } else {
     19        a = [1];
     20    }
     21    assertEq(Array.isArray(a), true);
     22    assertEq(typeof a, "object");
     23    assertEq(IsRegExpObject(a), false);
     24    assertEq(IsCallable(a), false);
     25 }
     26 
     27 function object() {
     28    var o = {a: 1};
     29    assertEq(Array.isArray(o), false);
     30    assertEq(typeof o, "object");
     31    assertEq(IsRegExpObject(o), false);
     32    assertEq(IsCallable(o), false);
     33 }
     34 
     35 function object2(x) {
     36    var o;
     37    if (x) {
     38        o = {a: 1};
     39    } else {
     40        o = {b: 1};
     41    }
     42    assertEq(Array.isArray(o), false);
     43    assertEq(typeof o, "object");
     44    assertEq(IsRegExpObject(o), false);
     45    assertEq(IsCallable(o), false);
     46 }
     47 
     48 function mixed(x) {
     49    var o;
     50    if (x) {
     51        o = [1];
     52    } else {
     53        o = {a: 1};
     54    }
     55    assertEq(Array.isArray(o), x);
     56    assertEq(typeof o, "object");
     57    assertEq(IsRegExpObject(o), false);
     58    assertEq(IsCallable(o), false);
     59 }
     60 
     61 function lambda() {
     62    function f() {}
     63    assertEq(Array.isArray(f), false);
     64    assertEq(typeof f, "function");
     65    assertEq(IsRegExpObject(f), false);
     66    assertEq(IsCallable(f), true);
     67 }
     68 
     69 function arrow() {
     70    var f = () => {};
     71    assertEq(Array.isArray(f), false);
     72    assertEq(typeof f, "function");
     73    assertEq(IsRegExpObject(f), false);
     74    assertEq(IsCallable(f), true);
     75 }
     76 
     77 function regexp() {
     78    var r = /a/;
     79    assertEq(Array.isArray(r), false);
     80    assertEq(typeof r, "object");
     81    assertEq(IsRegExpObject(r), true);
     82    assertEq(IsCallable(r), false);
     83 }
     84 
     85 function regexp2(x) {
     86    var a;
     87    if (x) {
     88        a = /a/;
     89    } else {
     90        a = /b/;
     91    }
     92    assertEq(Array.isArray(a), false);
     93    assertEq(typeof a, "object");
     94    assertEq(IsRegExpObject(a), true);
     95    assertEq(IsCallable(a), false);
     96 }
     97 
     98 function iterator() {
     99    var i = NewArrayIterator();
    100    assertEq(Array.isArray(i), false);
    101    assertEq(typeof i, "object");
    102    assertEq(IsRegExpObject(i), false);
    103    assertEq(IsCallable(i), false);
    104    assertEq(GuardToArrayIterator(i), i);
    105 }
    106 
    107 var b = true;
    108 for (var i = 0; i < 1e4; i++) {
    109    array();
    110    array2(b);
    111    object();
    112    object2(b);
    113    mixed(b);
    114    lambda();
    115    arrow();
    116    regexp()
    117    regexp2(b);
    118    iterator();
    119 
    120    b = !b;
    121 }