| 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 |