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 <!--
2 Any copyright is dedicated to the Public Domain.
3 http://creativecommons.org/publicdomain/zero/1.0/
4 -->
5 <html>
6 <head>
7 <title>Indexed Database Property Test</title>
9 <script type="text/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
10 <link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
12 <script type="text/javascript;version=1.7">
13 let testGenerator = testSteps();
15 function ok(val, message) {
16 val = val ? "true" : "false";
17 window.parent.postMessage("SimpleTest.ok(" + val + ", '" + message +
18 "');", "*");
19 }
21 function is(a, b, message) {
22 ok(a == b, message);
23 }
25 function grabEventAndContinueHandler(event) {
26 testGenerator.send(event);
27 }
29 function errorHandler(event) {
30 ok(false, "indexedDB error, code " + event.target.error.name);
31 finishTest();
32 }
34 function unexpectedSuccessHandler(event) {
35 ok(false, "got success when it was not expected!");
36 finishTest();
37 }
39 function finishTest() {
40 // Let window.onerror have a chance to fire
41 setTimeout(function() {
42 setTimeout(function() {
43 testGenerator.close();
44 window.parent.postMessage("SimpleTest.finish();", "*");
45 }, 0);
46 }, 0);
47 }
49 window.onerror = function() {
50 return false;
51 };
53 function testSteps() {
54 // Test 1: Throwing an exception in an upgradeneeded handler should
55 // abort the versionchange transaction and fire an error at the request.
56 let request = indexedDB.open(window.location.pathname, 1);
57 request.onerror = errorHandler;
58 request.onsuccess = unexpectedSuccessHandler;
59 request.onupgradeneeded = function () {
60 let transaction = request.transaction;
61 transaction.oncomplete = unexpectedSuccessHandler;
62 transaction.onabort = grabEventAndContinueHandler
63 throw "STOP";
64 };
66 let event = yield undefined;
67 is(event.type, "abort",
68 "Throwing during an upgradeneeded event should abort the transaction.");
69 is(event.target.error.name, "AbortError", "Got AbortError object");
71 request.onerror = grabEventAndContinueHandler;
72 event = yield undefined;
74 is(event.type, "error",
75 "Throwing during an upgradeneeded event should fire an error.");
77 // Test 2: Throwing during a request's success handler should abort the
78 // transaction.
79 let request = indexedDB.open(window.location.pathname, 1);
80 request.onerror = errorHandler;
81 request.onblocked = errorHandler;
82 request.onupgradeneeded = grabEventAndContinueHandler;
83 request.onsuccess = unexpectedSuccessHandler;
84 let openrequest = request;
85 let event = yield undefined;
87 request.onupgradeneeded = unexpectedSuccessHandler;
89 let db = event.target.result;
90 db.onerror = function(event) {
91 event.preventDefault();
92 };
94 event.target.transaction.oncomplete = unexpectedSuccessHandler;
95 event.target.transaction.onabort = grabEventAndContinueHandler;
97 is(db.version, 1, "Correct version");
98 is(db.objectStoreNames.length, 0, "Correct objectStoreNames length");
100 let objectStore = db.createObjectStore("foo");
102 is(db.objectStoreNames.length, 1, "Correct objectStoreNames length");
103 ok(db.objectStoreNames.contains("foo"), "Has correct objectStore");
105 request = objectStore.add({}, 1);
106 request.onsuccess = function(event) {
107 throw "foo";
108 };
110 event = yield undefined;
112 is(event.type, "abort", "Got transaction abort event");
113 is(event.target.error.name, "AbortError", "Got AbortError object");
114 openrequest.onerror = grabEventAndContinueHandler;
116 event = yield undefined;
118 is(event.type, "error", "Got IDBOpenDBRequest error event");
119 is(event.target, openrequest, "Right event target");
120 is(event.target.error.name, "AbortError", "Right error name");
122 // Test 3: Throwing during a request's error handler should abort the
123 // transaction, even if preventDefault is called on the error event.
124 let request = indexedDB.open(window.location.pathname, 1);
125 request.onerror = errorHandler;
126 request.onblocked = errorHandler;
127 request.onupgradeneeded = grabEventAndContinueHandler;
128 request.onsuccess = unexpectedSuccessHandler;
129 let openrequest = request;
130 let event = yield undefined;
132 request.onupgradeneeded = unexpectedSuccessHandler;
134 let db = event.target.result;
135 db.onerror = function(event) {
136 event.preventDefault();
137 };
139 event.target.transaction.oncomplete = unexpectedSuccessHandler;
140 event.target.transaction.onabort = grabEventAndContinueHandler;
142 is(db.version, 1, "Correct version");
143 is(db.objectStoreNames.length, 0, "Correct objectStoreNames length");
145 let objectStore = db.createObjectStore("foo");
147 is(db.objectStoreNames.length, 1, "Correct objectStoreNames length");
148 ok(db.objectStoreNames.contains("foo"), "Has correct objectStore");
150 request = objectStore.add({}, 1);
151 request.onerror = errorHandler;
152 request = objectStore.add({}, 1);
153 request.onsuccess = unexpectedSuccessHandler;
154 request.onerror = function (event) {
155 event.preventDefault();
156 throw "STOP";
157 };
159 event = yield undefined;
161 is(event.type, "abort", "Got transaction abort event");
162 is(event.target.error.name, "AbortError", "Got AbortError object");
163 openrequest.onerror = grabEventAndContinueHandler;
165 event = yield undefined;
167 is(event.type, "error", "Got IDBOpenDBRequest error event");
168 is(event.target, openrequest, "Right event target");
169 is(event.target.error.name, "AbortError", "Right error name");
171 finishTest();
172 yield undefined;
173 }
174 </script>
176 </head>
178 <body onload="testGenerator.next();"></body>
180 </html>