js/src/tests/js1_5/Array/regress-465980-02.js

Sat, 03 Jan 2015 20:18:00 +0100

author
Michael Schloh von Bennewitz <michael@schloh.com>
date
Sat, 03 Jan 2015 20:18:00 +0100
branch
TOR_BUG_3246
changeset 7
129ffea94266
permissions
-rwxr-xr-x

Conditionally enable double key logic according to:
private browsing mode or privacy.thirdparty.isolate preference and
implement in GetCookieStringCommon and FindCookie where it counts...
With some reservations of how to convince FindCookie users to test
condition and pass a nullptr when disabling double key logic.

     1 // |reftest| skip -- slow
     2 /* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
     3 /* This Source Code Form is subject to the terms of the Mozilla Public
     4  * License, v. 2.0. If a copy of the MPL was not distributed with this
     5  * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
     7 //-----------------------------------------------------------------------------
     8 var BUGNUMBER = 465980;
     9 var summary = 'Do not crash @ InitArrayElements';
    10 var actual = '';
    11 var expect = '';
    14 //-----------------------------------------------------------------------------
    15 test();
    16 //-----------------------------------------------------------------------------
    18 function test()
    19 {
    20   enterFunc ('test');
    21   printBugNumber(BUGNUMBER);
    22   printStatus (summary);
    24   function describe(name, startLength, pushArgs, expectThrow, expectLength)
    25   {
    26     return name + "(" + startLength + ", " +
    27       "[" + pushArgs.join(", ") + "], " +
    28       expectThrow + ", " +
    29       expectLength + ")";
    30   }
    32   var push = Array.prototype.push;
    33   var unshift = Array.prototype.unshift;
    35   function testArrayPush(startLength, pushArgs, expectThrow, expectLength)
    36   {
    37     print("running testArrayPush(" +
    38           startLength + ", " +
    39           "[" + pushArgs.join(", ") + "], " +
    40           expectThrow + ", " +
    41           expectLength + ")...");
    42     var a = new Array(startLength);
    43     try
    44     {
    45       push.apply(a, pushArgs);
    46       if (expectThrow)
    47       {
    48         throw "expected to throw for " +
    49           describe("testArrayPush", startLength, pushArgs, expectThrow,
    50                    expectLength);
    51       }
    52     }
    53     catch (e)
    54     {
    55       if (!(e instanceof RangeError))
    56       {
    57         throw "unexpected exception type thrown: " + e + " for " +
    58           describe("testArrayPush", startLength, pushArgs, expectThrow,
    59                    expectLength);
    60       }
    61       if (!expectThrow)
    62       {
    63         throw "unexpected exception " + e + " for " +
    64           describe("testArrayPush", startLength, pushArgs, expectThrow,
    65                    expectLength);
    66       }
    67     }
    69     if (a.length !== expectLength)
    70     {
    71       throw "unexpected modified-array length for " +
    72         describe("testArrayPush", startLength, pushArgs, expectThrow,
    73                  expectLength);
    74     }
    76     for (var i = 0, sz = pushArgs.length; i < sz; i++)
    77     {
    78       var index = i + startLength;
    79       if (a[index] !== pushArgs[i])
    80       {
    81         throw "unexpected value " + a[index] +
    82           " at index " + index + " (" + i + ") during " +
    83           describe("testArrayPush", startLength, pushArgs, expectThrow,
    84                    expectLength) + ", expected " + pushArgs[i];
    85       }
    86     }
    87   }
    89   function testArrayUnshift(startLength, unshiftArgs, expectThrow, expectLength)
    90   {
    91     print("running testArrayUnshift(" +
    92           startLength + ", " +
    93           "[" + unshiftArgs.join(", ") + "], " +
    94           expectThrow + ", " +
    95           expectLength + ")...");
    96     var a = new Array(startLength);
    97     try
    98     {
    99       unshift.apply(a, unshiftArgs);
   100       if (expectThrow)
   101       {
   102         throw "expected to throw for " +
   103           describe("testArrayUnshift", startLength, unshiftArgs, expectThrow,
   104                    expectLength);
   105       }
   106     }
   107     catch (e)
   108     {
   109       if (!(e instanceof RangeError))
   110       {
   111         throw "unexpected exception type thrown: " + e + " for " +
   112           describe("testArrayUnshift", startLength, unshiftArgs, expectThrow,
   113                    expectLength);
   114       }
   115       if (!expectThrow)
   116       {
   117         throw "unexpected exception " + e + " for " +
   118           describe("testArrayUnshift", startLength, unshiftArgs, expectThrow,
   119                    expectLength);
   120       }
   121     }
   123     if (a.length !== expectLength)
   124     {
   125       throw "unexpected modified-array length for " +
   126         describe("testArrayUnshift", startLength, unshiftArgs, expectThrow,
   127                  expectLength);
   128     }
   130     for (var i = 0, sz = unshiftArgs.length; i < sz; i++)
   131     {
   132       if (a[i] !== unshiftArgs[i])
   133       {
   134         throw "unexpected value at index " + i + " during " +
   135           describe("testArrayUnshift", startLength, unshiftArgs, expectThrow,
   136                    expectLength);
   137       }
   138     }
   139   }
   141   var failed = true;
   143   try
   144   {
   145     var foo = "foo", bar = "bar", baz = "baz";
   147     testArrayPush(4294967294, [foo], false, 4294967295);
   148     testArrayPush(4294967294, [foo, bar], true, 4294967295);
   149     testArrayPush(4294967294, [foo, bar, baz], true, 4294967295);
   150     testArrayPush(4294967295, [foo], true, 4294967295);
   151     testArrayPush(4294967295, [foo, bar], true, 4294967295);
   152     testArrayPush(4294967295, [foo, bar, baz], true, 4294967295);
   154     testArrayUnshift(4294967294, [foo], false, 4294967295);
   155     testArrayUnshift(4294967294, [foo, bar], true, 4294967294);
   156     testArrayUnshift(4294967294, [foo, bar, baz], true, 4294967294);
   157     testArrayUnshift(4294967295, [foo], true, 4294967295);
   158     testArrayUnshift(4294967295, [foo, bar], true, 4294967295);
   159     testArrayUnshift(4294967295, [foo, bar, baz], true, 4294967295);
   161   }
   162   catch (e)
   163   {
   164     actual = e + '';
   165   }
   167   reportCompare(expect, actual, summary);
   169   exitFunc ('test');
   170 }

mercurial