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 15 matching lines...) Expand all Loading... |
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 debug("request2 received error event"); | 34 debug("request2 received error event"); |
35 shouldBe("++state", "2"); | 35 shouldBe("++state", "2"); |
| 36 waitForError(/ConstraintError/, function() { |
| 37 shouldBe("++state", "3"); |
| 38 }); |
36 }; | 39 }; |
37 | 40 |
38 trans.oncomplete = unexpectedCompleteCallback; | 41 trans.oncomplete = unexpectedCompleteCallback; |
39 trans.onabort = function () { | 42 trans.onabort = function () { |
40 debug("transaction aborted"); | 43 debug("transaction aborted"); |
41 shouldBe("++state", "3"); | 44 shouldBe("++state", "4"); |
42 shouldBe("trans.error.name", "'ConstraintError'"); | 45 shouldBe("trans.error.name", "'ConstraintError'"); |
43 verifyCreateThenPut(); | 46 verifyCreateThenPut(); |
44 }; | 47 }; |
45 } | 48 } |
46 | 49 |
47 function verifyCreateThenPut() | 50 function verifyCreateThenPut() |
48 { | 51 { |
49 debug(""); | 52 debug(""); |
50 debug("Verify that uniqueness constraints are enforced when index is created
before puts:"); | 53 debug("Verify that uniqueness constraints are enforced when index is created
before puts:"); |
51 | 54 |
(...skipping 17 matching lines...) Expand all Loading... |
69 request1.onerror = unexpectedErrorCallback; | 72 request1.onerror = unexpectedErrorCallback; |
70 request1.onsuccess = function () { | 73 request1.onsuccess = function () { |
71 debug("request1 (index2) received success event"); | 74 debug("request1 (index2) received success event"); |
72 shouldBe("++state", "1"); | 75 shouldBe("++state", "1"); |
73 }; | 76 }; |
74 | 77 |
75 request2.onsuccess = unexpectedSuccessCallback; | 78 request2.onsuccess = unexpectedSuccessCallback; |
76 request2.onerror = function () { | 79 request2.onerror = function () { |
77 debug("request2 (index2) received error event"); | 80 debug("request2 (index2) received error event"); |
78 shouldBe("++state", "2"); | 81 shouldBe("++state", "2"); |
| 82 waitForError(/ConstraintError/, function() { |
| 83 shouldBe("++state", "3"); |
| 84 }); |
79 }; | 85 }; |
80 | 86 |
81 trans.oncomplete = unexpectedCompleteCallback; | 87 trans.oncomplete = unexpectedCompleteCallback; |
82 trans.onabort = function () { | 88 trans.onabort = function () { |
83 debug("transaction aborted"); | 89 debug("transaction aborted"); |
84 shouldBe("++state", "3"); | 90 shouldBe("++state", "4"); |
85 shouldBe("trans.error.name", "'ConstraintError'"); | 91 shouldBe("trans.error.name", "'ConstraintError'"); |
86 }; | 92 }; |
87 }; | 93 }; |
88 } | 94 } |
89 | 95 |
90 function verifyPutThenCreate() | 96 function verifyPutThenCreate(evt) |
91 { | 97 { |
| 98 evt.preventDefault(); |
| 99 |
92 debug(""); | 100 debug(""); |
93 debug("Verify that uniqueness constraints are enforced when index is created
after puts:"); | 101 debug("Verify that uniqueness constraints are enforced when index is created
after puts:"); |
94 | 102 |
95 request = evalAndLog("indexedDB.open(dbname, 3)"); | 103 request = evalAndLog("indexedDB.open(dbname, 3)"); |
96 request.onerror = verifyPutThenCreateThenPut; | 104 request.onerror = verifyPutThenCreateThenPut; |
97 request.onblocked = unexpectedBlockedCallback; | 105 request.onblocked = unexpectedBlockedCallback; |
98 request.onsuccess = unexpectedSuccessCallback; | 106 request.onsuccess = unexpectedSuccessCallback; |
99 request.onupgradeneeded = function() { | 107 request.onupgradeneeded = function() { |
100 connection = request.result; | 108 connection = request.result; |
101 trans = request.transaction; | 109 trans = request.transaction; |
(...skipping 20 matching lines...) Expand all Loading... |
122 | 130 |
123 trans.oncomplete = unexpectedCompleteCallback; | 131 trans.oncomplete = unexpectedCompleteCallback; |
124 trans.onabort = function () { | 132 trans.onabort = function () { |
125 debug("transaction aborted"); | 133 debug("transaction aborted"); |
126 shouldBe("++state", "3"); | 134 shouldBe("++state", "3"); |
127 shouldBe("trans.error.name", "'ConstraintError'"); | 135 shouldBe("trans.error.name", "'ConstraintError'"); |
128 }; | 136 }; |
129 }; | 137 }; |
130 } | 138 } |
131 | 139 |
132 function verifyPutThenCreateThenPut() | 140 function verifyPutThenCreateThenPut(evt) |
133 { | 141 { |
| 142 evt.preventDefault(); |
| 143 |
134 debug(""); | 144 debug(""); |
135 debug("Verify that uniqueness constraints are enforced when index is created
between puts:"); | 145 debug("Verify that uniqueness constraints are enforced when index is created
between puts:"); |
136 | 146 |
137 request = evalAndLog("indexedDB.open(dbname, 4)"); | 147 request = evalAndLog("indexedDB.open(dbname, 4)"); |
138 request.onerror = finishJSTest; | 148 request.onerror = finishJSTest; |
139 request.onblocked = unexpectedBlockedCallback; | 149 request.onblocked = unexpectedBlockedCallback; |
140 request.onsuccess = unexpectedSuccessCallback; | 150 request.onsuccess = unexpectedSuccessCallback; |
141 request.onupgradeneeded = function() { | 151 request.onupgradeneeded = function() { |
142 connection = request.result; | 152 connection = request.result; |
143 trans = request.transaction; | 153 trans = request.transaction; |
144 | 154 |
145 evalAndLog("deleteAllObjectStores(connection)"); | 155 evalAndLog("deleteAllObjectStores(connection)"); |
146 | 156 |
147 evalAndLog("store = connection.createObjectStore('store')"); | 157 evalAndLog("store = connection.createObjectStore('store')"); |
148 evalAndLog("request1 = store.put({name: 'alice'}, 1)"); | 158 evalAndLog("request1 = store.put({name: 'alice'}, 1)"); |
149 evalAndLog("store.createIndex('index4', 'name', {unique: true})"); | 159 evalAndLog("store.createIndex('index4', 'name', {unique: true})"); |
150 evalAndLog("request2 = store.put({name: 'alice'}, 2)"); | 160 evalAndLog("request2 = store.put({name: 'alice'}, 2)"); |
151 evalAndLog("state = 0"); | 161 evalAndLog("state = 0"); |
152 | 162 |
153 request1.onerror = unexpectedErrorCallback; | 163 request1.onerror = unexpectedErrorCallback; |
154 request1.onsuccess = function () { | 164 request1.onsuccess = function () { |
155 debug("request1 received success event"); | 165 debug("request1 received success event"); |
156 shouldBe("++state", "1"); | 166 shouldBe("++state", "1"); |
157 }; | 167 }; |
158 | 168 |
159 request2.onsuccess = unexpectedSuccessCallback; | 169 request2.onsuccess = unexpectedSuccessCallback; |
160 request2.onerror = function () { | 170 request2.onerror = function () { |
161 debug("request2 received error event"); | 171 debug("request2 received error event"); |
162 shouldBe("++state", "2"); | 172 shouldBe("++state", "2"); |
| 173 waitForError(/ConstraintError/, function() { |
| 174 shouldBe("++state", "3"); |
| 175 }); |
163 }; | 176 }; |
164 | 177 |
165 trans.oncomplete = unexpectedCompleteCallback; | 178 trans.oncomplete = unexpectedCompleteCallback; |
166 trans.onabort = function () { | 179 trans.onabort = function () { |
167 debug("transaction aborted"); | 180 debug("transaction aborted"); |
168 shouldBe("++state", "3"); | 181 shouldBe("++state", "4"); |
169 shouldBe("trans.error.name", "'ConstraintError'"); | 182 shouldBe("trans.error.name", "'ConstraintError'"); |
170 }; | 183 }; |
171 }; | 184 }; |
172 } | 185 } |
173 | 186 |
174 </script> | 187 </script> |
OLD | NEW |