69 lines
1.9 KiB
JavaScript
69 lines
1.9 KiB
JavaScript
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();
|
|
}
|