js/src/tests/js1_7/extensions/regress-346642-06.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 -*- */
     2 /* This Source Code Form is subject to the terms of the Mozilla Public
     3  * License, v. 2.0. If a copy of the MPL was not distributed with this
     4  * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
     6 //-----------------------------------------------------------------------------
     7 var BUGNUMBER = 346642;
     8 var summary = 'decompilation of destructuring assignment';
     9 var actual = '';
    10 var expect = '';
    13 //-----------------------------------------------------------------------------
    14 test();
    15 //-----------------------------------------------------------------------------
    17 function test()
    18 {
    19   enterFunc ('test');
    20   printBugNumber(BUGNUMBER);
    21   printStatus (summary);
    23   expect = 3;
    24   actual = '';
    25   "" + function() { [] = 3 }; actual = 3;
    26   actual = 3;
    27   reportCompare(expect, actual, summary + ': 1');
    29   try
    30   {
    31     var z = 6;
    32     var f = eval('(function (){for(let [] = []; false;) let z; return z})');
    33     expect =  f();
    34     actual = eval("("+f+")")()
    35       reportCompare(expect, actual, summary + ': 2');
    36   }
    37   catch(ex)
    38   {
    39     // See https://bugzilla.mozilla.org/show_bug.cgi?id=408957
    40     var summarytrunk = 'let declaration must be direct child of block or top-level implicit block';
    41     expect = 'SyntaxError';
    42     actual = ex.name;
    43     reportCompare(expect, actual, summarytrunk);
    44   }
    46   expect = 3;
    47   actual = '';
    48   "" + function () { for(;; [[a]] = [5]) { } }; actual = 3;
    49   reportCompare(expect, actual, summary + ': 3');
    51   expect = 3;
    52   actual = '';
    53   f = function () { return { set x([a]) { yield; } } }
    54   var obj = f();
    55   uneval(obj); actual = 3;
    56   reportCompare(expect, actual, summary + ': 4');
    58   expect = 3;
    59   actual = '';
    60   "" + function () { [y([a]=b)] = z }; actual = 3;
    61   reportCompare(expect, actual, summary + ': 5');
    63   expect = 3;
    64   actual = '';
    65   "" + function () { for(;; ([[,]] = p)) { } }; actual = 3;
    66   reportCompare(expect, actual, summary + ': 6');
    68   expect = 3;
    69   actual = '';
    70   actual = 1; try {for(x in (function ([y]) { })() ) { }}catch(ex){} actual = 3;
    71   reportCompare(expect, actual, summary + ': 7');
    73   exitFunc ('test');
    74 }

mercurial