js/src/tests/ecma_5/strict/8.12.5.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
-rw-r--r--

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 /* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
     3 /*
     4  * Any copyright is dedicated to the Public Domain.
     5  * http://creativecommons.org/licenses/publicdomain/
     6  */
     8 function obj() {
     9   var o = {all: 1, nowrite: 1, noconfig: 1, noble: 1};
    10   Object.defineProperty(o, 'nowrite', {writable: false});
    11   Object.defineProperty(o, 'noconfig', {configurable: false});
    12   Object.defineProperty(o, 'noble', {writable: false, configurable: false});
    13   return o;
    14 }
    16 assertEq(testLenientAndStrict('var o = obj(); o.all = 2; o.all',
    17                               returns(2), returns(2)),
    18          true);
    20 assertEq(testLenientAndStrict('var o = obj(); o.nowrite = 2; o.nowrite',
    21                               returns(1), raisesException(TypeError)),
    22          true);
    24 assertEq(testLenientAndStrict('var o = obj(); o.noconfig = 2; o.noconfig',
    25                               returns(2), returns(2)),
    26          true);
    28 assertEq(testLenientAndStrict('var o = obj(); o.noble = 2; o.noble',
    29                               returns(1), raisesException(TypeError)),
    30          true);
    32 assertEq(testLenientAndStrict('obj().nowrite++',
    33                               returns(1), raisesException(TypeError)),
    34          true);
    35 assertEq(testLenientAndStrict('++obj().nowrite',
    36                               returns(2), raisesException(TypeError)),
    37          true);
    38 assertEq(testLenientAndStrict('obj().nowrite--',
    39                               returns(1), raisesException(TypeError)),
    40          true);
    41 assertEq(testLenientAndStrict('--obj().nowrite',
    42                               returns(0), raisesException(TypeError)),
    43          true);
    46 function arr() {
    47   return Object.defineProperties([1, 1, 1, 1],
    48                                  { 1: { writable: false },
    49                                    2: { configurable: false },
    50                                    3: { writable: false, configurable: false }});
    51 }
    53 assertEq(testLenientAndStrict('var a = arr(); a[0] = 2; a[0]',
    54                               returns(2), returns(2)),
    55          true);
    57 assertEq(testLenientAndStrict('var a = arr(); a[1] = 2; a[1]',
    58                               returns(1), raisesException(TypeError)),
    59          true);
    61 assertEq(testLenientAndStrict('var a = arr(); a[2] = 2; a[2]',
    62                               returns(2), returns(2)),
    63          true);
    65 assertEq(testLenientAndStrict('var a = arr(); a[3] = 2; a[3]',
    66                               returns(1), raisesException(TypeError)),
    67          true);
    69 assertEq(testLenientAndStrict('arr()[1]++',
    70                               returns(1), raisesException(TypeError)),
    71          true);
    72 assertEq(testLenientAndStrict('++arr()[1]',
    73                               returns(2), raisesException(TypeError)),
    74          true);
    75 assertEq(testLenientAndStrict('arr()[1]--',
    76                               returns(1), raisesException(TypeError)),
    77          true);
    78 assertEq(testLenientAndStrict('--arr()[1]',
    79                               returns(0), raisesException(TypeError)),
    80          true);
    82 reportCompare(true, true);

mercurial