OLD | NEW |
1 <!DOCTYPE html> | 1 <!DOCTYPE html> |
2 <script src="../../resources/js-test.js"></script> | 2 <script src="../../resources/js-test.js"></script> |
3 <script src="resources/shared.js"></script> | 3 <script src="resources/shared.js"></script> |
4 <script> | 4 <script> |
5 | 5 |
6 description("Verify edge cases that lazy index population in an IndexedDB implem
entation might reveal."); | 6 description("Verify edge cases that lazy index population in an IndexedDB implem
entation might reveal."); |
7 | 7 |
8 indexedDBTest(prepareDatabase, verifyPreExistingIndex); | 8 indexedDBTest(prepareDatabase, verifyPreExistingIndex); |
9 function prepareDatabase() | 9 function prepareDatabase() |
10 { | 10 { |
(...skipping 13 matching lines...) Expand all Loading... |
24 evalAndLog("state = 0"); | 24 evalAndLog("state = 0"); |
25 | 25 |
26 request1.onerror = unexpectedErrorCallback; | 26 request1.onerror = unexpectedErrorCallback; |
27 request1.onsuccess = function () { | 27 request1.onsuccess = function () { |
28 debug("request1 received success event"); | 28 debug("request1 received success event"); |
29 shouldBe("++state", "1"); | 29 shouldBe("++state", "1"); |
30 }; | 30 }; |
31 | 31 |
32 request2.onsuccess = unexpectedSuccessCallback; | 32 request2.onsuccess = unexpectedSuccessCallback; |
33 request2.onerror = function () { | 33 request2.onerror = function () { |
| 34 expectError(); |
34 debug("request2 received error event"); | 35 debug("request2 received error event"); |
35 shouldBe("++state", "2"); | 36 shouldBe("++state", "2"); |
36 }; | 37 }; |
37 | 38 |
38 trans.oncomplete = unexpectedCompleteCallback; | 39 trans.oncomplete = unexpectedCompleteCallback; |
39 trans.onabort = function () { | 40 trans.onabort = function () { |
40 debug("transaction aborted"); | 41 debug("transaction aborted"); |
41 shouldBe("++state", "3"); | 42 shouldBe("++state", "3"); |
42 shouldBe("trans.error.name", "'ConstraintError'"); | 43 shouldBe("trans.error.name", "'ConstraintError'"); |
43 verifyCreateThenPut(); | 44 verifyCreateThenPut(); |
(...skipping 23 matching lines...) Expand all Loading... |
67 evalAndLog("state = 0"); | 68 evalAndLog("state = 0"); |
68 | 69 |
69 request1.onerror = unexpectedErrorCallback; | 70 request1.onerror = unexpectedErrorCallback; |
70 request1.onsuccess = function () { | 71 request1.onsuccess = function () { |
71 debug("request1 (index2) received success event"); | 72 debug("request1 (index2) received success event"); |
72 shouldBe("++state", "1"); | 73 shouldBe("++state", "1"); |
73 }; | 74 }; |
74 | 75 |
75 request2.onsuccess = unexpectedSuccessCallback; | 76 request2.onsuccess = unexpectedSuccessCallback; |
76 request2.onerror = function () { | 77 request2.onerror = function () { |
| 78 expectError(); |
77 debug("request2 (index2) received error event"); | 79 debug("request2 (index2) received error event"); |
78 shouldBe("++state", "2"); | 80 shouldBe("++state", "2"); |
79 }; | 81 }; |
80 | 82 |
81 trans.oncomplete = unexpectedCompleteCallback; | 83 trans.oncomplete = unexpectedCompleteCallback; |
82 trans.onabort = function () { | 84 trans.onabort = function () { |
83 debug("transaction aborted"); | 85 debug("transaction aborted"); |
84 shouldBe("++state", "3"); | 86 shouldBe("++state", "3"); |
85 shouldBe("trans.error.name", "'ConstraintError'"); | 87 shouldBe("trans.error.name", "'ConstraintError'"); |
86 }; | 88 }; |
87 }; | 89 }; |
88 } | 90 } |
89 | 91 |
90 function verifyPutThenCreate() | 92 function verifyPutThenCreate(evt) |
91 { | 93 { |
| 94 evt.preventDefault(); |
| 95 |
92 debug(""); | 96 debug(""); |
93 debug("Verify that uniqueness constraints are enforced when index is created
after puts:"); | 97 debug("Verify that uniqueness constraints are enforced when index is created
after puts:"); |
94 | 98 |
95 request = evalAndLog("indexedDB.open(dbname, 3)"); | 99 request = evalAndLog("indexedDB.open(dbname, 3)"); |
96 request.onerror = verifyPutThenCreateThenPut; | 100 request.onerror = verifyPutThenCreateThenPut; |
97 request.onblocked = unexpectedBlockedCallback; | 101 request.onblocked = unexpectedBlockedCallback; |
98 request.onsuccess = unexpectedSuccessCallback; | 102 request.onsuccess = unexpectedSuccessCallback; |
99 request.onupgradeneeded = function() { | 103 request.onupgradeneeded = function() { |
100 connection = request.result; | 104 connection = request.result; |
101 trans = request.transaction; | 105 trans = request.transaction; |
(...skipping 20 matching lines...) Expand all Loading... |
122 | 126 |
123 trans.oncomplete = unexpectedCompleteCallback; | 127 trans.oncomplete = unexpectedCompleteCallback; |
124 trans.onabort = function () { | 128 trans.onabort = function () { |
125 debug("transaction aborted"); | 129 debug("transaction aborted"); |
126 shouldBe("++state", "3"); | 130 shouldBe("++state", "3"); |
127 shouldBe("trans.error.name", "'ConstraintError'"); | 131 shouldBe("trans.error.name", "'ConstraintError'"); |
128 }; | 132 }; |
129 }; | 133 }; |
130 } | 134 } |
131 | 135 |
132 function verifyPutThenCreateThenPut() | 136 function verifyPutThenCreateThenPut(evt) |
133 { | 137 { |
| 138 evt.preventDefault(); |
| 139 |
134 debug(""); | 140 debug(""); |
135 debug("Verify that uniqueness constraints are enforced when index is created
between puts:"); | 141 debug("Verify that uniqueness constraints are enforced when index is created
between puts:"); |
136 | 142 |
137 request = evalAndLog("indexedDB.open(dbname, 4)"); | 143 request = evalAndLog("indexedDB.open(dbname, 4)"); |
138 request.onerror = finishJSTest; | 144 request.onerror = finishJSTest; |
139 request.onblocked = unexpectedBlockedCallback; | 145 request.onblocked = unexpectedBlockedCallback; |
140 request.onsuccess = unexpectedSuccessCallback; | 146 request.onsuccess = unexpectedSuccessCallback; |
141 request.onupgradeneeded = function() { | 147 request.onupgradeneeded = function() { |
142 connection = request.result; | 148 connection = request.result; |
143 trans = request.transaction; | 149 trans = request.transaction; |
144 | 150 |
145 evalAndLog("deleteAllObjectStores(connection)"); | 151 evalAndLog("deleteAllObjectStores(connection)"); |
146 | 152 |
147 evalAndLog("store = connection.createObjectStore('store')"); | 153 evalAndLog("store = connection.createObjectStore('store')"); |
148 evalAndLog("request1 = store.put({name: 'alice'}, 1)"); | 154 evalAndLog("request1 = store.put({name: 'alice'}, 1)"); |
149 evalAndLog("store.createIndex('index4', 'name', {unique: true})"); | 155 evalAndLog("store.createIndex('index4', 'name', {unique: true})"); |
150 evalAndLog("request2 = store.put({name: 'alice'}, 2)"); | 156 evalAndLog("request2 = store.put({name: 'alice'}, 2)"); |
151 evalAndLog("state = 0"); | 157 evalAndLog("state = 0"); |
152 | 158 |
153 request1.onerror = unexpectedErrorCallback; | 159 request1.onerror = unexpectedErrorCallback; |
154 request1.onsuccess = function () { | 160 request1.onsuccess = function () { |
155 debug("request1 received success event"); | 161 debug("request1 received success event"); |
156 shouldBe("++state", "1"); | 162 shouldBe("++state", "1"); |
157 }; | 163 }; |
158 | 164 |
159 request2.onsuccess = unexpectedSuccessCallback; | 165 request2.onsuccess = unexpectedSuccessCallback; |
160 request2.onerror = function () { | 166 request2.onerror = function () { |
| 167 expectError(); |
161 debug("request2 received error event"); | 168 debug("request2 received error event"); |
162 shouldBe("++state", "2"); | 169 shouldBe("++state", "2"); |
163 }; | 170 }; |
164 | 171 |
165 trans.oncomplete = unexpectedCompleteCallback; | 172 trans.oncomplete = unexpectedCompleteCallback; |
166 trans.onabort = function () { | 173 trans.onabort = function () { |
167 debug("transaction aborted"); | 174 debug("transaction aborted"); |
168 shouldBe("++state", "3"); | 175 shouldBe("++state", "3"); |
169 shouldBe("trans.error.name", "'ConstraintError'"); | 176 shouldBe("trans.error.name", "'ConstraintError'"); |
170 }; | 177 }; |
171 }; | 178 }; |
172 } | 179 } |
173 | 180 |
174 </script> | 181 </script> |
OLD | NEW |