js/src/tests/js1_8/genexps/regress-349331.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 = 349331;
michael@0 8 var summary = 'generator.close without GeneratorExit';
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 var catch1, catch2, catch3, finally1, finally2, finally3;
michael@0 24 var iter;
michael@0 25
michael@0 26 function gen()
michael@0 27 {
michael@0 28 yield 1;
michael@0 29 try {
michael@0 30 try {
michael@0 31 try {
michael@0 32 yield 2;
michael@0 33 } catch (e) {
michael@0 34 catch1 = true;
michael@0 35 } finally {
michael@0 36 finally1 = true;
michael@0 37 }
michael@0 38 } catch (e) {
michael@0 39 catch2 = true;
michael@0 40 } finally {
michael@0 41 finally2 = true;
michael@0 42 }
michael@0 43 } catch (e) {
michael@0 44 catch3 = true;
michael@0 45 } finally {
michael@0 46 finally3 = true;
michael@0 47 }
michael@0 48 }
michael@0 49
michael@0 50 // test explicit close call
michael@0 51 catch1 = catch2 = catch3 = finally1 = finally2 = finally3 = false;
michael@0 52 iter = gen();
michael@0 53 iter.next();
michael@0 54 iter.next();
michael@0 55 iter.close();
michael@0 56
michael@0 57 var passed = !catch1 && !catch2 && !catch3 && finally1 && finally2 &&
michael@0 58 finally3;
michael@0 59
michael@0 60 if (!passed) {
michael@0 61 print("Failed!");
michael@0 62 print("catch1=" + catch1 + " catch2=" + catch2 + " catch3=" +
michael@0 63 catch3);
michael@0 64 print("finally1=" + finally1 + " finally2=" + finally2 +
michael@0 65 " finally3=" + finally3);
michael@0 66 }
michael@0 67
michael@0 68 reportCompare(true, passed, 'test explicit close call');
michael@0 69
michael@0 70 // test for-in invoked close
michael@0 71 catch1 = catch2 = catch3 = finally1 = finally2 = finally3 = false;
michael@0 72 iter = gen();
michael@0 73 for (var i in iter) {
michael@0 74 if (i == 2)
michael@0 75 break;
michael@0 76 }
michael@0 77
michael@0 78 var passed = !catch1 && !catch2 && !catch3 && finally1 && finally2 &&
michael@0 79 finally3;
michael@0 80
michael@0 81 if (!passed) {
michael@0 82 print("Failed!");
michael@0 83 print("catch1=" + catch1 + " catch2=" + catch2 + " catch3=" +
michael@0 84 catch3);
michael@0 85 print("finally1=" + finally1 + " finally2=" + finally2 +
michael@0 86 " finally3="+finally3);
michael@0 87 }
michael@0 88 reportCompare(true, passed, 'test GC-invoke close');
michael@0 89
michael@0 90 reportCompare(expect, actual, summary);
michael@0 91
michael@0 92 exitFunc ('test');
michael@0 93 }

mercurial