From e14391e94c850b8bd03680c23b38978db68687a8 Mon Sep 17 00:00:00 2001 From: John Reck Date: Thu, 4 Nov 2010 12:00:17 -0700 Subject: Merge Webkit at r70949: Initial merge by git. Change-Id: I77b8645c083b5d0da8dba73ed01d4014aab9848e --- LayoutTests/fast/js/resources/js-test-pre.js | 18 + .../storage/indexeddb/constants-expected.txt | 2 +- LayoutTests/storage/indexeddb/constants.html | 2 +- .../storage/indexeddb/database-quota-expected.txt | 1032 +------------------- LayoutTests/storage/indexeddb/database-quota.html | 10 +- .../storage/indexeddb/duplicates-expected.txt | 541 ++++++++++ LayoutTests/storage/indexeddb/duplicates.html | 213 ++++ .../storage/indexeddb/index-basics-expected.txt | 4 + LayoutTests/storage/indexeddb/index-basics.html | 15 + .../storage/indexeddb/index-cursor-expected.txt | 38 + LayoutTests/storage/indexeddb/index-cursor.html | 34 +- .../storage/indexeddb/keyrange-expected.txt | 12 + LayoutTests/storage/indexeddb/keyrange.html | 47 + .../indexeddb/objectstore-basics-expected.txt | 11 +- .../storage/indexeddb/objectstore-basics.html | 36 +- .../indexeddb/objectstore-cursor-expected.txt | 20 + .../storage/indexeddb/objectstore-cursor.html | 37 +- .../storage/indexeddb/open-cursor-expected.txt | 3 + LayoutTests/storage/indexeddb/open-cursor.html | 8 + .../storage/indexeddb/tutorial-expected.txt | 2 + LayoutTests/storage/indexeddb/tutorial.html | 433 ++++++++ 21 files changed, 1474 insertions(+), 1044 deletions(-) create mode 100644 LayoutTests/storage/indexeddb/duplicates-expected.txt create mode 100644 LayoutTests/storage/indexeddb/duplicates.html create mode 100644 LayoutTests/storage/indexeddb/tutorial-expected.txt create mode 100644 LayoutTests/storage/indexeddb/tutorial.html (limited to 'LayoutTests') diff --git a/LayoutTests/fast/js/resources/js-test-pre.js b/LayoutTests/fast/js/resources/js-test-pre.js index 3536a89..c14d513 100644 --- a/LayoutTests/fast/js/resources/js-test-pre.js +++ b/LayoutTests/fast/js/resources/js-test-pre.js @@ -219,6 +219,24 @@ function shouldBeUndefined(_a) testFailed(_a + " should be undefined. Was " + _av); } +function shouldBeDefined(_a) +{ + var exception; + var _av; + try { + _av = eval(_a); + } catch (e) { + exception = e; + } + + if (exception) + testFailed(_a + " should be defined. Threw exception " + exception); + else if (_av !== undefined) + testPassed(_a + " is defined."); + else + testFailed(_a + " should be defined. Was " + _av); +} + function shouldBeGreaterThanOrEqual(_a, _b) { if (typeof _a != "string" || typeof _b != "string") debug("WARN: shouldBeGreaterThanOrEqual expects string arguments"); diff --git a/LayoutTests/storage/indexeddb/constants-expected.txt b/LayoutTests/storage/indexeddb/constants-expected.txt index 15a2df7..8f53b56 100644 --- a/LayoutTests/storage/indexeddb/constants-expected.txt +++ b/LayoutTests/storage/indexeddb/constants-expected.txt @@ -8,7 +8,7 @@ PASS webkitIDBKeyRange.LEFT_OPEN is 1 PASS webkitIDBKeyRange.RIGHT_OPEN is 2 PASS webkitIDBKeyRange.LEFT_BOUND is 4 PASS webkitIDBKeyRange.RIGHT_BOUND is 8 -PASS webkitIDBDatabaseException.UNKNOWN_ERR is 0 +PASS webkitIDBDatabaseException.UNKNOWN_ERR is 1 PASS webkitIDBDatabaseException.NON_TRANSIENT_ERR is 1 PASS webkitIDBDatabaseException.NOT_FOUND_ERR is 2 PASS webkitIDBDatabaseException.CONSTRAINT_ERR is 3 diff --git a/LayoutTests/storage/indexeddb/constants.html b/LayoutTests/storage/indexeddb/constants.html index 813fe7a..9cdf4c4 100644 --- a/LayoutTests/storage/indexeddb/constants.html +++ b/LayoutTests/storage/indexeddb/constants.html @@ -22,7 +22,7 @@ function test() shouldBe("webkitIDBKeyRange.LEFT_BOUND", "4"); shouldBe("webkitIDBKeyRange.RIGHT_BOUND", "8"); - shouldBe("webkitIDBDatabaseException.UNKNOWN_ERR", "0"); + shouldBe("webkitIDBDatabaseException.UNKNOWN_ERR", "1"); shouldBe("webkitIDBDatabaseException.NON_TRANSIENT_ERR", "1"); shouldBe("webkitIDBDatabaseException.NOT_FOUND_ERR", "2"); shouldBe("webkitIDBDatabaseException.CONSTRAINT_ERR", "3"); diff --git a/LayoutTests/storage/indexeddb/database-quota-expected.txt b/LayoutTests/storage/indexeddb/database-quota-expected.txt index b6ea505..91d3ac7 100644 --- a/LayoutTests/storage/indexeddb/database-quota-expected.txt +++ b/LayoutTests/storage/indexeddb/database-quota-expected.txt @@ -68,1035 +68,7 @@ trans = db.transaction() Creating 'data' which contains 64K of data PASS data.length is 65536 store = trans.objectStore('test123') -store.add({x: data}, dataAdded) -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 'readyState' in event.target is true -PASS event.target.readyState is event.target.DONE - -store = event.source -store.add({x: data}, dataAdded) -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 'readyState' in event.target is true -PASS event.target.readyState is event.target.DONE - -store = event.source -store.add({x: data}, dataAdded) -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 'readyState' in event.target is true -PASS event.target.readyState is event.target.DONE - -store = event.source -store.add({x: data}, dataAdded) -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 'readyState' in event.target is true -PASS event.target.readyState is event.target.DONE - -store = event.source -store.add({x: data}, dataAdded) -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 'readyState' in event.target is true -PASS event.target.readyState is event.target.DONE - -store = event.source -store.add({x: data}, dataAdded) -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 'readyState' in event.target is true -PASS event.target.readyState is event.target.DONE - -store = event.source -store.add({x: data}, dataAdded) -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 'readyState' in event.target is true -PASS event.target.readyState is event.target.DONE - -store = event.source -store.add({x: data}, dataAdded) -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 'readyState' in event.target is true -PASS event.target.readyState is event.target.DONE - -store = event.source -store.add({x: data}, dataAdded) -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 'readyState' in event.target is true -PASS event.target.readyState is event.target.DONE - -store = event.source -store.add({x: data}, dataAdded) -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 'readyState' in event.target is true -PASS event.target.readyState is event.target.DONE - -store = event.source -store.add({x: data}, dataAdded) -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 'readyState' in event.target is true -PASS event.target.readyState is event.target.DONE - -store = event.source -store.add({x: data}, dataAdded) -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 'readyState' in event.target is true -PASS event.target.readyState is event.target.DONE - -store = event.source -store.add({x: data}, dataAdded) -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 'readyState' in event.target is true -PASS event.target.readyState is event.target.DONE - -store = event.source -store.add({x: data}, dataAdded) -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 'readyState' in event.target is true -PASS event.target.readyState is event.target.DONE - -store = event.source -store.add({x: data}, dataAdded) -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 'readyState' in event.target is true -PASS event.target.readyState is event.target.DONE - -store = event.source -store.add({x: data}, dataAdded) -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 'readyState' in event.target is true -PASS event.target.readyState is event.target.DONE - -store = event.source -store.add({x: data}, dataAdded) -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 'readyState' in event.target is true -PASS event.target.readyState is event.target.DONE - -store = event.source -store.add({x: data}, dataAdded) -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 'readyState' in event.target is true -PASS event.target.readyState is event.target.DONE - -store = event.source -store.add({x: data}, dataAdded) -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 'readyState' in event.target is true -PASS event.target.readyState is event.target.DONE - -store = event.source -store.add({x: data}, dataAdded) -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 'readyState' in event.target is true -PASS event.target.readyState is event.target.DONE - -store = event.source -store.add({x: data}, dataAdded) -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 'readyState' in event.target is true -PASS event.target.readyState is event.target.DONE - -store = event.source -store.add({x: data}, dataAdded) -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 'readyState' in event.target is true -PASS event.target.readyState is event.target.DONE - -store = event.source -store.add({x: data}, dataAdded) -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 'readyState' in event.target is true -PASS event.target.readyState is event.target.DONE - -store = event.source -store.add({x: data}, dataAdded) -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 'readyState' in event.target is true -PASS event.target.readyState is event.target.DONE - -store = event.source -store.add({x: data}, dataAdded) -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 'readyState' in event.target is true -PASS event.target.readyState is event.target.DONE - -store = event.source -store.add({x: data}, dataAdded) -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 'readyState' in event.target is true -PASS event.target.readyState is event.target.DONE - -store = event.source -store.add({x: data}, dataAdded) -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 'readyState' in event.target is true -PASS event.target.readyState is event.target.DONE - -store = event.source -store.add({x: data}, dataAdded) -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 'readyState' in event.target is true -PASS event.target.readyState is event.target.DONE - -store = event.source -store.add({x: data}, dataAdded) -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 'readyState' in event.target is true -PASS event.target.readyState is event.target.DONE - -store = event.source -store.add({x: data}, dataAdded) -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 'readyState' in event.target is true -PASS event.target.readyState is event.target.DONE - -store = event.source -store.add({x: data}, dataAdded) -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 'readyState' in event.target is true -PASS event.target.readyState is event.target.DONE - -store = event.source -store.add({x: data}, dataAdded) -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 'readyState' in event.target is true -PASS event.target.readyState is event.target.DONE - -store = event.source -store.add({x: data}, dataAdded) -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 'readyState' in event.target is true -PASS event.target.readyState is event.target.DONE - -store = event.source -store.add({x: data}, dataAdded) -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 'readyState' in event.target is true -PASS event.target.readyState is event.target.DONE - -store = event.source -store.add({x: data}, dataAdded) -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 'readyState' in event.target is true -PASS event.target.readyState is event.target.DONE - -store = event.source -store.add({x: data}, dataAdded) -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 'readyState' in event.target is true -PASS event.target.readyState is event.target.DONE - -store = event.source -store.add({x: data}, dataAdded) -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 'readyState' in event.target is true -PASS event.target.readyState is event.target.DONE - -store = event.source -store.add({x: data}, dataAdded) -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 'readyState' in event.target is true -PASS event.target.readyState is event.target.DONE - -store = event.source -store.add({x: data}, dataAdded) -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 'readyState' in event.target is true -PASS event.target.readyState is event.target.DONE - -store = event.source -store.add({x: data}, dataAdded) -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 'readyState' in event.target is true -PASS event.target.readyState is event.target.DONE - -store = event.source -store.add({x: data}, dataAdded) -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 'readyState' in event.target is true -PASS event.target.readyState is event.target.DONE - -store = event.source -store.add({x: data}, dataAdded) -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 'readyState' in event.target is true -PASS event.target.readyState is event.target.DONE - -store = event.source -store.add({x: data}, dataAdded) -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 'readyState' in event.target is true -PASS event.target.readyState is event.target.DONE - -store = event.source -store.add({x: data}, dataAdded) -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 'readyState' in event.target is true -PASS event.target.readyState is event.target.DONE - -store = event.source -store.add({x: data}, dataAdded) -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 'readyState' in event.target is true -PASS event.target.readyState is event.target.DONE - -store = event.source -store.add({x: data}, dataAdded) -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 'readyState' in event.target is true -PASS event.target.readyState is event.target.DONE - -store = event.source -store.add({x: data}, dataAdded) -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 'readyState' in event.target is true -PASS event.target.readyState is event.target.DONE - -store = event.source -store.add({x: data}, dataAdded) -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 'readyState' in event.target is true -PASS event.target.readyState is event.target.DONE - -store = event.source -store.add({x: data}, dataAdded) -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 'readyState' in event.target is true -PASS event.target.readyState is event.target.DONE - -store = event.source -store.add({x: data}, dataAdded) -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 'readyState' in event.target is true -PASS event.target.readyState is event.target.DONE - -store = event.source -store.add({x: data}, dataAdded) -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 'readyState' in event.target is true -PASS event.target.readyState is event.target.DONE - -store = event.source -store.add({x: data}, dataAdded) -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 'readyState' in event.target is true -PASS event.target.readyState is event.target.DONE - -store = event.source -store.add({x: data}, dataAdded) -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 'readyState' in event.target is true -PASS event.target.readyState is event.target.DONE - -store = event.source -store.add({x: data}, dataAdded) -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 'readyState' in event.target is true -PASS event.target.readyState is event.target.DONE - -store = event.source -store.add({x: data}, dataAdded) -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 'readyState' in event.target is true -PASS event.target.readyState is event.target.DONE - -store = event.source -store.add({x: data}, dataAdded) -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 'readyState' in event.target is true -PASS event.target.readyState is event.target.DONE - -store = event.source -store.add({x: data}, dataAdded) -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 'readyState' in event.target is true -PASS event.target.readyState is event.target.DONE - -store = event.source -store.add({x: data}, dataAdded) -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 'readyState' in event.target is true -PASS event.target.readyState is event.target.DONE - -store = event.source -store.add({x: data}, dataAdded) -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 'readyState' in event.target is true -PASS event.target.readyState is event.target.DONE - -store = event.source -store.add({x: data}, dataAdded) -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 'readyState' in event.target is true -PASS event.target.readyState is event.target.DONE - -store = event.source -store.add({x: data}, dataAdded) -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 'readyState' in event.target is true -PASS event.target.readyState is event.target.DONE - -store = event.source -store.add({x: data}, dataAdded) -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 'readyState' in event.target is true -PASS event.target.readyState is event.target.DONE - -store = event.source -store.add({x: data}, dataAdded) -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 'readyState' in event.target is true -PASS event.target.readyState is event.target.DONE - -store = event.source -store.add({x: data}, dataAdded) -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 'readyState' in event.target is true -PASS event.target.readyState is event.target.DONE - -store = event.source -store.add({x: data}, dataAdded) -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 'readyState' in event.target is true -PASS event.target.readyState is event.target.DONE - -store = event.source -store.add({x: data}, dataAdded) -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 'readyState' in event.target is true -PASS event.target.readyState is event.target.DONE - -store = event.source -store.add({x: data}, dataAdded) -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 'readyState' in event.target is true -PASS event.target.readyState is event.target.DONE - -store = event.source -store.add({x: data}, dataAdded) -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 'readyState' in event.target is true -PASS event.target.readyState is event.target.DONE - -store = event.source -store.add({x: data}, dataAdded) -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 'readyState' in event.target is true -PASS event.target.readyState is event.target.DONE - -store = event.source -store.add({x: data}, dataAdded) -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 'readyState' in event.target is true -PASS event.target.readyState is event.target.DONE - -store = event.source -store.add({x: data}, dataAdded) -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 'readyState' in event.target is true -PASS event.target.readyState is event.target.DONE - -store = event.source -store.add({x: data}, dataAdded) -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 'readyState' in event.target is true -PASS event.target.readyState is event.target.DONE - -store = event.source -store.add({x: data}, dataAdded) -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 'readyState' in event.target is true -PASS event.target.readyState is event.target.DONE - -store = event.source -store.add({x: data}, dataAdded) -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 'readyState' in event.target is true -PASS event.target.readyState is event.target.DONE - -store = event.source -store.add({x: data}, dataAdded) -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 'readyState' in event.target is true -PASS event.target.readyState is event.target.DONE - -store = event.source -store.add({x: data}, dataAdded) -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 'readyState' in event.target is true -PASS event.target.readyState is event.target.DONE - -store = event.source -store.add({x: data}, dataAdded) -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 'readyState' in event.target is true -PASS event.target.readyState is event.target.DONE - -store = event.source -store.add({x: data}, dataAdded) -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 'readyState' in event.target is true -PASS event.target.readyState is event.target.DONE - -store = event.source -store.add({x: data}, dataAdded) -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 'readyState' in event.target is true -PASS event.target.readyState is event.target.DONE - -store = event.source -store.add({x: data}, dataAdded) -Error function called: (0) Error writing data to stable storage. +Error function called: (1) Error writing data to stable storage. Error event fired: PASS 'result' in event is false PASS 'code' in event is true @@ -1108,7 +80,7 @@ PASS 'onerror' in event.target is true PASS 'readyState' in event.target is true PASS event.target.readyState is event.target.DONE -PASS Adding data failed due to quota error. Data added was: 5120 KB +PASS Adding data failed due to quota error. Data added was about 5 MB PASS successfullyParsed is true TEST COMPLETE diff --git a/LayoutTests/storage/indexeddb/database-quota.html b/LayoutTests/storage/indexeddb/database-quota.html index 45ce709..aefe6b1 100644 --- a/LayoutTests/storage/indexeddb/database-quota.html +++ b/LayoutTests/storage/indexeddb/database-quota.html @@ -90,17 +90,15 @@ function checkQuotaEnforcing() function addData() { if (dataAdded < 5 * 1024 * 1024) { - if (dataAdded > 0) { - verifySuccessEvent(event); - store = evalAndLog("store = event.source"); - } + if (dataAdded > 0) + store = event.source; } else { testFailed("added more than quota"); done(); return; } dataAdded += 65536; - result = evalAndLog("store.add({x: data}, dataAdded)"); + result = store.add({x: data}, dataAdded); result.onsuccess = addData; result.onerror = logError; } @@ -113,7 +111,7 @@ function logError() function testComplete() { - testPassed("Adding data failed due to quota error. Data added was: " + dataAdded / 1024 + " KB"); + testPassed("Adding data failed due to quota error. Data added was about " + Math.round(dataAdded / 1024 / 1024) + " MB"); done(); } diff --git a/LayoutTests/storage/indexeddb/duplicates-expected.txt b/LayoutTests/storage/indexeddb/duplicates-expected.txt new file mode 100644 index 0000000..2ea8c36 --- /dev/null +++ b/LayoutTests/storage/indexeddb/duplicates-expected.txt @@ -0,0 +1,541 @@ +Verify that you can put the same data in 2 different databases without uniqueness constraints firing. + +On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE". + + +webkitIndexedDB.open('name', 'description') +PASS 'onsuccess' in result is true +PASS 'onerror' 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 'readyState' in event.target is true +PASS event.target.readyState is event.target.DONE + +db = event.result +db.setVersion('new version') +PASS 'onsuccess' in result is true +PASS 'onerror' in result is true +PASS 'readyState' in result is true +An event should fire shortly... + +setVersionSuccess(): +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 'readyState' in event.target is true +PASS event.target.readyState is event.target.DONE + +trans = event.result +PASS trans !== null is true +Deleted all object stores. +db.createObjectStore('storeName', null) +store.createIndex('indexName', 'x') +store.add({x: 'value', y: 'zzz'}, 'key') +PASS 'onsuccess' in result is true +PASS 'onerror' 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 'readyState' in event.target is true +PASS event.target.readyState is event.target.DONE + +event.source.add({x: 'value2', y: 'zzz2'}, 'key2') +PASS 'onsuccess' in result is true +PASS 'onerror' 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 'readyState' in event.target is true +PASS event.target.readyState is event.target.DONE + +indexObject.getKey('value') +PASS 'onsuccess' in result is true +PASS 'onerror' 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 'readyState' in event.target is true +PASS event.target.readyState is event.target.DONE + +PASS event.result is "key" +indexObject.get('value') +PASS 'onsuccess' in result is true +PASS 'onerror' 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 'readyState' in event.target is true +PASS event.target.readyState is event.target.DONE + +PASS event.result.x is "value" +PASS event.result.y is "zzz" +indexObject.getKey('does not exist') +PASS 'onsuccess' in result is true +PASS 'onerror' 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 'readyState' in event.target is true +PASS event.target.readyState is event.target.DONE + +PASS event.code is webkitIDBDatabaseException.NOT_FOUND_ERR +indexObject.get('does not exist') +PASS 'onsuccess' in result is true +PASS 'onerror' 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 'readyState' in event.target is true +PASS event.target.readyState is event.target.DONE + +PASS event.code is webkitIDBDatabaseException.NOT_FOUND_ERR +indexObject.openKeyCursor() +PASS 'onsuccess' in result is true +PASS 'onerror' 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 'readyState' in event.target is true +PASS event.target.readyState is event.target.DONE + +PASS event.result === null is false +PASS event.result.key is "value" +PASS event.result.value is "key" +event.result.continue() +PASS 'onsuccess' in result is true +PASS 'onerror' 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 'readyState' in event.target is true +PASS event.target.readyState is event.target.DONE + +PASS event.result === null is false +PASS event.result.key is "value2" +PASS event.result.value is "key2" +event.result.continue() +PASS 'onsuccess' in result is true +PASS 'onerror' 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 'readyState' in event.target is true +PASS event.target.readyState is event.target.DONE + +PASS event.result === null is true +indexObject.openCursor() +PASS 'onsuccess' in result is true +PASS 'onerror' 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 'readyState' in event.target is true +PASS event.target.readyState is event.target.DONE + +PASS event.result === null is false +PASS event.result.key is "value" +PASS event.result.value.x is "value" +PASS event.result.value.y is "zzz" +event.result.continue() +PASS 'onsuccess' in result is true +PASS 'onerror' 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 'readyState' in event.target is true +PASS event.target.readyState is event.target.DONE + +PASS event.result === null is false +PASS event.result.key is "value2" +PASS event.result.value.x is "value2" +PASS event.result.value.y is "zzz2" +event.result.continue() +PASS 'onsuccess' in result is true +PASS 'onerror' 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 'readyState' in event.target is true +PASS event.target.readyState is event.target.DONE + +PASS event.result === null is true +webkitIndexedDB.open('name2', 'description2') +PASS 'onsuccess' in result is true +PASS 'onerror' 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 'readyState' in event.target is true +PASS event.target.readyState is event.target.DONE + +db = event.result +db.setVersion('new version') +PASS 'onsuccess' in result is true +PASS 'onerror' in result is true +PASS 'readyState' in result is true +An event should fire shortly... + +setVersionSuccess(): +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 'readyState' in event.target is true +PASS event.target.readyState is event.target.DONE + +trans = event.result +PASS trans !== null is true +Deleted all object stores. +db.createObjectStore('storeName', null) +store.createIndex('indexName', 'x') +store.add({x: 'value', y: 'zzz'}, 'key') +PASS 'onsuccess' in result is true +PASS 'onerror' 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 'readyState' in event.target is true +PASS event.target.readyState is event.target.DONE + +event.source.add({x: 'value2', y: 'zzz2'}, 'key2') +PASS 'onsuccess' in result is true +PASS 'onerror' 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 'readyState' in event.target is true +PASS event.target.readyState is event.target.DONE + +indexObject.getKey('value') +PASS 'onsuccess' in result is true +PASS 'onerror' 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 'readyState' in event.target is true +PASS event.target.readyState is event.target.DONE + +PASS event.result is "key" +indexObject.get('value') +PASS 'onsuccess' in result is true +PASS 'onerror' 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 'readyState' in event.target is true +PASS event.target.readyState is event.target.DONE + +PASS event.result.x is "value" +PASS event.result.y is "zzz" +indexObject.getKey('does not exist') +PASS 'onsuccess' in result is true +PASS 'onerror' 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 'readyState' in event.target is true +PASS event.target.readyState is event.target.DONE + +PASS event.code is webkitIDBDatabaseException.NOT_FOUND_ERR +indexObject.get('does not exist') +PASS 'onsuccess' in result is true +PASS 'onerror' 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 'readyState' in event.target is true +PASS event.target.readyState is event.target.DONE + +PASS event.code is webkitIDBDatabaseException.NOT_FOUND_ERR +indexObject.openKeyCursor() +PASS 'onsuccess' in result is true +PASS 'onerror' 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 'readyState' in event.target is true +PASS event.target.readyState is event.target.DONE + +PASS event.result === null is false +PASS event.result.key is "value" +PASS event.result.value is "key" +event.result.continue() +PASS 'onsuccess' in result is true +PASS 'onerror' 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 'readyState' in event.target is true +PASS event.target.readyState is event.target.DONE + +PASS event.result === null is false +PASS event.result.key is "value2" +PASS event.result.value is "key2" +event.result.continue() +PASS 'onsuccess' in result is true +PASS 'onerror' 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 'readyState' in event.target is true +PASS event.target.readyState is event.target.DONE + +PASS event.result === null is true +indexObject.openCursor() +PASS 'onsuccess' in result is true +PASS 'onerror' 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 'readyState' in event.target is true +PASS event.target.readyState is event.target.DONE + +PASS event.result === null is false +PASS event.result.key is "value" +PASS event.result.value.x is "value" +PASS event.result.value.y is "zzz" +event.result.continue() +PASS 'onsuccess' in result is true +PASS 'onerror' 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 'readyState' in event.target is true +PASS event.target.readyState is event.target.DONE + +PASS event.result === null is false +PASS event.result.key is "value2" +PASS event.result.value.x is "value2" +PASS event.result.value.y is "zzz2" +event.result.continue() +PASS 'onsuccess' in result is true +PASS 'onerror' 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 'readyState' in event.target is true +PASS event.target.readyState is event.target.DONE + +PASS event.result === null is true +PASS successfullyParsed is true + +TEST COMPLETE + diff --git a/LayoutTests/storage/indexeddb/duplicates.html b/LayoutTests/storage/indexeddb/duplicates.html new file mode 100644 index 0000000..70cf8c4 --- /dev/null +++ b/LayoutTests/storage/indexeddb/duplicates.html @@ -0,0 +1,213 @@ + + + + + + + + +

+
+ + + diff --git a/LayoutTests/storage/indexeddb/index-basics-expected.txt b/LayoutTests/storage/indexeddb/index-basics-expected.txt index 0869d95..f886a19 100644 --- a/LayoutTests/storage/indexeddb/index-basics-expected.txt +++ b/LayoutTests/storage/indexeddb/index-basics-expected.txt @@ -300,6 +300,10 @@ PASS 'readyState' in event.target is true PASS event.target.readyState is event.target.DONE PASS event.result === null is true +Passing an invalid key into indexObject.get(). +PASS Caught exception: Error: TYPE_MISMATCH_ERR: DOM Exception 17 +Passing an invalid key into indexObject.getKey(). +PASS Caught exception: Error: TYPE_MISMATCH_ERR: DOM Exception 17 PASS successfullyParsed is true TEST COMPLETE diff --git a/LayoutTests/storage/indexeddb/index-basics.html b/LayoutTests/storage/indexeddb/index-basics.html index f7257f1..7a16c3a 100644 --- a/LayoutTests/storage/indexeddb/index-basics.html +++ b/LayoutTests/storage/indexeddb/index-basics.html @@ -219,6 +219,21 @@ function last() verifySuccessEvent(event); shouldBeTrue("event.result === null"); + try { + debug("Passing an invalid key into indexObject.get()."); + indexObject.get([]); + testFailed("No exception thrown"); + } catch (e) { + testPassed("Caught exception: " + e.toString()); + } + + try { + debug("Passing an invalid key into indexObject.getKey()."); + indexObject.getKey([]); + testFailed("No exception thrown"); + } catch (e) { + testPassed("Caught exception: " + e.toString()); + } done(); } diff --git a/LayoutTests/storage/indexeddb/index-cursor-expected.txt b/LayoutTests/storage/indexeddb/index-cursor-expected.txt index 88b96ff..bc01070 100644 --- a/LayoutTests/storage/indexeddb/index-cursor-expected.txt +++ b/LayoutTests/storage/indexeddb/index-cursor-expected.txt @@ -2058,6 +2058,44 @@ PASS event.result.key is testData[7] PASS event.result.value is expectedIndex PASS event.result.key is testData[6] PASS event.result is null + +Next test: null key path sorted ascending. +PASS event.result.value is expectedIndex +PASS event.result.key is testData[0] +PASS event.result.value is expectedIndex +PASS event.result.key is testData[1] +PASS event.result.value is expectedIndex +PASS event.result.key is testData[2] +PASS event.result.value is expectedIndex +PASS event.result.key is testData[3] +PASS event.result.value is expectedIndex +PASS event.result.key is testData[4] +PASS event.result.value is expectedIndex +PASS event.result.key is testData[5] +PASS event.result.value is expectedIndex +PASS event.result.key is testData[6] +PASS event.result.value is expectedIndex +PASS event.result.key is testData[7] +PASS event.result is null + +Next test: null key path sorted descending. +PASS event.result.value is expectedIndex +PASS event.result.key is testData[7] +PASS event.result.value is expectedIndex +PASS event.result.key is testData[6] +PASS event.result.value is expectedIndex +PASS event.result.key is testData[5] +PASS event.result.value is expectedIndex +PASS event.result.key is testData[4] +PASS event.result.value is expectedIndex +PASS event.result.key is testData[3] +PASS event.result.value is expectedIndex +PASS event.result.key is testData[2] +PASS event.result.value is expectedIndex +PASS event.result.key is testData[1] +PASS event.result.value is expectedIndex +PASS event.result.key is testData[0] +PASS event.result is null PASS successfullyParsed is true TEST COMPLETE diff --git a/LayoutTests/storage/indexeddb/index-cursor.html b/LayoutTests/storage/indexeddb/index-cursor.html index 5aab4f8..6a9d1ac 100644 --- a/LayoutTests/storage/indexeddb/index-cursor.html +++ b/LayoutTests/storage/indexeddb/index-cursor.html @@ -107,7 +107,7 @@ function scheduleTests() function runNextTest() { if (!scheduledTests.length) { - done(); + testNullKeyRange(); return; } @@ -226,6 +226,38 @@ function cursorIteration() event.result.continue(); } +window.nullKeyRangeStep = 0; +function testNullKeyRange() +{ + window.lower = 0; + window.lowerIsOpen = false; + window.upper = testData.length-1; + window.upperIsOpen = false; + + str = "Next test: null key path "; + if (window.nullKeyRangeStep == 0) { + str += "sorted ascending."; + window.ascending = true; + window.expectedIndex = lower; + window.nullKeyRangeStep = 1; + } else if (window.nullKeyRangeStep == 1) { + str += "sorted descending."; + window.ascending = false; + window.expectedIndex = upper; + window.nullKeyRangeStep = 2; + } else { + done(); + return; + } + + debug(""); + debug(str); + + var request = indexObject.openKeyCursor(null, ascending ? webkitIDBCursor.NEXT : webkitIDBCursor.PREV); + request.onsuccess = cursorIteration; + request.onerror = unexpectedErrorCallback; +} + openDatabase(); // The first step. var successfullyParsed = true; diff --git a/LayoutTests/storage/indexeddb/keyrange-expected.txt b/LayoutTests/storage/indexeddb/keyrange-expected.txt index 8d6bf86..1a7dfff 100644 --- a/LayoutTests/storage/indexeddb/keyrange-expected.txt +++ b/LayoutTests/storage/indexeddb/keyrange-expected.txt @@ -141,6 +141,18 @@ PASS keyRange.left is 'aaf' PASS keyRange.right is 'abf' PASS leftFlags is keyRange.LEFT_OPEN | keyRange.LEFT_BOUND PASS rightFlags is keyRange.RIGHT_OPEN | keyRange.RIGHT_BOUND +Passing an invalid key into only([]) +PASS Caught exception: Error: TYPE_MISMATCH_ERR: DOM Exception 17 +Passing an invalid key into rightBound([]) +PASS Caught exception: Error: TYPE_MISMATCH_ERR: DOM Exception 17 +Passing an invalid key into leftBound([]) +PASS Caught exception: Error: TYPE_MISMATCH_ERR: DOM Exception 17 +Passing an invalid key into bound(null, []) +PASS Caught exception: Error: TYPE_MISMATCH_ERR: DOM Exception 17 +Passing an invalid key into bound([],null) +PASS Caught exception: Error: TYPE_MISMATCH_ERR: DOM Exception 17 +Passing an invalid key into bound([], []) +PASS Caught exception: Error: TYPE_MISMATCH_ERR: DOM Exception 17 PASS successfullyParsed is true TEST COMPLETE diff --git a/LayoutTests/storage/indexeddb/keyrange.html b/LayoutTests/storage/indexeddb/keyrange.html index c3885fc..48708d9 100644 --- a/LayoutTests/storage/indexeddb/keyrange.html +++ b/LayoutTests/storage/indexeddb/keyrange.html @@ -112,6 +112,53 @@ function test() checkBoundKeyRange("'aae'", "'abe'", true, false); checkBoundKeyRange("'aaf'", "'abf'", true, true); + try { + debug("Passing an invalid key into only([])"); + webkitIDBKeyRange.only([]); + testFailed("No exception thrown"); + } catch (e) { + testPassed("Caught exception: " + e.toString()); + } + + try { + debug("Passing an invalid key into rightBound([])"); + webkitIDBKeyRange.rightBound([]); + testFailed("No exception thrown"); + } catch (e) { + testPassed("Caught exception: " + e.toString()); + } + + try { + debug("Passing an invalid key into leftBound([])"); + webkitIDBKeyRange.leftBound([]); + testFailed("No exception thrown"); + } catch (e) { + testPassed("Caught exception: " + e.toString()); + } + + try { + debug("Passing an invalid key into bound(null, [])"); + webkitIDBKeyRange.bound(null, []); + testFailed("No exception thrown"); + } catch (e) { + testPassed("Caught exception: " + e.toString()); + } + + try { + debug("Passing an invalid key into bound([],null)"); + webkitIDBKeyRange.bound([], null); + testFailed("No exception thrown"); + } catch (e) { + testPassed("Caught exception: " + e.toString()); + } + + try { + debug("Passing an invalid key into bound([], [])"); + webkitIDBKeyRange.bound([], []); + testFailed("No exception thrown"); + } catch (e) { + testPassed("Caught exception: " + e.toString()); + } } test(); diff --git a/LayoutTests/storage/indexeddb/objectstore-basics-expected.txt b/LayoutTests/storage/indexeddb/objectstore-basics-expected.txt index d22e6f0..e0c9770 100644 --- a/LayoutTests/storage/indexeddb/objectstore-basics-expected.txt +++ b/LayoutTests/storage/indexeddb/objectstore-basics-expected.txt @@ -43,7 +43,7 @@ PASS event.target.readyState is event.target.DONE trans = event.result PASS trans !== null is true Deleted all object stores. -creatObjectStore(): +createObjectStore(): store = db.createObjectStore('storeName', null) storeNames = db.objectStores PASS store.name is "storeName" @@ -176,6 +176,15 @@ PASS 'readyState' in event.target is true PASS event.target.readyState is event.target.DONE PASS event.result is null +store = event.source +Passing an invalid key into store.get(). +PASS Caught exception: Error: TYPE_MISMATCH_ERR: DOM Exception 17 +Passing an invalid key into store.remove(). +PASS Caught exception: Error: TYPE_MISMATCH_ERR: DOM Exception 17 +Passing an invalid key into store.add(). +PASS Caught exception: Error: TYPE_MISMATCH_ERR: DOM Exception 17 +Passing an invalid key into store.put(). +PASS Caught exception: Error: TYPE_MISMATCH_ERR: DOM Exception 17 PASS successfullyParsed is true TEST COMPLETE diff --git a/LayoutTests/storage/indexeddb/objectstore-basics.html b/LayoutTests/storage/indexeddb/objectstore-basics.html index 9730db8..005247e 100644 --- a/LayoutTests/storage/indexeddb/objectstore-basics.html +++ b/LayoutTests/storage/indexeddb/objectstore-basics.html @@ -47,7 +47,7 @@ function setVersionSuccess() function createObjectStore() { - debug("creatObjectStore():"); + debug("createObjectStore():"); window.store = evalAndLog("store = db.createObjectStore('storeName', null)"); var storeNames = evalAndLog("storeNames = db.objectStores"); @@ -195,6 +195,40 @@ function removeSuccess() debug("removeSuccess():"); verifySuccessEvent(event); shouldBeNull("event.result"); + var store = evalAndLog("store = event.source"); + + try { + debug("Passing an invalid key into store.get()."); + store.get([]); + testFailed("No exception thrown"); + } catch (e) { + testPassed("Caught exception: " + e.toString()); + } + + try { + debug("Passing an invalid key into store.remove()."); + store.remove([]); + testFailed("No exception thrown"); + } catch (e) { + testPassed("Caught exception: " + e.toString()); + } + + try { + debug("Passing an invalid key into store.add()."); + store.add(null, []); + testFailed("No exception thrown"); + } catch (e) { + testPassed("Caught exception: " + e.toString()); + } + + try { + debug("Passing an invalid key into store.put()."); + store.put(null, []); + testFailed("No exception thrown"); + } catch (e) { + testPassed("Caught exception: " + e.toString()); + } + done(); } diff --git a/LayoutTests/storage/indexeddb/objectstore-cursor-expected.txt b/LayoutTests/storage/indexeddb/objectstore-cursor-expected.txt index 881fe92..1493a80 100644 --- a/LayoutTests/storage/indexeddb/objectstore-cursor-expected.txt +++ b/LayoutTests/storage/indexeddb/objectstore-cursor-expected.txt @@ -854,6 +854,26 @@ PASS event.result is null Next test: lower bound is 6; upper bound is 6; sorted descending. PASS event.result.key is testData[6] PASS event.result is null + +Next test: null key path sorted ascending. +PASS event.result.key is testData[0] +PASS event.result.key is testData[1] +PASS event.result.key is testData[2] +PASS event.result.key is testData[3] +PASS event.result.key is testData[4] +PASS event.result.key is testData[5] +PASS event.result.key is testData[6] +PASS event.result is null + +Next test: null key path sorted descending. +PASS event.result.key is testData[6] +PASS event.result.key is testData[5] +PASS event.result.key is testData[4] +PASS event.result.key is testData[3] +PASS event.result.key is testData[2] +PASS event.result.key is testData[1] +PASS event.result.key is testData[0] +PASS event.result is null PASS successfullyParsed is true TEST COMPLETE diff --git a/LayoutTests/storage/indexeddb/objectstore-cursor.html b/LayoutTests/storage/indexeddb/objectstore-cursor.html index d9ad805..d0d786b 100644 --- a/LayoutTests/storage/indexeddb/objectstore-cursor.html +++ b/LayoutTests/storage/indexeddb/objectstore-cursor.html @@ -105,7 +105,7 @@ function scheduleTests() function runNextTest() { if (!scheduledTests.length) { - done(); + testNullKeyRange(); return; } @@ -164,8 +164,7 @@ function runNextTest() else keyRange = webkitIDBKeyRange.rightBound(testData[upper], upperIsOpen); - // FIXME: Should be webkitIDBCursor.NEXT : webkitIDBCursor.PREV, but we can't do that yet. - var request = objectStore.openCursor(keyRange, ascending ? 0 : 2); + var request = objectStore.openCursor(keyRange, ascending ? webkitIDBCursor.NEXT : webkitIDBCursor.PREV); request.onsuccess = cursorIteration; request.onerror = unexpectedErrorCallback; } @@ -204,6 +203,38 @@ function cursorIteration() event.result.continue(); } +window.nullKeyRangeStep = 0; +function testNullKeyRange() +{ + window.lower = 0; + window.lowerIsOpen = false; + window.upper = testData.length-1; + window.upperIsOpen = false; + + str = "Next test: null key path "; + if (window.nullKeyRangeStep == 0) { + str += "sorted ascending."; + window.ascending = true; + window.expectedIndex = lower; + window.nullKeyRangeStep = 1; + } else if (window.nullKeyRangeStep == 1) { + str += "sorted descending."; + window.ascending = false; + window.expectedIndex = upper; + window.nullKeyRangeStep = 2; + } else { + done(); + return; + } + + debug(""); + debug(str); + + var request = objectStore.openCursor(null, ascending ? webkitIDBCursor.NEXT : webkitIDBCursor.PREV); + request.onsuccess = cursorIteration; + request.onerror = unexpectedErrorCallback; +} + openDatabase(); // The first step. var successfullyParsed = true; diff --git a/LayoutTests/storage/indexeddb/open-cursor-expected.txt b/LayoutTests/storage/indexeddb/open-cursor-expected.txt index 1bca527..c3c1a8d 100644 --- a/LayoutTests/storage/indexeddb/open-cursor-expected.txt +++ b/LayoutTests/storage/indexeddb/open-cursor-expected.txt @@ -72,6 +72,9 @@ PASS event.result.direction is 0 PASS event.result.key is 'myKey' PASS event.result.value is 'myValue' +Passing an invalid key into .continue(). +PASS Caught exception: Error: TYPE_MISMATCH_ERR: DOM Exception 17 + Opening an empty cursor. objectStore.openCursor(keyRange) PASS 'onsuccess' in result is true diff --git a/LayoutTests/storage/indexeddb/open-cursor.html b/LayoutTests/storage/indexeddb/open-cursor.html index ec62f2c..815c01b 100644 --- a/LayoutTests/storage/indexeddb/open-cursor.html +++ b/LayoutTests/storage/indexeddb/open-cursor.html @@ -41,6 +41,14 @@ function cursorSuccess() shouldBe("event.result.key", "'myKey'"); shouldBe("event.result.value", "'myValue'"); debug(""); + try { + debug("Passing an invalid key into .continue()."); + event.result.continue([]); + testFailed("No exception thrown"); + } catch (e) { + testPassed("Caught exception: " + e.toString()); + } + debug(""); openEmptyCursor(); } diff --git a/LayoutTests/storage/indexeddb/tutorial-expected.txt b/LayoutTests/storage/indexeddb/tutorial-expected.txt new file mode 100644 index 0000000..1e424ef --- /dev/null +++ b/LayoutTests/storage/indexeddb/tutorial-expected.txt @@ -0,0 +1,2 @@ +All done! + diff --git a/LayoutTests/storage/indexeddb/tutorial.html b/LayoutTests/storage/indexeddb/tutorial.html new file mode 100644 index 0000000..2e7e41f --- /dev/null +++ b/LayoutTests/storage/indexeddb/tutorial.html @@ -0,0 +1,433 @@ +IndexedDB Tutorial + + +Please view source for more information on what this is doing and why...

+ + -- cgit v1.1