diff options
Diffstat (limited to 'LayoutTests/storage/indexeddb')
-rw-r--r-- | LayoutTests/storage/indexeddb/database-basics-expected.txt | 1 | ||||
-rw-r--r-- | LayoutTests/storage/indexeddb/objectstore-removeobjectstore-expected.txt | 166 | ||||
-rw-r--r-- | LayoutTests/storage/indexeddb/objectstore-removeobjectstore.html | 115 | ||||
-rw-r--r-- | LayoutTests/storage/indexeddb/resources/shared.js | 20 | ||||
-rw-r--r-- | LayoutTests/storage/indexeddb/script-tests/database-basics.js | 1 | ||||
-rw-r--r-- | LayoutTests/storage/indexeddb/script-tests/database-description.js | 56 | ||||
-rw-r--r-- | LayoutTests/storage/indexeddb/script-tests/objectstore-basics.js | 3 | ||||
-rw-r--r-- | LayoutTests/storage/indexeddb/script-tests/open-cursor.js | 3 | ||||
-rw-r--r-- | LayoutTests/storage/indexeddb/script-tests/transaction-basics.js | 47 | ||||
-rw-r--r-- | LayoutTests/storage/indexeddb/transaction-basics-expected.txt (renamed from LayoutTests/storage/indexeddb/database-description-expected.txt) | 39 | ||||
-rw-r--r-- | LayoutTests/storage/indexeddb/transaction-basics.html (renamed from LayoutTests/storage/indexeddb/database-description.html) | 2 |
11 files changed, 363 insertions, 90 deletions
diff --git a/LayoutTests/storage/indexeddb/database-basics-expected.txt b/LayoutTests/storage/indexeddb/database-basics-expected.txt index ea869e0..75c276d 100644 --- a/LayoutTests/storage/indexeddb/database-basics-expected.txt +++ b/LayoutTests/storage/indexeddb/database-basics-expected.txt @@ -24,7 +24,6 @@ PASS event.target.readyState is event.target.DONE db = event.result PASS db.name is "name" -PASS db.description is "description" PASS db.version is "" PASS db.objectStores is [] PASS db.objectStores.length is 0 diff --git a/LayoutTests/storage/indexeddb/objectstore-removeobjectstore-expected.txt b/LayoutTests/storage/indexeddb/objectstore-removeobjectstore-expected.txt new file mode 100644 index 0000000..0a3d938 --- /dev/null +++ b/LayoutTests/storage/indexeddb/objectstore-removeobjectstore-expected.txt @@ -0,0 +1,166 @@ +Test IndexedDB's IDBObjectStore.removeObjectStore(). + +On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE". + + +indexedDB.open('name', 'description') +PASS 'onsuccess' in result is true +PASS 'onerror' in result is true +PASS 'abort' in result is true +PASS 'readyState' in result is true +An event should fire shortly... + +Success event fired: +PASS 'result' in event is true +PASS 'code' in event is false +PASS 'message' in event is false +PASS 'source' in event is true +PASS event.source != null is true +PASS 'onsuccess' in event.target is true +PASS 'onerror' in event.target is true +PASS 'abort' in event.target is true +PASS 'readyState' in event.target is true +PASS event.target.readyState is event.target.DONE + +db = event.result +db.createObjectStore('storeName', null) +PASS 'onsuccess' in result is true +PASS 'onerror' in result is true +PASS 'abort' in result is true +PASS 'readyState' in result is true +An event should fire shortly... + +Success event fired: +PASS 'result' in event is true +PASS 'code' in event is false +PASS 'message' in event is false +PASS 'source' in event is true +PASS event.source != null is true +PASS 'onsuccess' in event.target is true +PASS 'onerror' in event.target is true +PASS 'abort' in event.target is true +PASS 'readyState' in event.target is true +PASS event.target.readyState is event.target.DONE + +event.result.add('value', 'key') +PASS 'onsuccess' in result is true +PASS 'onerror' in result is true +PASS 'abort' in result is true +PASS 'readyState' in result is true +An event should fire shortly... + +Success event fired: +PASS 'result' in event is true +PASS 'code' in event is false +PASS 'message' in event is false +PASS 'source' in event is true +PASS event.source != null is true +PASS 'onsuccess' in event.target is true +PASS 'onerror' in event.target is true +PASS 'abort' in event.target is true +PASS 'readyState' in event.target is true +PASS event.target.readyState is event.target.DONE + +event.source.get('key') +PASS 'onsuccess' in result is true +PASS 'onerror' in result is true +PASS 'abort' in result is true +PASS 'readyState' in result is true +An event should fire shortly... + +Success event fired: +PASS 'result' in event is true +PASS 'code' in event is false +PASS 'message' in event is false +PASS 'source' in event is true +PASS event.source != null is true +PASS 'onsuccess' in event.target is true +PASS 'onerror' in event.target is true +PASS 'abort' in event.target is true +PASS 'readyState' in event.target is true +PASS event.target.readyState is event.target.DONE + +PASS event.result is "value" +event.source.createIndex('indexName', '') +PASS 'onsuccess' in result is true +PASS 'onerror' in result is true +PASS 'abort' in result is true +PASS 'readyState' in result is true +An event should fire shortly... + +Success event fired: +PASS 'result' in event is true +PASS 'code' in event is false +PASS 'message' in event is false +PASS 'source' in event is true +PASS event.source != null is true +PASS 'onsuccess' in event.target is true +PASS 'onerror' in event.target is true +PASS 'abort' in event.target is true +PASS 'readyState' in event.target is true +PASS event.target.readyState is event.target.DONE + +PASS event.source.indexNames.contains('indexName') is true +db.removeObjectStore('storeName') +PASS 'onsuccess' in result is true +PASS 'onerror' in result is true +PASS 'abort' in result is true +PASS 'readyState' in result is true +An event should fire shortly... + +Success event fired: +PASS 'result' in event is true +PASS 'code' in event is false +PASS 'message' in event is false +PASS 'source' in event is true +PASS event.source != null is true +PASS 'onsuccess' in event.target is true +PASS 'onerror' in event.target is true +PASS 'abort' in event.target is true +PASS 'readyState' in event.target is true +PASS event.target.readyState is event.target.DONE + +db.createObjectStore('storeName', null) +PASS 'onsuccess' in result is true +PASS 'onerror' in result is true +PASS 'abort' in result is true +PASS 'readyState' in result is true +An event should fire shortly... + +Success event fired: +PASS 'result' in event is true +PASS 'code' in event is false +PASS 'message' in event is false +PASS 'source' in event is true +PASS event.source != null is true +PASS 'onsuccess' in event.target is true +PASS 'onerror' in event.target is true +PASS 'abort' in event.target is true +PASS 'readyState' in event.target is true +PASS event.target.readyState is event.target.DONE + +event.result.get('key') +PASS 'onsuccess' in result is true +PASS 'onerror' in result is true +PASS 'abort' in result is true +PASS 'readyState' in result is true +An event should fire shortly... + +Error event fired: +PASS 'result' in event is false +PASS 'code' in event is true +PASS 'message' in event is true +PASS 'source' in event is true +PASS event.source != null is true +PASS 'onsuccess' in event.target is true +PASS 'onerror' in event.target is true +PASS 'abort' in event.target is true +PASS 'readyState' in event.target is true +PASS event.target.readyState is event.target.DONE + +PASS event.code is 2 +PASS event.source.indexNames.contains('indexName') is false +PASS successfullyParsed is true + +TEST COMPLETE + diff --git a/LayoutTests/storage/indexeddb/objectstore-removeobjectstore.html b/LayoutTests/storage/indexeddb/objectstore-removeobjectstore.html new file mode 100644 index 0000000..e842f5b --- /dev/null +++ b/LayoutTests/storage/indexeddb/objectstore-removeobjectstore.html @@ -0,0 +1,115 @@ +<html> +<head> +<link rel="stylesheet" href="../../fast/js/resources/js-test-style.css"> +<script src="../../fast/js/resources/js-test-pre.js"></script> +<script src="../../fast/js/resources/js-test-post-function.js"></script> +<script src="resources/shared.js"></script> +</head> +<body> +<p id="description"></p> +<div id="console"></div> +<script> + +description("Test IndexedDB's IDBObjectStore.removeObjectStore()."); +if (window.layoutTestController) + layoutTestController.waitUntilDone(); + +function test() +{ + result = evalAndLog("indexedDB.open('name', 'description')"); + verifyResult(result); + result.onsuccess = createObjectStore; + result.onerror = unexpectedErrorCallback; +} + +function createObjectStore() +{ + verifySuccessEvent(event); + db = evalAndLog("db = event.result"); + + deleteAllObjectStores(db); + + result = evalAndLog("db.createObjectStore('storeName', null)"); + verifyResult(result); + result.onsuccess = addValue; + result.onerror = unexpectedErrorCallback; +} + +function addValue() +{ + verifySuccessEvent(event); + + result = evalAndLog("event.result.add('value', 'key')"); + verifyResult(result); + result.onsuccess = getValue; + result.onerror = unexpectedErrorCallback; +} + +function getValue() +{ + verifySuccessEvent(event); + + result = evalAndLog("event.source.get('key')"); + verifyResult(result); + result.onsuccess = addIndex; + result.onerror = unexpectedErrorCallback; +} + +function addIndex() +{ + verifySuccessEvent(event); + shouldBeEqualToString("event.result", "value"); + + result = evalAndLog("event.source.createIndex('indexName', '')"); + verifyResult(result); + result.onsuccess = removeObjectStore; + result.onerror = unexpectedErrorCallback; +} + +function removeObjectStore() +{ + verifySuccessEvent(event); + shouldBeTrue("event.source.indexNames.contains('indexName')"); + + result = evalAndLog("db.removeObjectStore('storeName')"); + verifyResult(result); + result.onsuccess = createObjectStoreAgain; + result.onerror = unexpectedErrorCallback; +} + +function createObjectStoreAgain() +{ + verifySuccessEvent(event); + + result = evalAndLog("db.createObjectStore('storeName', null)"); + verifyResult(result); + result.onsuccess = getValueAgain; + result.onerror = unexpectedErrorCallback; +} + +function getValueAgain() +{ + verifySuccessEvent(event); + + result = evalAndLog("event.result.get('key')"); + verifyResult(result); + result.onsuccess = unexpectedSuccessCallback; + result.onerror = verifyError; +} + +function verifyError() +{ + verifyErrorEvent(event); + // FIXME: Should just be IDBDatabaseException.NOT_FOUND_ERR but that doesn't work yet. + shouldBe("event.code", "2"); + shouldBeFalse("event.source.indexNames.contains('indexName')"); + + done(); +} + +test(); + +var successfullyParsed = true; +</script> +</body> +</html> diff --git a/LayoutTests/storage/indexeddb/resources/shared.js b/LayoutTests/storage/indexeddb/resources/shared.js index e510be1..112bf18 100644 --- a/LayoutTests/storage/indexeddb/resources/shared.js +++ b/LayoutTests/storage/indexeddb/resources/shared.js @@ -35,6 +35,12 @@ function verifySuccessEvent(event) verifyEventCommon(event); } +function verifyAbortEvent(event) +{ + debug("Abort event fired:"); + shouldBeEqualToString("event.type", "abort"); +} + function verifyResult(result) { shouldBeTrue("'onsuccess' in result"); @@ -45,6 +51,14 @@ function verifyResult(result) debug(""); } +function unexpectedSuccessCallback() +{ + testFailed("Success function called unexpectedly."); + debug(""); + verifySuccessEvent(event); + done(); +} + function unexpectedErrorCallback() { testFailed("Error function called unexpectedly: (" + event.code + ") " + event.message); @@ -53,3 +67,9 @@ function unexpectedErrorCallback() done(); } +function deleteAllObjectStores(db) +{ + objectStores = db.objectStores; + for (var i = 0; i < objectStores.length; ++i) + db.removeObjectStore(objectStores[i]); +} diff --git a/LayoutTests/storage/indexeddb/script-tests/database-basics.js b/LayoutTests/storage/indexeddb/script-tests/database-basics.js index a317b71..a07c684 100644 --- a/LayoutTests/storage/indexeddb/script-tests/database-basics.js +++ b/LayoutTests/storage/indexeddb/script-tests/database-basics.js @@ -8,7 +8,6 @@ function openSuccess() var db = evalAndLog("db = event.result"); shouldBeEqualToString("db.name", "name"); - shouldBeEqualToString("db.description", "description"); shouldBeEqualToString("db.version", ""); shouldBe("db.objectStores", "[]"); shouldBe("db.objectStores.length", "0"); diff --git a/LayoutTests/storage/indexeddb/script-tests/database-description.js b/LayoutTests/storage/indexeddb/script-tests/database-description.js deleted file mode 100644 index bb4acba..0000000 --- a/LayoutTests/storage/indexeddb/script-tests/database-description.js +++ /dev/null @@ -1,56 +0,0 @@ -description("Test IDBFactory.open's description parameter."); -if (window.layoutTestController) - layoutTestController.waitUntilDone(); - -function test() -{ - shouldBeTrue("'indexedDB' in window"); - shouldBeFalse("indexedDB == null"); - - result = evalAndLog("indexedDB.open('abcd', 'first')"); - verifyResult(result); - result.onsuccess = firstSuccess; - result.onerror = unexpectedErrorCallback; -} - -function firstSuccess() -{ - verifySuccessEvent(event); - window.firstDB = event.result; - - shouldBeEqualToString('event.result.description', 'first'); - - result = evalAndLog("indexedDB.open('abcd', 'second')"); - verifyResult(result); - result.onsuccess = secondSuccess; - result.onerror = unexpectedErrorCallback; -} - -function secondSuccess() -{ - verifySuccessEvent(event); - window.secondDB = event.result; - - shouldBeEqualToString('firstDB.description', 'first'); - shouldBeEqualToString('secondDB.description', 'second'); - - result = evalAndLog("indexedDB.open('abcd')"); - verifyResult(result); - result.onsuccess = thirdSuccess; - result.onerror = unexpectedErrorCallback; -} - -function thirdSuccess() -{ - verifySuccessEvent(event); - - shouldBeEqualToString('firstDB.description', 'first'); - shouldBeEqualToString('secondDB.description', 'second'); - shouldBeEqualToString('event.result.description', 'second'); - - done(); -} - -test(); - -var successfullyParsed = true; diff --git a/LayoutTests/storage/indexeddb/script-tests/objectstore-basics.js b/LayoutTests/storage/indexeddb/script-tests/objectstore-basics.js index 9869579..63675ad 100644 --- a/LayoutTests/storage/indexeddb/script-tests/objectstore-basics.js +++ b/LayoutTests/storage/indexeddb/script-tests/objectstore-basics.js @@ -16,8 +16,7 @@ function openSuccess() verifySuccessEvent(event); db = evalAndLog("db = event.result"); - // FIXME: remove any previously created object stores. - // This requires IDBDatabaseRequest::removeObjectStore to be implemented. + deleteAllObjectStores(db); result = evalAndLog("db.createObjectStore('storeName', null)"); verifyResult(result); diff --git a/LayoutTests/storage/indexeddb/script-tests/open-cursor.js b/LayoutTests/storage/indexeddb/script-tests/open-cursor.js index e3c615c..ff0b711 100644 --- a/LayoutTests/storage/indexeddb/script-tests/open-cursor.js +++ b/LayoutTests/storage/indexeddb/script-tests/open-cursor.js @@ -60,6 +60,9 @@ function openSuccess() { verifySuccessEvent(event); var db = evalAndLog("db = event.result"); + + deleteAllObjectStores(db); + result = evalAndLog("db.createObjectStore('test')"); verifyResult(result); result.onsuccess = createObjectStoreSuccess; diff --git a/LayoutTests/storage/indexeddb/script-tests/transaction-basics.js b/LayoutTests/storage/indexeddb/script-tests/transaction-basics.js new file mode 100644 index 0000000..58ac2a7 --- /dev/null +++ b/LayoutTests/storage/indexeddb/script-tests/transaction-basics.js @@ -0,0 +1,47 @@ +description("Test IndexedDB transaction basics."); +if (window.layoutTestController) + layoutTestController.waitUntilDone(); + +function test() +{ + shouldBeTrue("'indexedDB' in window"); + shouldBeFalse("indexedDB == null"); + + result = evalAndLog("indexedDB.open('name', 'description')"); + verifyResult(result); + result.onsuccess = openSuccess; + result.onerror = unexpectedErrorCallback; +} + +function openSuccess() +{ + debug("createObjectStoreCallback():"); + verifySuccessEvent(event); + db = evalAndLog("db = event.result"); + + deleteAllObjectStores(db); + + result = evalAndLog("db.createObjectStore('storeName', null)"); + verifyResult(result); + result.onsuccess = createSuccess; + result.onerror = unexpectedErrorCallback; +} + +function createSuccess() +{ + verifySuccessEvent(event); + transaction = evalAndLog("db.transaction()"); + transaction.onabort = abortCallback; + var store = evalAndLog("store = transaction.objectStore('storeName')"); + shouldBeEqualToString("store.name", "storeName"); +} + +function abortCallback() +{ + verifyAbortEvent(event); + done(); +} + +test(); + +var successfullyParsed = true; diff --git a/LayoutTests/storage/indexeddb/database-description-expected.txt b/LayoutTests/storage/indexeddb/transaction-basics-expected.txt index c90d33d..25d0694 100644 --- a/LayoutTests/storage/indexeddb/database-description-expected.txt +++ b/LayoutTests/storage/indexeddb/transaction-basics-expected.txt @@ -1,17 +1,18 @@ -Test IDBFactory.open's description parameter. +Test IndexedDB transaction basics. On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE". PASS 'indexedDB' in window is true PASS indexedDB == null is false -indexedDB.open('abcd', 'first') +indexedDB.open('name', 'description') PASS 'onsuccess' in result is true PASS 'onerror' in result is true PASS 'abort' in result is true PASS 'readyState' in result is true An event should fire shortly... +createObjectStoreCallback(): Success event fired: PASS 'result' in event is true PASS 'code' in event is false @@ -24,8 +25,8 @@ PASS 'abort' in event.target is true PASS 'readyState' in event.target is true PASS event.target.readyState is event.target.DONE -PASS event.result.description is "first" -indexedDB.open('abcd', 'second') +db = event.result +db.createObjectStore('storeName', null) PASS 'onsuccess' in result is true PASS 'onerror' in result is true PASS 'abort' in result is true @@ -44,31 +45,11 @@ PASS 'abort' in event.target is true PASS 'readyState' in event.target is true PASS event.target.readyState is event.target.DONE -PASS firstDB.description is "first" -PASS secondDB.description is "second" -indexedDB.open('abcd') -PASS 'onsuccess' in result is true -PASS 'onerror' in result is true -PASS 'abort' in result is true -PASS 'readyState' in result is true -An event should fire shortly... - -Success event fired: -PASS 'result' in event is true -PASS 'code' in event is false -PASS 'message' in event is false -PASS 'source' in event is true -PASS event.source != null is true -PASS 'onsuccess' in event.target is true -PASS 'onerror' in event.target is true -PASS 'abort' in event.target is true -PASS 'readyState' in event.target is true -PASS event.target.readyState is event.target.DONE - -PASS firstDB.description is "first" -PASS secondDB.description is "second" -PASS event.result.description is "second" +db.transaction() +store = transaction.objectStore('storeName') +PASS store.name is "storeName" +Abort event fired: +PASS event.type is "abort" PASS successfullyParsed is true TEST COMPLETE - diff --git a/LayoutTests/storage/indexeddb/database-description.html b/LayoutTests/storage/indexeddb/transaction-basics.html index ca6a4d6..a7238f6 100644 --- a/LayoutTests/storage/indexeddb/database-description.html +++ b/LayoutTests/storage/indexeddb/transaction-basics.html @@ -8,6 +8,6 @@ <body> <p id="description"></p> <div id="console"></div> -<script src="script-tests/database-description.js"></script> +<script src="script-tests/transaction-basics.js"></script> </body> </html> |