js/src/tests/js1_7/extensions/regress-351070-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
-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.

michael@0 1 /* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
michael@0 2 /* This Source Code Form is subject to the terms of the Mozilla Public
michael@0 3 * License, v. 2.0. If a copy of the MPL was not distributed with this
michael@0 4 * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
michael@0 5
michael@0 6 //-----------------------------------------------------------------------------
michael@0 7 var BUGNUMBER = 351070;
michael@0 8 var summary = 'decompilation of let declaration should not change scope';
michael@0 9 var actual = '';
michael@0 10 var expect = '';
michael@0 11
michael@0 12
michael@0 13 //-----------------------------------------------------------------------------
michael@0 14 test();
michael@0 15 //-----------------------------------------------------------------------------
michael@0 16
michael@0 17 function test()
michael@0 18 {
michael@0 19 enterFunc ('test');
michael@0 20 printBugNumber(BUGNUMBER);
michael@0 21 printStatus (summary);
michael@0 22
michael@0 23 try
michael@0 24 {
michael@0 25 var pfx = "(function f() { var n = 2, a = 2; ",
michael@0 26 decl = " let a = 3;",
michael@0 27 end = " return a; })";
michael@0 28
michael@0 29 var table = [
michael@0 30 ["if (!!true)", ""],
michael@0 31 ["if (!!true)", " else foopy();"],
michael@0 32 ["if (!true); else", ""],
michael@0 33 ["do ", " while (false);"],
michael@0 34 ["while (--n)", ""],
michael@0 35 ["for (--n;n;--n)", ""],
michael@0 36 ["for (a in this)", ""],
michael@0 37 ["with (this)", ""],
michael@0 38 ];
michael@0 39
michael@0 40 expect = 3;
michael@0 41
michael@0 42 for (i = 0; i < table.length; i++) {
michael@0 43 var src = pfx + table[i][0] + decl + table[i][1] + end;
michael@0 44 print('src: ' + src);
michael@0 45 var fun = eval(src);
michael@0 46 var testval = fun();
michael@0 47 reportCompare(expect, testval, summary + ': ' + src);
michael@0 48 if (testval != expect) {
michael@0 49 break;
michael@0 50 }
michael@0 51 print('uneval: ' + uneval(fun));
michael@0 52 var declsrc = '(' +
michael@0 53 src.slice(1, -1).replace('function f', 'function f' + i) + ')';
michael@0 54 print('declsrc: ' + declsrc);
michael@0 55 this['f' + i] = eval(declsrc);
michael@0 56 print('f' + i + ': ' + this['f' + i]);
michael@0 57 }
michael@0 58 }
michael@0 59 catch(ex)
michael@0 60 {
michael@0 61 // See https://bugzilla.mozilla.org/show_bug.cgi?id=408957
michael@0 62 summary = 'let declaration must be direct child of block or top-level implicit block';
michael@0 63 expect = 'SyntaxError';
michael@0 64 actual = ex.name;
michael@0 65 reportCompare(expect, actual, summary);
michael@0 66 }
michael@0 67
michael@0 68 exitFunc ('test');
michael@0 69 }

mercurial