| OLD | NEW |
| 1 if (this.importScripts) { | 1 if (this.importScripts) { |
| 2 importScripts('../../../resources/js-test.js'); | 2 importScripts('../../../resources/js-test.js'); |
| 3 importScripts('shared.js'); | 3 importScripts('shared.js'); |
| 4 } | 4 } |
| 5 | 5 |
| 6 description("Ensure that aborted VERSION_CHANGE transactions are completely roll
ed back"); | 6 description("Ensure that aborted VERSION_CHANGE transactions are completely roll
ed back"); |
| 7 | 7 |
| 8 self.isOnErrorTest = true; |
| 9 |
| 8 indexedDBTest(prepareDatabase, setVersion1Complete); | 10 indexedDBTest(prepareDatabase, setVersion1Complete); |
| 9 function prepareDatabase() | 11 function prepareDatabase() |
| 10 { | 12 { |
| 11 db = event.target.result; | 13 db = event.target.result; |
| 12 trans = event.target.transaction; | 14 trans = event.target.transaction; |
| 13 shouldBeTrue("trans instanceof IDBTransaction"); | 15 shouldBeTrue("trans instanceof IDBTransaction"); |
| 14 trans.onabort = unexpectedAbortCallback; | 16 trans.onabort = unexpectedAbortCallback; |
| 15 trans.onerror = unexpectedErrorCallback; | 17 trans.onerror = unexpectedErrorCallback; |
| 16 | 18 |
| 17 evalAndLog("store = db.createObjectStore('store1')"); | 19 evalAndLog("store = db.createObjectStore('store1')"); |
| 18 } | 20 } |
| 19 | 21 |
| 20 function setVersion1Complete() | 22 function setVersion1Complete() |
| 21 { | 23 { |
| 22 debug("setVersion1 complete"); | 24 debug("setVersion1 complete"); |
| 23 shouldBe("db.version", "1"); | 25 shouldBe("db.version", "1"); |
| 24 debug(""); | 26 debug(""); |
| 25 db.close(); | 27 db.close(); |
| 26 | 28 |
| 27 evalAndLog("vcreq = indexedDB.open(dbname, 2)"); | 29 evalAndLog("vcreq = indexedDB.open(dbname, 2)"); |
| 28 vcreq.onupgradeneeded = inSetVersion2; | 30 vcreq.onupgradeneeded = inSetVersion2; |
| 29 vcreq.onerror = setVersion2Abort; | 31 vcreq.onerror = setVersion2Abort; |
| 30 vcreq.onblocked = unexpectedBlockedCallback; | 32 vcreq.onblocked = unexpectedBlockedCallback; |
| 31 vcreq.onsuccess = unexpectedSuccessCallback; | 33 vcreq.onsuccess = unexpectedSuccessCallback; |
| 34 expectError(); |
| 32 } | 35 } |
| 33 | 36 |
| 34 function inSetVersion2() | 37 function inSetVersion2() |
| 35 { | 38 { |
| 36 db = event.target.result; | 39 db = event.target.result; |
| 37 debug("setVersion2() callback"); | 40 debug("setVersion2() callback"); |
| 38 shouldBe("db.version", "2"); | 41 shouldBe("db.version", "2"); |
| 39 shouldBeTrue("vcreq.transaction instanceof IDBTransaction"); | 42 shouldBeTrue("vcreq.transaction instanceof IDBTransaction"); |
| 40 trans = vcreq.result; | 43 trans = vcreq.result; |
| 41 trans.onerror = unexpectedErrorCallback; | 44 trans.onerror = unexpectedErrorCallback; |
| 42 trans.oncomplete = unexpectedCompleteCallback; | 45 trans.oncomplete = unexpectedCompleteCallback; |
| 43 | 46 |
| 44 evalAndLog("store = db.deleteObjectStore('store1')"); | 47 evalAndLog("store = db.deleteObjectStore('store1')"); |
| 45 evalAndLog("store = db.createObjectStore('store2')"); | 48 evalAndLog("store = db.createObjectStore('store2')"); |
| 46 | 49 |
| 47 // Ensure the test harness error handler is not invoked. | |
| 48 self.originalWindowOnError = self.onerror; | |
| 49 self.onerror = null; | |
| 50 | |
| 51 debug("raising exception"); | 50 debug("raising exception"); |
| 52 throw new Error("This should *NOT* be caught!"); | 51 throw new Error("This should *NOT* be caught!"); |
| 53 } | 52 } |
| 54 | 53 |
| 55 function setVersion2Abort() | 54 function setVersion2Abort(evt) |
| 56 { | 55 { |
| 57 debug(""); | 56 debug(""); |
| 58 debug("setVersion2Abort() callback"); | 57 debug("setVersion2Abort() callback"); |
| 58 evt.preventDefault(); |
| 59 db.close(); |
| 59 | 60 |
| 60 // Restore test harness error handler. | |
| 61 self.onerror = self.originalWindowOnError; | |
| 62 db.close(); | |
| 63 evalAndLog("request = indexedDB.open(dbname)"); | 61 evalAndLog("request = indexedDB.open(dbname)"); |
| 64 request.onblocked = unexpectedBlockedCallback; | 62 request.onblocked = unexpectedBlockedCallback; |
| 65 request.onupgradeneeded = unexpectedUpgradeNeededCallback; | 63 request.onupgradeneeded = unexpectedUpgradeNeededCallback; |
| 66 request.onerror = unexpectedErrorCallback; | 64 request.onerror = unexpectedErrorCallback; |
| 67 request.onsuccess = function (e) { | 65 request.onsuccess = function (e) { |
| 68 db = event.target.result; | 66 db = event.target.result; |
| 69 shouldBe("db.version", "1"); | 67 shouldBe("db.version", "1"); |
| 70 shouldBeTrue("db.objectStoreNames.contains('store1')"); | 68 shouldBeTrue("db.objectStoreNames.contains('store1')"); |
| 71 shouldBeFalse("db.objectStoreNames.contains('store2')"); | 69 shouldBeFalse("db.objectStoreNames.contains('store2')"); |
| 72 | 70 |
| 73 finishJSTest(); | 71 finishJSTest(); |
| 74 } | 72 }; |
| 75 } | 73 } |
| OLD | NEW |