From e8b154fd68f9b33be40a3590e58347f353835f5c Mon Sep 17 00:00:00 2001 From: Steve Block Date: Fri, 27 Aug 2010 11:02:25 +0100 Subject: Merge WebKit at r66079 : Initial merge by git Change-Id: Ie2e1440fb9d487d24e52c247342c076fecaecac7 --- ...sion-no-crash-on-preflight-failure-expected.txt | 3 + ...ange-version-no-crash-on-preflight-failure.html | 36 +++++ .../storage/indexeddb/database-basics-expected.txt | 1 - .../indexeddb/database-description-expected.txt | 74 --------- .../storage/indexeddb/database-description.html | 13 -- .../objectstore-removeobjectstore-expected.txt | 166 +++++++++++++++++++++ .../indexeddb/objectstore-removeobjectstore.html | 115 ++++++++++++++ LayoutTests/storage/indexeddb/resources/shared.js | 20 +++ .../indexeddb/script-tests/database-basics.js | 1 - .../indexeddb/script-tests/database-description.js | 56 ------- .../indexeddb/script-tests/objectstore-basics.js | 3 +- .../storage/indexeddb/script-tests/open-cursor.js | 3 + .../indexeddb/script-tests/transaction-basics.js | 47 ++++++ .../indexeddb/transaction-basics-expected.txt | 55 +++++++ .../storage/indexeddb/transaction-basics.html | 13 ++ 15 files changed, 459 insertions(+), 147 deletions(-) create mode 100644 LayoutTests/storage/change-version-no-crash-on-preflight-failure-expected.txt create mode 100644 LayoutTests/storage/change-version-no-crash-on-preflight-failure.html delete mode 100644 LayoutTests/storage/indexeddb/database-description-expected.txt delete mode 100644 LayoutTests/storage/indexeddb/database-description.html create mode 100644 LayoutTests/storage/indexeddb/objectstore-removeobjectstore-expected.txt create mode 100644 LayoutTests/storage/indexeddb/objectstore-removeobjectstore.html delete mode 100644 LayoutTests/storage/indexeddb/script-tests/database-description.js create mode 100644 LayoutTests/storage/indexeddb/script-tests/transaction-basics.js create mode 100644 LayoutTests/storage/indexeddb/transaction-basics-expected.txt create mode 100644 LayoutTests/storage/indexeddb/transaction-basics.html (limited to 'LayoutTests/storage') diff --git a/LayoutTests/storage/change-version-no-crash-on-preflight-failure-expected.txt b/LayoutTests/storage/change-version-no-crash-on-preflight-failure-expected.txt new file mode 100644 index 0000000..bb0d549 --- /dev/null +++ b/LayoutTests/storage/change-version-no-crash-on-preflight-failure-expected.txt @@ -0,0 +1,3 @@ +This test verifies that no assertion is triggered when changeVersion()'s preflight step fails. +PASS: db.changeVersion() failed as expected, and no assertions were triggered. + diff --git a/LayoutTests/storage/change-version-no-crash-on-preflight-failure.html b/LayoutTests/storage/change-version-no-crash-on-preflight-failure.html new file mode 100644 index 0000000..2a512fb --- /dev/null +++ b/LayoutTests/storage/change-version-no-crash-on-preflight-failure.html @@ -0,0 +1,36 @@ + + + + + +This test verifies that no assertion is triggered when changeVersion()'s preflight step fails. +

+
+
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/database-description-expected.txt b/LayoutTests/storage/indexeddb/database-description-expected.txt
deleted file mode 100644
index c90d33d..0000000
--- a/LayoutTests/storage/indexeddb/database-description-expected.txt
+++ /dev/null
@@ -1,74 +0,0 @@
-Test IDBFactory.open's description parameter.
-
-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')
-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.description is "first"
-indexedDB.open('abcd', 'second')
-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"
-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"
-PASS successfullyParsed is true
-
-TEST COMPLETE
-
diff --git a/LayoutTests/storage/indexeddb/database-description.html b/LayoutTests/storage/indexeddb/database-description.html
deleted file mode 100644
index ca6a4d6..0000000
--- a/LayoutTests/storage/indexeddb/database-description.html
+++ /dev/null
@@ -1,13 +0,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 @@ + + + + + + + + +

+
+ + + 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/transaction-basics-expected.txt b/LayoutTests/storage/indexeddb/transaction-basics-expected.txt new file mode 100644 index 0000000..25d0694 --- /dev/null +++ b/LayoutTests/storage/indexeddb/transaction-basics-expected.txt @@ -0,0 +1,55 @@ +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('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 +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 + +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/transaction-basics.html b/LayoutTests/storage/indexeddb/transaction-basics.html new file mode 100644 index 0000000..a7238f6 --- /dev/null +++ b/LayoutTests/storage/indexeddb/transaction-basics.html @@ -0,0 +1,13 @@ + + + + + + + + +

+
+ + + -- cgit v1.1