diff options
Diffstat (limited to 'LayoutTests/storage/indexeddb/database-basics.html')
-rw-r--r-- | LayoutTests/storage/indexeddb/database-basics.html | 79 |
1 files changed, 62 insertions, 17 deletions
diff --git a/LayoutTests/storage/indexeddb/database-basics.html b/LayoutTests/storage/indexeddb/database-basics.html index b099a49..31c887b 100644 --- a/LayoutTests/storage/indexeddb/database-basics.html +++ b/LayoutTests/storage/indexeddb/database-basics.html @@ -14,23 +14,43 @@ description("Test the basics of IndexedDB's IDBDatabase."); if (window.layoutTestController) layoutTestController.waitUntilDone(); +function test() +{ + result = evalAndLog("webkitIndexedDB.open('name', 'description')"); + verifyResult(result); + result.onsuccess = openSuccess; + result.onerror = unexpectedErrorCallback; +} + function openSuccess() { verifySuccessEvent(event); + window.db = evalAndLog("db = event.result"); + + result = evalAndLog("db.setVersion('new version')"); + verifyResult(result); + result.onsuccess = setVersionSuccess; + result.onerror = unexpectedErrorCallback; +} - var db = evalAndLog("db = event.result"); - deleteAllObjectStores(db); +function setVersionSuccess() +{ + debug("setVersionSuccess():"); + verifySuccessEvent(event); + window.trans = evalAndLog("trans = event.result"); + shouldBeTrue("trans !== null"); + trans.onabort = unexpectedAbortCallback; - // We must do something asynchronous before anything synchronous since - // deleteAllObjectStores only schedules the object stores to be removed. - // We don't know for sure whether it's happened until an IDBRequest object - // that was created after the removes fires. + deleteAllObjectStores(db, testSetVersion); +} +function testSetVersion() +{ debug("Testing setVersion."); result = evalAndLog('db.setVersion("version a")'); verifyResult(result); result.onsuccess = setVersionAgain; - result.onError = unexpectedErrorCallback; + result.onerror = unexpectedErrorCallback; } function setVersionAgain() @@ -40,7 +60,7 @@ function setVersionAgain() result = evalAndLog('db.setVersion("version b")'); verifyResult(result); result.onsuccess = createObjectStore; - result.onError = unexpectedErrorCallback; + result.onerror = unexpectedErrorCallback; } function createObjectStore() @@ -51,33 +71,58 @@ function createObjectStore() shouldBe("db.objectStores", "[]"); shouldBe("db.objectStores.length", "0"); shouldBe("db.objectStores.contains('')", "false"); + shouldBeNull("db.objectStores[0]"); + shouldBeNull("db.objectStores.item(0)"); - result = evalAndLog('db.createObjectStore("test123")'); - verifyResult(result); - result.onsuccess = checkObjectStore; - result.onError = unexpectedErrorCallback; + objectStore = evalAndLog('db.createObjectStore("test123")'); + checkObjectStore(); + commitAndContinue(); } function checkObjectStore() { - verifySuccessEvent(event); shouldBe("db.objectStores", "['test123']"); shouldBe("db.objectStores.length", "1"); shouldBe("db.objectStores.contains('')", "false"); shouldBe("db.objectStores.contains('test456')", "false"); shouldBe("db.objectStores.contains('test123')", "true"); +} - done(); +function commitAndContinue() +{ + window.setTimeout(testSetVersionAbort, 0); } -function test() +function testSetVersionAbort() { - result = evalAndLog("indexedDB.open('name', 'description')"); + result = evalAndLog('db.setVersion("version c")'); verifyResult(result); - result.onsuccess = openSuccess; + result.onsuccess = createAnotherObjectStore; result.onerror = unexpectedErrorCallback; } +function createAnotherObjectStore() +{ + verifySuccessEvent(event); + shouldBeEqualToString("db.version", "version c"); + shouldBeEqualToString("db.name", "name"); + checkObjectStore(); + + objectStore = evalAndLog('db.createObjectStore("test456")'); + var setVersionTrans = evalAndLog("setVersionTrans = event.result"); + shouldBeTrue("setVersionTrans !== null"); + setVersionTrans.oncomplete = unexpectedCompleteCallback; + setVersionTrans.onabort = checkMetadata; + setVersionTrans.abort(); +} + +function checkMetadata() +{ + shouldBeEqualToString("db.version", "version b"); + checkObjectStore(); + done(); +} + test(); var successfullyParsed = true; |