From a94275402997c11dd2e778633dacf4b7e630a35d Mon Sep 17 00:00:00 2001 From: Ben Murdoch Date: Fri, 22 Oct 2010 13:02:20 +0100 Subject: Merge WebKit at r70209: Initial merge by Git Change-Id: Id23a68efa36e9d1126bcce0b137872db00892c8e --- .../storage/indexeddb/transaction-basics.html | 221 +++++++++++++++++++-- 1 file changed, 206 insertions(+), 15 deletions(-) (limited to 'LayoutTests/storage/indexeddb/transaction-basics.html') diff --git a/LayoutTests/storage/indexeddb/transaction-basics.html b/LayoutTests/storage/indexeddb/transaction-basics.html index cea5d5d..07fc685 100644 --- a/LayoutTests/storage/indexeddb/transaction-basics.html +++ b/LayoutTests/storage/indexeddb/transaction-basics.html @@ -16,48 +16,239 @@ if (window.layoutTestController) function test() { - shouldBeTrue("'indexedDB' in window"); - shouldBeFalse("indexedDB == null"); + shouldBeTrue("'webkitIndexedDB' in window"); + shouldBeFalse("webkitIndexedDB == null"); - result = evalAndLog("indexedDB.open('name', 'description')"); + result = evalAndLog("webkitIndexedDB.open('name', 'description')"); verifyResult(result); result.onsuccess = openSuccess; result.onerror = unexpectedErrorCallback; +} + +function openSuccess() +{ + debug("openSuccess():"); + verifySuccessEvent(event); + window.db = evalAndLog("db = event.result"); + result = evalAndLog("result = db.setVersion('version 1')"); + result.onsuccess = cleanDatabase; + result.onerror = unexpectedErrorCallback; +} + +function cleanDatabase() +{ + verifySuccessEvent(event); + deleteAllObjectStores(db, checkMetadataEmpty); + commitAndContinue(testSetVersionAbort1); +} + +function testSetVersionAbort1() +{ + checkMetadataEmpty(); + result = evalAndLog("result = startSetVersion('version fail')"); + result.onsuccess = addRemoveIDBObjects; +} + +function addRemoveIDBObjects() +{ + debug("addRemoveIDBObjects():"); + verifySuccessEvent(event); + var trans = evalAndLog("trans = event.result"); + shouldBeTrue("trans !== null"); + trans.onabort = testSetVersionAbort2; + trans.oncomplete = unexpectedCompleteCallback; + + var store = evalAndLog("store = db.createObjectStore('storeFail', null)"); + var index = evalAndLog("index = store.createIndex('indexFail', 'x', false)"); + + evalAndLog("db.removeObjectStore('storeFail')"); + evalAndLog("store.removeIndex('indexFail')"); + + trans.abort(); +} + +function testSetVersionAbort2() +{ + checkMetadataEmpty(); + result = evalAndLog("result = startSetVersion('version fail')"); + result.onsuccess = addRemoveAddIDBObjects; +} + +function addRemoveAddIDBObjects() +{ + debug("addRemoveAddIDBObjects():"); + verifySuccessEvent(event); + var trans = evalAndLog("trans = event.result"); + shouldBeTrue("trans !== null"); + trans.onabort = testSetVersionAbort3; + trans.oncomplete = unexpectedCompleteCallback; + + var store = evalAndLog("store = db.createObjectStore('storeFail', null)"); + var index = evalAndLog("index = store.createIndex('indexFail', 'x', false)"); + + evalAndLog("db.removeObjectStore('storeFail')"); + evalAndLog("store.removeIndex('indexFail')"); + + var store = evalAndLog("store = db.createObjectStore('storeFail', null)"); + var index = evalAndLog("index = store.createIndex('indexFail', 'x', false)"); + + trans.abort(); +} + +function testSetVersionAbort3() +{ + checkMetadataEmpty(); + result = evalAndLog("result = startSetVersion('version fail')"); + result.onsuccess = addIDBObjects; +} + +function addIDBObjects() +{ + debug("addIDBObjects():"); + verifySuccessEvent(event); + var trans = evalAndLog("trans = event.result"); + shouldBeTrue("trans !== null"); + trans.onabort = testSetVersionAbort4; + trans.oncomplete = unexpectedCompleteCallback; + + var store = evalAndLog("store = db.createObjectStore('storeFail', null)"); + var index = evalAndLog("index = store.createIndex('indexFail', 'x', false)"); + + trans.abort(); +} + +function testSetVersionAbort4() +{ + checkMetadataEmpty(); + result = evalAndLog("result = startSetVersion('version fail')"); + result.onsuccess = addIDBObjectsAndCommit; +} + +function addIDBObjects() +{ + debug("addIDBObjects():"); + verifySuccessEvent(event); + var trans = evalAndLog("trans = event.result"); + shouldBeTrue("trans !== null"); + trans.onabort = unexpectedAbortCallback; + + var store = evalAndLog("store = db.createObjectStore('storeFail', null)"); + var index = evalAndLog("index = store.createIndex('indexFail', 'x', false)"); + + commitAndContinue(testSetVersionAbort5); +} + +function commitAndContinue(continueFunction) +{ + window.setTimeout(continueFunction, 0); +} + +function testSetVersionAbort5() +{ + checkMetadataExistingObjectStore(); + result = evalAndLog("result = startSetVersion('version fail')"); + result.onsuccess = removeIDBObjects; +} + +function removeIDBObjects() +{ + debug("removeIDBObjects():"); + verifySuccessEvent(event); + var trans = evalAndLog("trans = event.result"); + shouldBeTrue("trans !== null"); + trans.onabort = testSetVersionAbort6; + trans.oncomplete = unexpectedCompleteCallback; + + var store = evalAndLog("store = trans.objectStore('storeFail')"); + evalAndLog("store.removeIndex('indexFail')"); + evalAndLog("db.removeObjectStore('storeFail')"); + + trans.abort(); +} + +function testSetVersionAbort6() +{ + checkMetadataExistingObjectStore(); + setNewVersion(); +} + +function startSetVersion(versionName) +{ + result = db.setVersion(versionName); + verifyResult(result); + result.onerror = unexpectedErrorCallback; + return result; +} + +function checkMetadataEmpty() +{ + shouldBe("window.db.objectStores", "[]"); + shouldBe("window.db.objectStores.length", "0"); + shouldBe("window.db.objectStores.contains('storeFail')", "false"); +} + +function checkMetadataExistingObjectStore() +{ + shouldBe("db.objectStores", "['storeFail']"); + shouldBe("db.objectStores.length", "1"); + shouldBe("db.objectStores.contains('storeFail')", "true"); } -function openSuccess() +function setNewVersion() { - debug("createObjectStoreCallback():"); - verifySuccessEvent(event); - db = evalAndLog("db = event.result"); - - deleteAllObjectStores(db); - - result = evalAndLog("db.createObjectStore('storeName', null)"); + result = evalAndLog("db.setVersion('new version')"); verifyResult(result); - result.onsuccess = createSuccess; + result.onsuccess = setVersionSuccess; result.onerror = unexpectedErrorCallback; } -function createSuccess() +function setVersionSuccess() { + debug("setVersionSuccess():"); verifySuccessEvent(event); + window.trans = evalAndLog("trans = event.result"); + shouldBeTrue("trans !== null"); + trans.onabort = unexpectedAbortCallback; + trans.oncomplete = completeCallback; + window.completeEventFired = false; + + deleteAllObjectStores(db, createObjectStoreAndStartTransaction); +} + +function createObjectStoreAndStartTransaction() +{ + evalAndLog("db.createObjectStore('storeName', null)"); transaction = evalAndLog("db.transaction()"); transaction.onabort = abortCallback; var store = evalAndLog("store = transaction.objectStore('storeName')"); shouldBeEqualToString("store.name", "storeName"); } +function completeCallback() +{ + verifyCompleteEvent(event); + window.completeEventFired = true; +} + function abortCallback() { verifyAbortEvent(event); - done(); + checkForCompleteEvent(); } -test(); +function checkForCompleteEvent() +{ + if (completeEventFired) { + testPassed("oncomplete event had fired"); + done(); + } else + setTimeout(checkForCompleteEvent, 1); +} var successfullyParsed = true; +test(); + -- cgit v1.1