Sat, 03 Jan 2015 20:18:00 +0100
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 = 350621;
8 var summary = 'for-in loops over generator objects';
9 var actual = '';
10 var expect = '';
13 //-----------------------------------------------------------------------------
14 test();
15 //-----------------------------------------------------------------------------
17 function test()
18 {
19 enterFunc ('test');
20 printBugNumber(BUGNUMBER);
21 printStatus (summary);
23 var LOOPS = 500;
25 function gen1() {
26 for (var a = 1; a <= LOOPS; ++a)
27 yield;
28 }
30 function gen2() {
31 for (var b in gen1())
32 yield;
33 }
35 function test_it(RUNS) {
36 for (var c = 1; c <= RUNS; ++c) {
37 var count = 0;
38 for (var d in gen2()) {
39 // The next line is needed to demonstrate the bug.
40 // Note that simply omitting the "x" triggers the bug far less often.
41 Object("x");
42 ++count;
43 }
44 if (count != LOOPS) {
45 print("Test run " + c + ": test failed, count = " + count +
46 ", should be " + LOOPS);
47 var failed = true;
48 }
49 }
50 actual = !failed;
51 if (!failed)
52 {
53 print("Test passed.");
54 }
55 }
57 expect = true;
58 test_it(20);
60 reportCompare(expect, actual, summary);
62 exitFunc ('test');
63 }