| if (this.importScripts) { |
| importScripts('../../../resources/js-test.js'); |
| importScripts('shared.js'); |
| } |
| |
| description("Test IndexedDB transaction rollback."); |
| |
| indexedDBTest(prepareDatabase, setVersionComplete); |
| function prepareDatabase() |
| { |
| db = event.target.result; |
| event.target.transaction.onabort = unexpectedAbortCallback; |
| evalAndLog("db.createObjectStore('myObjectStore')"); |
| shouldBe("db.objectStoreNames.length", "1"); |
| } |
| |
| function setVersionComplete() |
| { |
| debug("setVersionComplete():"); |
| |
| self.transaction = evalAndLog("transaction = db.transaction(['myObjectStore'], 'readwrite')"); |
| transaction.onabort = abortCallback; |
| transaction.oncomplete = unexpectedCompleteCallback; |
| |
| self.store = evalAndLog("store = transaction.objectStore('myObjectStore')"); |
| request = evalAndLog("store.add('rollbackValue', 'rollbackKey123')"); |
| request.onsuccess = addSuccess; |
| request.onerror = unexpectedErrorCallback; |
| } |
| |
| function addSuccess() |
| { |
| debug("addSuccess():"); |
| shouldBeEqualToString("event.target.result", "rollbackKey123"); |
| |
| request = evalAndLog("store.openCursor()"); |
| request.onsuccess = openCursorSuccess; |
| request.onerror = unexpectedErrorCallback; |
| } |
| |
| function openCursorSuccess() |
| { |
| debug("openCursorSuccess():"); |
| self.cursor = evalAndLog("cursor = event.target.result"); |
| |
| transaction.abort(); |
| } |
| |
| function abortCallback() |
| { |
| debug("abortCallback():"); |
| debug('Transaction was aborted.'); |
| |
| self.transaction = evalAndLog("transaction = db.transaction(['myObjectStore'], 'readonly')"); |
| self.store = evalAndLog("store = transaction.objectStore('myObjectStore')"); |
| request = evalAndLog("store.get('rollbackKey123')"); |
| request.onerror = unexpectedErrorCallback; |
| request.onsuccess = getSuccess; |
| } |
| |
| function getSuccess() |
| { |
| debug("getSuccess():"); |
| shouldBe("event.target.result", "undefined"); |
| |
| shouldBeEqualToString("cursor.value", "rollbackValue"); |
| finishJSTest(); |
| } |