From a94275402997c11dd2e778633dacf4b7e630a35d Mon Sep 17 00:00:00 2001 From: Ben Murdoch Date: Fri, 22 Oct 2010 13:02:20 +0100 Subject: Merge WebKit at r70209: Initial merge by Git Change-Id: Id23a68efa36e9d1126bcce0b137872db00892c8e --- .../dom/DeviceMotion/no-page-cache-expected.txt | 14 + .../fast/dom/DeviceMotion/no-page-cache.html | 12 + .../dom/DeviceMotion/resources/cached-page-1.html | 11 + .../dom/DeviceMotion/resources/cached-page-2.html | 8 + .../dom/DeviceMotion/script-tests/no-page-cache.js | 24 + .../create-event-onorientationchange-expected.txt | 16 + .../create-event-onorientationchange.html | 13 + .../event-after-navigation-expected.txt | 3 + .../DeviceOrientation/event-after-navigation.html | 12 + .../DeviceOrientation/no-page-cache-expected.txt | 14 + .../fast/dom/DeviceOrientation/no-page-cache.html | 12 + .../DeviceOrientation/resources/cached-page-1.html | 11 + .../DeviceOrientation/resources/cached-page-2.html | 8 + .../resources/event-after-navigation-new.html | 15 + .../create-event-onorientationchange.js | 18 + .../script-tests/event-after-navigation.js | 12 + .../script-tests/no-page-cache.js | 24 + .../set-href-attribute-prevents-rebase.js | 118 +++ ...set-href-attribute-prevents-rebase-expected.txt | 46 + .../set-href-attribute-prevents-rebase.html | 13 + LayoutTests/fast/js/resources/fs-test-post.js | 6 + LayoutTests/fast/js/resources/js-test-pre.js | 2 +- LayoutTests/fast/url/query-expected.txt | 2 +- .../url/script-tests/segments-from-data-url.js | 2 +- LayoutTests/fast/url/script-tests/segments.js | 2 +- LayoutTests/fast/url/segments-expected.txt | 2 +- .../fast/url/segments-from-data-url-expected.txt | 2 +- .../document-write-html-element-2-expected.txt | 2 + .../appcache/document-write-html-element-2.html | 19 + .../document-write-html-element-expected.txt | 1 + .../appcache/document-write-html-element.html | 26 + .../tests/appcache/fail-on-update-2-expected.txt | 1 + .../http/tests/appcache/fail-on-update-2.html | 64 ++ .../tests/appcache/foreign-fallback-expected.txt | 6 + .../http/tests/appcache/foreign-fallback.html | 48 + ...nsert-html-element-with-manifest-2-expected.txt | 1 + .../insert-html-element-with-manifest-2.html | 30 + .../insert-html-element-with-manifest-expected.txt | 1 + .../insert-html-element-with-manifest.html | 31 + .../appcache/main-resource-redirect-expected.txt | 4 + .../tests/appcache/main-resource-redirect.html | 39 + .../resources/document-write-html-element.manifest | 1 + .../tests/appcache/resources/fail-on-update-2.html | 7 + .../tests/appcache/resources/fail-on-update-2.php | 39 + .../resources/foreign-fallback-fallback.html | 2 + .../appcache/resources/foreign-fallback.manifest | 4 + .../insert-html-element-with-manifest.manifest | 1 + .../resources/main-resource-redirect-frame-2.html | 6 + .../resources/main-resource-redirect-frame.php | 4 + .../resources/main-resource-redirect.manifest | 4 + LayoutTests/storage/indexeddb/basics-expected.txt | 12 +- LayoutTests/storage/indexeddb/basics.html | 42 +- .../storage/indexeddb/constants-expected.txt | 52 +- LayoutTests/storage/indexeddb/constants.html | 60 +- .../storage/indexeddb/database-basics-expected.txt | 42 +- LayoutTests/storage/indexeddb/database-basics.html | 79 +- .../storage/indexeddb/database-quota-expected.txt | 1115 ++++++++++++++++++++ LayoutTests/storage/indexeddb/database-quota.html | 126 +++ .../storage/indexeddb/index-basics-expected.txt | 63 +- LayoutTests/storage/indexeddb/index-basics.html | 74 +- .../storage/indexeddb/index-cursor-expected.txt | 39 +- LayoutTests/storage/indexeddb/index-cursor.html | 50 +- .../storage/indexeddb/keyrange-expected.txt | 76 +- LayoutTests/storage/indexeddb/keyrange.html | 34 +- .../indexeddb/objectstore-basics-expected.txt | 59 +- .../storage/indexeddb/objectstore-basics.html | 118 ++- .../indexeddb/objectstore-cursor-expected.txt | 20 +- .../storage/indexeddb/objectstore-cursor.html | 46 +- .../objectstore-removeobjectstore-expected.txt | 51 +- .../indexeddb/objectstore-removeobjectstore.html | 61 +- .../storage/indexeddb/open-cursor-expected.txt | 12 +- LayoutTests/storage/indexeddb/open-cursor.html | 33 +- .../storage/indexeddb/queued-commands-expected.txt | 104 ++ LayoutTests/storage/indexeddb/queued-commands.html | 87 ++ LayoutTests/storage/indexeddb/resources/shared.js | 33 +- .../indexeddb/transaction-basics-expected.txt | 144 ++- .../storage/indexeddb/transaction-basics.html | 221 +++- 77 files changed, 3155 insertions(+), 461 deletions(-) create mode 100644 LayoutTests/fast/dom/DeviceMotion/no-page-cache-expected.txt create mode 100644 LayoutTests/fast/dom/DeviceMotion/no-page-cache.html create mode 100644 LayoutTests/fast/dom/DeviceMotion/resources/cached-page-1.html create mode 100644 LayoutTests/fast/dom/DeviceMotion/resources/cached-page-2.html create mode 100644 LayoutTests/fast/dom/DeviceMotion/script-tests/no-page-cache.js create mode 100644 LayoutTests/fast/dom/DeviceOrientation/create-event-onorientationchange-expected.txt create mode 100644 LayoutTests/fast/dom/DeviceOrientation/create-event-onorientationchange.html create mode 100644 LayoutTests/fast/dom/DeviceOrientation/event-after-navigation-expected.txt create mode 100644 LayoutTests/fast/dom/DeviceOrientation/event-after-navigation.html create mode 100644 LayoutTests/fast/dom/DeviceOrientation/no-page-cache-expected.txt create mode 100644 LayoutTests/fast/dom/DeviceOrientation/no-page-cache.html create mode 100644 LayoutTests/fast/dom/DeviceOrientation/resources/cached-page-1.html create mode 100644 LayoutTests/fast/dom/DeviceOrientation/resources/cached-page-2.html create mode 100644 LayoutTests/fast/dom/DeviceOrientation/resources/event-after-navigation-new.html create mode 100644 LayoutTests/fast/dom/DeviceOrientation/script-tests/create-event-onorientationchange.js create mode 100644 LayoutTests/fast/dom/DeviceOrientation/script-tests/event-after-navigation.js create mode 100644 LayoutTests/fast/dom/DeviceOrientation/script-tests/no-page-cache.js create mode 100644 LayoutTests/fast/dom/HTMLAnchorElement/script-tests/set-href-attribute-prevents-rebase.js create mode 100644 LayoutTests/fast/dom/HTMLAnchorElement/set-href-attribute-prevents-rebase-expected.txt create mode 100644 LayoutTests/fast/dom/HTMLAnchorElement/set-href-attribute-prevents-rebase.html create mode 100644 LayoutTests/fast/js/resources/fs-test-post.js create mode 100644 LayoutTests/http/tests/appcache/document-write-html-element-2-expected.txt create mode 100644 LayoutTests/http/tests/appcache/document-write-html-element-2.html create mode 100644 LayoutTests/http/tests/appcache/document-write-html-element-expected.txt create mode 100644 LayoutTests/http/tests/appcache/document-write-html-element.html create mode 100644 LayoutTests/http/tests/appcache/fail-on-update-2-expected.txt create mode 100644 LayoutTests/http/tests/appcache/fail-on-update-2.html create mode 100644 LayoutTests/http/tests/appcache/foreign-fallback-expected.txt create mode 100644 LayoutTests/http/tests/appcache/foreign-fallback.html create mode 100644 LayoutTests/http/tests/appcache/insert-html-element-with-manifest-2-expected.txt create mode 100644 LayoutTests/http/tests/appcache/insert-html-element-with-manifest-2.html create mode 100644 LayoutTests/http/tests/appcache/insert-html-element-with-manifest-expected.txt create mode 100644 LayoutTests/http/tests/appcache/insert-html-element-with-manifest.html create mode 100644 LayoutTests/http/tests/appcache/main-resource-redirect-expected.txt create mode 100644 LayoutTests/http/tests/appcache/main-resource-redirect.html create mode 100644 LayoutTests/http/tests/appcache/resources/document-write-html-element.manifest create mode 100644 LayoutTests/http/tests/appcache/resources/fail-on-update-2.html create mode 100644 LayoutTests/http/tests/appcache/resources/fail-on-update-2.php create mode 100644 LayoutTests/http/tests/appcache/resources/foreign-fallback-fallback.html create mode 100644 LayoutTests/http/tests/appcache/resources/foreign-fallback.manifest create mode 100644 LayoutTests/http/tests/appcache/resources/insert-html-element-with-manifest.manifest create mode 100644 LayoutTests/http/tests/appcache/resources/main-resource-redirect-frame-2.html create mode 100644 LayoutTests/http/tests/appcache/resources/main-resource-redirect-frame.php create mode 100644 LayoutTests/http/tests/appcache/resources/main-resource-redirect.manifest create mode 100644 LayoutTests/storage/indexeddb/database-quota-expected.txt create mode 100644 LayoutTests/storage/indexeddb/database-quota.html create mode 100644 LayoutTests/storage/indexeddb/queued-commands-expected.txt create mode 100644 LayoutTests/storage/indexeddb/queued-commands.html (limited to 'LayoutTests') diff --git a/LayoutTests/fast/dom/DeviceMotion/no-page-cache-expected.txt b/LayoutTests/fast/dom/DeviceMotion/no-page-cache-expected.txt new file mode 100644 index 0000000..1dee7cd --- /dev/null +++ b/LayoutTests/fast/dom/DeviceMotion/no-page-cache-expected.txt @@ -0,0 +1,14 @@ +Tests that pages that use DeviceMotion are not put in the page cache. + +On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE". + + +Main page opening resources/cached-page-1.html +resources/cached-page-1.html onload fired, count = 1 +resources/cached-page-1.html about to navigate to resources/cached-page-2.html +resources/cached-page-2.html about to go back to resources/cached-page-1.html +resources/cached-page-1.html onload fired, count = 2 +PASS successfullyParsed is true + +TEST COMPLETE + diff --git a/LayoutTests/fast/dom/DeviceMotion/no-page-cache.html b/LayoutTests/fast/dom/DeviceMotion/no-page-cache.html new file mode 100644 index 0000000..2e09eac --- /dev/null +++ b/LayoutTests/fast/dom/DeviceMotion/no-page-cache.html @@ -0,0 +1,12 @@ + + + + + + +

+
+ + + + diff --git a/LayoutTests/fast/dom/DeviceMotion/resources/cached-page-1.html b/LayoutTests/fast/dom/DeviceMotion/resources/cached-page-1.html new file mode 100644 index 0000000..759fbf9 --- /dev/null +++ b/LayoutTests/fast/dom/DeviceMotion/resources/cached-page-1.html @@ -0,0 +1,11 @@ + + diff --git a/LayoutTests/fast/dom/DeviceMotion/resources/cached-page-2.html b/LayoutTests/fast/dom/DeviceMotion/resources/cached-page-2.html new file mode 100644 index 0000000..5478f9c --- /dev/null +++ b/LayoutTests/fast/dom/DeviceMotion/resources/cached-page-2.html @@ -0,0 +1,8 @@ + + diff --git a/LayoutTests/fast/dom/DeviceMotion/script-tests/no-page-cache.js b/LayoutTests/fast/dom/DeviceMotion/script-tests/no-page-cache.js new file mode 100644 index 0000000..67cfcf6 --- /dev/null +++ b/LayoutTests/fast/dom/DeviceMotion/script-tests/no-page-cache.js @@ -0,0 +1,24 @@ +description('Tests that pages that use DeviceMotion are not put in the page cache.'); + +if (window.layoutTestController) { + layoutTestController.waitUntilDone(); + layoutTestController.setCanOpenWindows(); + layoutTestController.overridePreference('WebKitUsesPageCachePreferenceKey', 1); +} else + debug('This test can not be run without the LayoutTestController'); + +var pageOneOnloadCount = 0; +function reportPageOneOnload() { + ++pageOneOnloadCount; + debug('resources/cached-page-1.html onload fired, count = ' + pageOneOnloadCount); + if (pageOneOnloadCount == 2) { + finishJSTest(); + } + return pageOneOnloadCount; +} + +debug("Main page opening resources/cached-page-1.html"); +window.open("resources/cached-page-1.html"); + +window.jsTestIsAsync = true; +window.successfullyParsed = true; diff --git a/LayoutTests/fast/dom/DeviceOrientation/create-event-onorientationchange-expected.txt b/LayoutTests/fast/dom/DeviceOrientation/create-event-onorientationchange-expected.txt new file mode 100644 index 0000000..0f0aac6 --- /dev/null +++ b/LayoutTests/fast/dom/DeviceOrientation/create-event-onorientationchange-expected.txt @@ -0,0 +1,16 @@ +Tests that document.createEvent() works with orientationChange + +On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE". + + + +FAIL... orientationChange event doesn't appear to be enabled or implemented. + + +PASS successfullyParsed is true + +TEST COMPLETE + + + + diff --git a/LayoutTests/fast/dom/DeviceOrientation/create-event-onorientationchange.html b/LayoutTests/fast/dom/DeviceOrientation/create-event-onorientationchange.html new file mode 100644 index 0000000..7a033e0 --- /dev/null +++ b/LayoutTests/fast/dom/DeviceOrientation/create-event-onorientationchange.html @@ -0,0 +1,13 @@ + + + + + + +

+

+
+ + + + diff --git a/LayoutTests/fast/dom/DeviceOrientation/event-after-navigation-expected.txt b/LayoutTests/fast/dom/DeviceOrientation/event-after-navigation-expected.txt new file mode 100644 index 0000000..8e6bc39 --- /dev/null +++ b/LayoutTests/fast/dom/DeviceOrientation/event-after-navigation-expected.txt @@ -0,0 +1,3 @@ +Tests for a crash where an event is fired after the page has been navigated away when the original page is in the page cache. + +SUCCESS diff --git a/LayoutTests/fast/dom/DeviceOrientation/event-after-navigation.html b/LayoutTests/fast/dom/DeviceOrientation/event-after-navigation.html new file mode 100644 index 0000000..ced3703 --- /dev/null +++ b/LayoutTests/fast/dom/DeviceOrientation/event-after-navigation.html @@ -0,0 +1,12 @@ + + + + + + +

+
+ + + + diff --git a/LayoutTests/fast/dom/DeviceOrientation/no-page-cache-expected.txt b/LayoutTests/fast/dom/DeviceOrientation/no-page-cache-expected.txt new file mode 100644 index 0000000..0217208 --- /dev/null +++ b/LayoutTests/fast/dom/DeviceOrientation/no-page-cache-expected.txt @@ -0,0 +1,14 @@ +Tests that pages that use DeviceOrientation are not put in the page cache. + +On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE". + + +Main page opening resources/cached-page-1.html +resources/cached-page-1.html onload fired, count = 1 +resources/cached-page-1.html about to navigate to resources/cached-page-2.html +resources/cached-page-2.html about to go back to resources/cached-page-1.html +resources/cached-page-1.html onload fired, count = 2 +PASS successfullyParsed is true + +TEST COMPLETE + diff --git a/LayoutTests/fast/dom/DeviceOrientation/no-page-cache.html b/LayoutTests/fast/dom/DeviceOrientation/no-page-cache.html new file mode 100644 index 0000000..2e09eac --- /dev/null +++ b/LayoutTests/fast/dom/DeviceOrientation/no-page-cache.html @@ -0,0 +1,12 @@ + + + + + + +

+
+ + + + diff --git a/LayoutTests/fast/dom/DeviceOrientation/resources/cached-page-1.html b/LayoutTests/fast/dom/DeviceOrientation/resources/cached-page-1.html new file mode 100644 index 0000000..2d76889 --- /dev/null +++ b/LayoutTests/fast/dom/DeviceOrientation/resources/cached-page-1.html @@ -0,0 +1,11 @@ + + diff --git a/LayoutTests/fast/dom/DeviceOrientation/resources/cached-page-2.html b/LayoutTests/fast/dom/DeviceOrientation/resources/cached-page-2.html new file mode 100644 index 0000000..5478f9c --- /dev/null +++ b/LayoutTests/fast/dom/DeviceOrientation/resources/cached-page-2.html @@ -0,0 +1,8 @@ + + diff --git a/LayoutTests/fast/dom/DeviceOrientation/resources/event-after-navigation-new.html b/LayoutTests/fast/dom/DeviceOrientation/resources/event-after-navigation-new.html new file mode 100644 index 0000000..157e050 --- /dev/null +++ b/LayoutTests/fast/dom/DeviceOrientation/resources/event-after-navigation-new.html @@ -0,0 +1,15 @@ + + + + + Tests for a crash where an event is fired after the page has been navigated + away when the original page is in the page cache.

+ SUCCESS + + + diff --git a/LayoutTests/fast/dom/DeviceOrientation/script-tests/create-event-onorientationchange.js b/LayoutTests/fast/dom/DeviceOrientation/script-tests/create-event-onorientationchange.js new file mode 100644 index 0000000..a63685b --- /dev/null +++ b/LayoutTests/fast/dom/DeviceOrientation/script-tests/create-event-onorientationchange.js @@ -0,0 +1,18 @@ +description('Tests that document.createEvent() works with orientationChange') + +function handleOrientationChange() +{ + document.getElementById('result').innerHTML = "PASS"; +} + +window.addEventListener('onorientationchange', handleOrientationChange, false); + +try { + var event = document.createEvent("OrientationEvent"); + event.initEvent("orientationchange", false, false); + window.dispatchEvent(event); +} catch(e) { + document.getElementById('result').innerHTML = "FAIL... orientationChange event doesn't appear to be enabled or implemented."; +} + +window.successfullyParsed = true; diff --git a/LayoutTests/fast/dom/DeviceOrientation/script-tests/event-after-navigation.js b/LayoutTests/fast/dom/DeviceOrientation/script-tests/event-after-navigation.js new file mode 100644 index 0000000..2756e55 --- /dev/null +++ b/LayoutTests/fast/dom/DeviceOrientation/script-tests/event-after-navigation.js @@ -0,0 +1,12 @@ +description('Tests for a crash where an event is fired after the page has been navigated away when the original page is in the page cache.'); + +if (window.layoutTestController) + layoutTestController.overridePreference('WebKitUsesPageCachePreferenceKey', 1); +else + debug('This test can not be run without the LayoutTestController'); + +window.addEventListener('deviceorientation', function() { } ); +window.location = "resources/event-after-navigation-new.html"; + +window.jsTestIsAsync = true; +window.successfullyParsed = true; diff --git a/LayoutTests/fast/dom/DeviceOrientation/script-tests/no-page-cache.js b/LayoutTests/fast/dom/DeviceOrientation/script-tests/no-page-cache.js new file mode 100644 index 0000000..cbfb501 --- /dev/null +++ b/LayoutTests/fast/dom/DeviceOrientation/script-tests/no-page-cache.js @@ -0,0 +1,24 @@ +description('Tests that pages that use DeviceOrientation are not put in the page cache.'); + +if (window.layoutTestController) { + layoutTestController.waitUntilDone(); + layoutTestController.setCanOpenWindows(); + layoutTestController.overridePreference('WebKitUsesPageCachePreferenceKey', 1); +} else + debug('This test can not be run without the LayoutTestController'); + +var pageOneOnloadCount = 0; +function reportPageOneOnload() { + ++pageOneOnloadCount; + debug('resources/cached-page-1.html onload fired, count = ' + pageOneOnloadCount); + if (pageOneOnloadCount == 2) { + finishJSTest(); + } + return pageOneOnloadCount; +} + +debug("Main page opening resources/cached-page-1.html"); +window.open("resources/cached-page-1.html"); + +window.jsTestIsAsync = true; +window.successfullyParsed = true; diff --git a/LayoutTests/fast/dom/HTMLAnchorElement/script-tests/set-href-attribute-prevents-rebase.js b/LayoutTests/fast/dom/HTMLAnchorElement/script-tests/set-href-attribute-prevents-rebase.js new file mode 100644 index 0000000..139a9e5 --- /dev/null +++ b/LayoutTests/fast/dom/HTMLAnchorElement/script-tests/set-href-attribute-prevents-rebase.js @@ -0,0 +1,118 @@ +description('Tests that when an href attribute is set, the href is no longer subject to updates to the document base URI.'); + +var a = document.createElement('a'); +var base = document.createElement('base'); +document.head.appendChild(base); + + +debug("Search attribute, update document base URI without attribute having been set"); +base.href = "http://old_base/"; +a.href = "?search"; +base.href = "http://new_base/"; +shouldBe("a.href", "'http://new_base/?search'"); + +debug("Search attribute, update document base URI after attribute has been set"); +base.href = "http://old_base/"; +a.href = "?foo"; +a.search = "search"; +base.href = "http://new_base/"; +shouldBe("a.href", "'http://old_base/?search'"); +debug(''); + + +debug("Pathname attribute, update document base URI without attribute having been set"); +base.href = "http://old_base/"; +a.href = "path"; +base.href = "http://new_base/"; +shouldBe("a.href", "'http://new_base/path'"); + +debug("Pathname attribute, update document base URI after attribute has been set"); +base.href = "http://old_base/"; +a.href = "foo"; +a.pathname = "path"; +base.href = "http://new_base/"; +shouldBe("a.href", "'http://old_base/path'"); +debug(''); + + +debug("Hash attribute, update document base URI without attribute having been set"); +base.href = "http://old_base/"; +a.href = "#hash"; +base.href = "http://new_base/"; +shouldBe("a.href", "'http://new_base/#hash'"); + +debug("Pathname attribute, update document base URI after attribute has been set"); +base.href = "http://old_base/"; +a.href = "#foo"; +a.hash = "hash"; +base.href = "http://new_base/"; +shouldBe("a.href", "'http://old_base/#hash'"); +debug(''); + + +debug('Note that for the following attributes, updating the document base URI has no effect because we have to use an abosulte URL for the href in order to set an initial value for the attribute we wish to update. They are included for completeness.'); +debug(''); + + +debug("Host attribute, update document base URI without attribute having been set"); +base.href = "http://old_base/"; +a.href = "http://host:0"; +base.href = "http://new_base/"; +shouldBe("a.href", "'http://host:0/'"); + +debug("Host attribute, update document base URI after attribute has been set"); +base.href = "http://old_base/"; +a.href = "http://foo:80"; +a.host = "host:0"; +base.href = "http://new_base/"; +shouldBe("a.href", "'http://host:0/'"); +debug(''); + + +debug("Hostname attribute, update document base URI without attribute having been set"); +base.href = "http://old_base/"; +a.href = "http://host"; +base.href = "http://new_base/"; +shouldBe("a.href", "'http://host/'"); + +debug("Hostname attribute, update document base URI after attribute has been set"); +base.href = "http://old_base/"; +a.href = "http://foo"; +a.hostname = "host"; +base.href = "http://new_base/"; +shouldBe("a.href", "'http://host/'"); +debug(''); + + +debug("Protocol attribute, update document base URI without attribute having been set"); +base.href = "http://old_base/"; +a.href = "protocol:"; +base.href = "http://new_base/"; +shouldBe("a.href", "'protocol:'"); + +debug("Protocol attribute, update document base URI after attribute has been set"); +base.href = "http://old_base/"; +a.href = "foo:"; +a.protocol = "protocol:"; +base.href = "http://new_base/"; +shouldBe("a.href", "'protocol:'"); +debug(''); + + +debug("Port attribute, update document base URI without attribute having been set"); +base.href = "http://old_base/"; +a.href = "http://host:0"; +base.href = "http://new_base/"; +shouldBe("a.href", "'http://host:0/'"); + +debug("Port attribute, update document base URI after attribute has been set"); +base.href = "http://old_base/"; +a.href = "http://host:80"; +a.port = 0; +base.href = "http://new_base/"; +shouldBe("a.href", "'http://host:0/'"); +debug(''); + + +base.href = ''; +var successfullyParsed = true; diff --git a/LayoutTests/fast/dom/HTMLAnchorElement/set-href-attribute-prevents-rebase-expected.txt b/LayoutTests/fast/dom/HTMLAnchorElement/set-href-attribute-prevents-rebase-expected.txt new file mode 100644 index 0000000..c7de5cb --- /dev/null +++ b/LayoutTests/fast/dom/HTMLAnchorElement/set-href-attribute-prevents-rebase-expected.txt @@ -0,0 +1,46 @@ +Tests that when an href attribute is set, the href is no longer subject to updates to the document base URI. + +On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE". + + +Search attribute, update document base URI without attribute having been set +PASS a.href is 'http://new_base/?search' +Search attribute, update document base URI after attribute has been set +PASS a.href is 'http://old_base/?search' + +Pathname attribute, update document base URI without attribute having been set +PASS a.href is 'http://new_base/path' +Pathname attribute, update document base URI after attribute has been set +PASS a.href is 'http://old_base/path' + +Hash attribute, update document base URI without attribute having been set +PASS a.href is 'http://new_base/#hash' +Pathname attribute, update document base URI after attribute has been set +PASS a.href is 'http://old_base/#hash' + +Note that for the following attributes, updating the document base URI has no effect because we have to use an abosulte URL for the href in order to set an initial value for the attribute we wish to update. They are included for completeness. + +Host attribute, update document base URI without attribute having been set +PASS a.href is 'http://host:0/' +Host attribute, update document base URI after attribute has been set +PASS a.href is 'http://host:0/' + +Hostname attribute, update document base URI without attribute having been set +PASS a.href is 'http://host/' +Hostname attribute, update document base URI after attribute has been set +PASS a.href is 'http://host/' + +Protocol attribute, update document base URI without attribute having been set +PASS a.href is 'protocol:' +Protocol attribute, update document base URI after attribute has been set +PASS a.href is 'protocol:' + +Port attribute, update document base URI without attribute having been set +PASS a.href is 'http://host:0/' +Port attribute, update document base URI after attribute has been set +PASS a.href is 'http://host:0/' + +PASS successfullyParsed is true + +TEST COMPLETE + diff --git a/LayoutTests/fast/dom/HTMLAnchorElement/set-href-attribute-prevents-rebase.html b/LayoutTests/fast/dom/HTMLAnchorElement/set-href-attribute-prevents-rebase.html new file mode 100644 index 0000000..bfc1c29 --- /dev/null +++ b/LayoutTests/fast/dom/HTMLAnchorElement/set-href-attribute-prevents-rebase.html @@ -0,0 +1,13 @@ + + + + + + + +

+
+ + + + diff --git a/LayoutTests/fast/js/resources/fs-test-post.js b/LayoutTests/fast/js/resources/fs-test-post.js new file mode 100644 index 0000000..6d84656 --- /dev/null +++ b/LayoutTests/fast/js/resources/fs-test-post.js @@ -0,0 +1,6 @@ +wasPostTestScriptParsed = true; + +if (window.layoutTestController) + layoutTestController.waitUntilDone(); +if (window.wasFinishJSTestCalled) + finishJSTest(); diff --git a/LayoutTests/fast/js/resources/js-test-pre.js b/LayoutTests/fast/js/resources/js-test-pre.js index 87db5d4..3536a89 100644 --- a/LayoutTests/fast/js/resources/js-test-pre.js +++ b/LayoutTests/fast/js/resources/js-test-pre.js @@ -124,7 +124,7 @@ function shouldBeNull(_a) { shouldBe(_a, "null"); } function shouldBeEqualToString(a, b) { - var unevaledString = '"' + b.replace(/\\/g, "\\\\").replace(/"/g, "\"") + '"'; + var unevaledString = '"' + b.replace(/\\/g, "\\\\").replace(/"/g, "\"").replace(/\n/g, "\\n").replace(/\r/g, "\\r") + '"'; shouldBe(a, unevaledString); } diff --git a/LayoutTests/fast/url/query-expected.txt b/LayoutTests/fast/url/query-expected.txt index 9941416..e4816a5 100644 --- a/LayoutTests/fast/url/query-expected.txt +++ b/LayoutTests/fast/url/query-expected.txt @@ -5,7 +5,7 @@ On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE PASS canonicalize('http://www.example.com/?foo=bar') is 'http://www.example.com/?foo=bar' PASS canonicalize('http://www.example.com/?as?df') is 'http://www.example.com/?as?df' -FAIL canonicalize('http://www.example.com/?\x02hello bye') should be http://www.example.com/?%02hello%7F%20bye. Was http://www.example.com/?hello%7F%20bye. +PASS canonicalize('http://www.example.com/?\x02hello bye') is 'http://www.example.com/?%02hello%7F%20bye' PASS canonicalize('http://www.example.com/?%40%41123') is 'http://www.example.com/?%40%41123' PASS canonicalize('http://www.example.com/?q=你好') is 'http://www.example.com/?q=%26%2320320%3B%26%2322909%3B' PASS canonicalize('http://www.example.com/?q=\ud800\ud800') is 'http://www.example.com/?q=%26%2355296%3B%26%2355296%3B' diff --git a/LayoutTests/fast/url/script-tests/segments-from-data-url.js b/LayoutTests/fast/url/script-tests/segments-from-data-url.js index 8fc3013..5c4ae02 100644 --- a/LayoutTests/fast/url/script-tests/segments-from-data-url.js +++ b/LayoutTests/fast/url/script-tests/segments-from-data-url.js @@ -14,7 +14,7 @@ cases = [ ["http://f:00000000000000000000080/c", ["http:","f","0","/c","",""]], ["http://f:b/c", [":","","0","","",""]], ["http://f: /c", [":","","0","","",""]], - ["http://f:\\n/c", ["http:","f","0","/c","",""]], + ["http://f:\\n/c", [":","","0","","",""]], ["http://f:fifty-two/c", [":","","0","","",""]], ["http://f:999999/c", [":","","0","","",""]], ["http://f: 21 / b ? d # e ", [":","","0","","",""]], diff --git a/LayoutTests/fast/url/script-tests/segments.js b/LayoutTests/fast/url/script-tests/segments.js index c0c6fa1..c621da1 100644 --- a/LayoutTests/fast/url/script-tests/segments.js +++ b/LayoutTests/fast/url/script-tests/segments.js @@ -14,7 +14,7 @@ cases = [ ["http://f:00000000000000000000080/c", ["http:","f","0","/c","",""]], ["http://f:b/c", [":","","0","","",""]], ["http://f: /c", [":","","0","","",""]], - ["http://f:\\n/c", ["http:","f","0","/c","",""]], + ["http://f:\\n/c", [":","","0","","",""]], ["http://f:fifty-two/c", [":","","0","","",""]], ["http://f:999999/c", [":","","0","","",""]], ["http://f: 21 / b ? d # e ", [":","","0","","",""]], diff --git a/LayoutTests/fast/url/segments-expected.txt b/LayoutTests/fast/url/segments-expected.txt index 3833f36..2da6912 100644 --- a/LayoutTests/fast/url/segments-expected.txt +++ b/LayoutTests/fast/url/segments-expected.txt @@ -15,7 +15,7 @@ PASS segments('http://f:00000000000000/c') is '["http:","f","0","/c","",""]' FAIL segments('http://f:00000000000000000000080/c') should be ["http:","f","0","/c","",""]. Was ["http:","f","80","/c","",""]. PASS segments('http://f:b/c') is '[":","","0","","",""]' PASS segments('http://f: /c') is '[":","","0","","",""]' -PASS segments('http://f:\n/c') is '["http:","f","0","/c","",""]' +PASS segments('http://f:\n/c') is '[":","","0","","",""]' PASS segments('http://f:fifty-two/c') is '[":","","0","","",""]' FAIL segments('http://f:999999/c') should be [":","","0","","",""]. Was ["http:","f","65535","/c","",""]. PASS segments('http://f: 21 / b ? d # e ') is '[":","","0","","",""]' diff --git a/LayoutTests/fast/url/segments-from-data-url-expected.txt b/LayoutTests/fast/url/segments-from-data-url-expected.txt index 5d102ef..6e1853e 100644 --- a/LayoutTests/fast/url/segments-from-data-url-expected.txt +++ b/LayoutTests/fast/url/segments-from-data-url-expected.txt @@ -15,7 +15,7 @@ PASS segments('http://f:00000000000000/c') is '["http:","f","0","/c","",""]' FAIL segments('http://f:00000000000000000000080/c') should be ["http:","f","0","/c","",""]. Was ["http:","f","80","/c","",""]. PASS segments('http://f:b/c') is '[":","","0","","",""]' PASS segments('http://f: /c') is '[":","","0","","",""]' -PASS segments('http://f:\n/c') is '["http:","f","0","/c","",""]' +PASS segments('http://f:\n/c') is '[":","","0","","",""]' PASS segments('http://f:fifty-two/c') is '[":","","0","","",""]' FAIL segments('http://f:999999/c') should be [":","","0","","",""]. Was ["http:","f","65535","/c","",""]. PASS segments('http://f: 21 / b ? d # e ') is '[":","","0","","",""]' diff --git a/LayoutTests/http/tests/appcache/document-write-html-element-2-expected.txt b/LayoutTests/http/tests/appcache/document-write-html-element-2-expected.txt new file mode 100644 index 0000000..32581f4 --- /dev/null +++ b/LayoutTests/http/tests/appcache/document-write-html-element-2-expected.txt @@ -0,0 +1,2 @@ +SUCCESS, no assertion failure +applicationCache.status == 1 diff --git a/LayoutTests/http/tests/appcache/document-write-html-element-2.html b/LayoutTests/http/tests/appcache/document-write-html-element-2.html new file mode 100644 index 0000000..bee9fe0 --- /dev/null +++ b/LayoutTests/http/tests/appcache/document-write-html-element-2.html @@ -0,0 +1,19 @@ + + diff --git a/LayoutTests/http/tests/appcache/document-write-html-element-expected.txt b/LayoutTests/http/tests/appcache/document-write-html-element-expected.txt new file mode 100644 index 0000000..08dccd3 --- /dev/null +++ b/LayoutTests/http/tests/appcache/document-write-html-element-expected.txt @@ -0,0 +1 @@ +DONE. Passed if there were no alerts displayed. diff --git a/LayoutTests/http/tests/appcache/document-write-html-element.html b/LayoutTests/http/tests/appcache/document-write-html-element.html new file mode 100644 index 0000000..83954bb --- /dev/null +++ b/LayoutTests/http/tests/appcache/document-write-html-element.html @@ -0,0 +1,26 @@ + diff --git a/LayoutTests/http/tests/appcache/fail-on-update-2-expected.txt b/LayoutTests/http/tests/appcache/fail-on-update-2-expected.txt new file mode 100644 index 0000000..cd15247 --- /dev/null +++ b/LayoutTests/http/tests/appcache/fail-on-update-2-expected.txt @@ -0,0 +1 @@ +SUCCESS: No crash. diff --git a/LayoutTests/http/tests/appcache/fail-on-update-2.html b/LayoutTests/http/tests/appcache/fail-on-update-2.html new file mode 100644 index 0000000..fcbc3dd --- /dev/null +++ b/LayoutTests/http/tests/appcache/fail-on-update-2.html @@ -0,0 +1,64 @@ + + +

Test for a particular incorrect assertion failure.

+ + diff --git a/LayoutTests/http/tests/appcache/foreign-fallback-expected.txt b/LayoutTests/http/tests/appcache/foreign-fallback-expected.txt new file mode 100644 index 0000000..dded924 --- /dev/null +++ b/LayoutTests/http/tests/appcache/foreign-fallback-expected.txt @@ -0,0 +1,6 @@ +Test for bug 44406: Application Cache crash when a fallback document has a manifest URL. + +PASS +The frame below should display a Not Found error - the fallback entry is foreign, so it shouldn't be used for main resource. + + diff --git a/LayoutTests/http/tests/appcache/foreign-fallback.html b/LayoutTests/http/tests/appcache/foreign-fallback.html new file mode 100644 index 0000000..7a80046 --- /dev/null +++ b/LayoutTests/http/tests/appcache/foreign-fallback.html @@ -0,0 +1,48 @@ + + +

Test for bug 44406: +Application Cache crash when a fallback document has a manifest URL.

+
Testing...
+ +

The frame below should display a Not Found error - the fallback entry is foreign, so it shouldn't be used for main resource.

+ + diff --git a/LayoutTests/http/tests/appcache/insert-html-element-with-manifest-2-expected.txt b/LayoutTests/http/tests/appcache/insert-html-element-with-manifest-2-expected.txt new file mode 100644 index 0000000..08dccd3 --- /dev/null +++ b/LayoutTests/http/tests/appcache/insert-html-element-with-manifest-2-expected.txt @@ -0,0 +1 @@ +DONE. Passed if there were no alerts displayed. diff --git a/LayoutTests/http/tests/appcache/insert-html-element-with-manifest-2.html b/LayoutTests/http/tests/appcache/insert-html-element-with-manifest-2.html new file mode 100644 index 0000000..539d28b --- /dev/null +++ b/LayoutTests/http/tests/appcache/insert-html-element-with-manifest-2.html @@ -0,0 +1,30 @@ + +
+ diff --git a/LayoutTests/http/tests/appcache/insert-html-element-with-manifest-expected.txt b/LayoutTests/http/tests/appcache/insert-html-element-with-manifest-expected.txt new file mode 100644 index 0000000..08dccd3 --- /dev/null +++ b/LayoutTests/http/tests/appcache/insert-html-element-with-manifest-expected.txt @@ -0,0 +1 @@ +DONE. Passed if there were no alerts displayed. diff --git a/LayoutTests/http/tests/appcache/insert-html-element-with-manifest.html b/LayoutTests/http/tests/appcache/insert-html-element-with-manifest.html new file mode 100644 index 0000000..694392c --- /dev/null +++ b/LayoutTests/http/tests/appcache/insert-html-element-with-manifest.html @@ -0,0 +1,31 @@ + + diff --git a/LayoutTests/http/tests/appcache/main-resource-redirect-expected.txt b/LayoutTests/http/tests/appcache/main-resource-redirect-expected.txt new file mode 100644 index 0000000..0a727f5 --- /dev/null +++ b/LayoutTests/http/tests/appcache/main-resource-redirect-expected.txt @@ -0,0 +1,4 @@ +Test that application cache is consulted again after a redirect response. + +PASS + diff --git a/LayoutTests/http/tests/appcache/main-resource-redirect.html b/LayoutTests/http/tests/appcache/main-resource-redirect.html new file mode 100644 index 0000000..3ede636 --- /dev/null +++ b/LayoutTests/http/tests/appcache/main-resource-redirect.html @@ -0,0 +1,39 @@ + + +

Test that application cache is consulted again after a redirect response.

+
Testing...
+ + diff --git a/LayoutTests/http/tests/appcache/resources/document-write-html-element.manifest b/LayoutTests/http/tests/appcache/resources/document-write-html-element.manifest new file mode 100644 index 0000000..af16a0e --- /dev/null +++ b/LayoutTests/http/tests/appcache/resources/document-write-html-element.manifest @@ -0,0 +1 @@ +CACHE MANIFEST diff --git a/LayoutTests/http/tests/appcache/resources/fail-on-update-2.html b/LayoutTests/http/tests/appcache/resources/fail-on-update-2.html new file mode 100644 index 0000000..7e78de7 --- /dev/null +++ b/LayoutTests/http/tests/appcache/resources/fail-on-update-2.html @@ -0,0 +1,7 @@ + + + + + diff --git a/LayoutTests/http/tests/appcache/resources/fail-on-update-2.php b/LayoutTests/http/tests/appcache/resources/fail-on-update-2.php new file mode 100644 index 0000000..4e11735 --- /dev/null +++ b/LayoutTests/http/tests/appcache/resources/fail-on-update-2.php @@ -0,0 +1,39 @@ + diff --git a/LayoutTests/http/tests/appcache/resources/foreign-fallback-fallback.html b/LayoutTests/http/tests/appcache/resources/foreign-fallback-fallback.html new file mode 100644 index 0000000..9996bf6 --- /dev/null +++ b/LayoutTests/http/tests/appcache/resources/foreign-fallback-fallback.html @@ -0,0 +1,2 @@ + +FAIL diff --git a/LayoutTests/http/tests/appcache/resources/foreign-fallback.manifest b/LayoutTests/http/tests/appcache/resources/foreign-fallback.manifest new file mode 100644 index 0000000..ddaf602 --- /dev/null +++ b/LayoutTests/http/tests/appcache/resources/foreign-fallback.manifest @@ -0,0 +1,4 @@ +CACHE MANIFEST + +FALLBACK: +/appcache/resources/foreign-fallback/ foreign-fallback-fallback.html diff --git a/LayoutTests/http/tests/appcache/resources/insert-html-element-with-manifest.manifest b/LayoutTests/http/tests/appcache/resources/insert-html-element-with-manifest.manifest new file mode 100644 index 0000000..af16a0e --- /dev/null +++ b/LayoutTests/http/tests/appcache/resources/insert-html-element-with-manifest.manifest @@ -0,0 +1 @@ +CACHE MANIFEST diff --git a/LayoutTests/http/tests/appcache/resources/main-resource-redirect-frame-2.html b/LayoutTests/http/tests/appcache/resources/main-resource-redirect-frame-2.html new file mode 100644 index 0000000..0acc1e2 --- /dev/null +++ b/LayoutTests/http/tests/appcache/resources/main-resource-redirect-frame-2.html @@ -0,0 +1,6 @@ + + diff --git a/LayoutTests/http/tests/appcache/resources/main-resource-redirect-frame.php b/LayoutTests/http/tests/appcache/resources/main-resource-redirect-frame.php new file mode 100644 index 0000000..638057b --- /dev/null +++ b/LayoutTests/http/tests/appcache/resources/main-resource-redirect-frame.php @@ -0,0 +1,4 @@ + diff --git a/LayoutTests/http/tests/appcache/resources/main-resource-redirect.manifest b/LayoutTests/http/tests/appcache/resources/main-resource-redirect.manifest new file mode 100644 index 0000000..beffe84 --- /dev/null +++ b/LayoutTests/http/tests/appcache/resources/main-resource-redirect.manifest @@ -0,0 +1,4 @@ +CACHE MANIFEST +http://127.0.0.1:8000/resources/network-simulator.php?path=/appcache/resources/main-resource-redirect-frame-2.html +NETWORK: +http://127.0.0.1:8000/resources/network-simulator.php?command diff --git a/LayoutTests/storage/indexeddb/basics-expected.txt b/LayoutTests/storage/indexeddb/basics-expected.txt index 7632e40..b7b8b94 100644 --- a/LayoutTests/storage/indexeddb/basics-expected.txt +++ b/LayoutTests/storage/indexeddb/basics-expected.txt @@ -3,9 +3,9 @@ Test IndexedDB's 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 'webkitIndexedDB' in window is true +PASS webkitIndexedDB == null is false +webkitIndexedDB.open('name', 'description') PASS 'onsuccess' in result is true PASS 'onerror' in result is true PASS 'readyState' in result is true @@ -22,6 +22,12 @@ PASS 'onerror' in event.target is true PASS 'readyState' in event.target is true PASS event.target.readyState is event.target.DONE +webkitIndexedDB.open('name'); +PASS Exception thrown. +webkitIndexedDB.open('name', null); +PASS Exception thrown. +webkitIndexedDB.open('name', undefined); +PASS Exception thrown. PASS successfullyParsed is true TEST COMPLETE diff --git a/LayoutTests/storage/indexeddb/basics.html b/LayoutTests/storage/indexeddb/basics.html index 9f5f20f..2e382b2 100644 --- a/LayoutTests/storage/indexeddb/basics.html +++ b/LayoutTests/storage/indexeddb/basics.html @@ -14,25 +14,47 @@ description("Test IndexedDB's basics."); if (window.layoutTestController) layoutTestController.waitUntilDone(); -function openCallback() -{ - verifySuccessEvent(event); - done(); -} - function test() { - shouldBeTrue("'indexedDB' in window"); - shouldBeFalse("indexedDB == null"); + shouldBeTrue("'webkitIndexedDB' in window"); + shouldBeFalse("webkitIndexedDB == null"); // FIXME: Verify other IndexedDatabaseRequest constructors, once they're implemented. - result = evalAndLog("indexedDB.open('name', 'description')"); + result = evalAndLog("webkitIndexedDB.open('name', 'description')"); verifyResult(result); result.onsuccess = openCallback; - result.onerror = unexpectedErrorCallback; + result.onerror = unexpectedErrorCallback; +} + +function openCallback() +{ + verifySuccessEvent(event); + try { + debug("webkitIndexedDB.open('name');"); + webkitIndexedDB.open('name'); + testFailed("Calling IDBFactory::open without a description should have thrown."); + } catch (err) { + testPassed("Exception thrown."); + } + try { + debug("webkitIndexedDB.open('name', null);"); + webkitIndexedDB.open('name', null); + testFailed("Calling IDBFactory::open with a null description should have thrown."); + } catch (err) { + testPassed("Exception thrown."); + } + try { + debug("webkitIndexedDB.open('name', undefined);"); + webkitIndexedDB.open('name', undefined); + testFailed("Calling IDBFactory::open with an undefined description should have thrown."); + } catch (err) { + testPassed("Exception thrown."); + } + done(); } + test(); var successfullyParsed = true; diff --git a/LayoutTests/storage/indexeddb/constants-expected.txt b/LayoutTests/storage/indexeddb/constants-expected.txt index ff47655..15a2df7 100644 --- a/LayoutTests/storage/indexeddb/constants-expected.txt +++ b/LayoutTests/storage/indexeddb/constants-expected.txt @@ -3,32 +3,32 @@ Test IndexedDB's constants. On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE". -PASS IDBKeyRange.SINGLE is 0 -PASS IDBKeyRange.LEFT_OPEN is 1 -PASS IDBKeyRange.RIGHT_OPEN is 2 -PASS IDBKeyRange.LEFT_BOUND is 4 -PASS IDBKeyRange.RIGHT_BOUND is 8 -PASS IDBDatabaseException.UNKNOWN_ERR is 0 -PASS IDBDatabaseException.NON_TRANSIENT_ERR is 1 -PASS IDBDatabaseException.NOT_FOUND_ERR is 2 -PASS IDBDatabaseException.CONSTRAINT_ERR is 3 -PASS IDBDatabaseException.DATA_ERR is 4 -PASS IDBDatabaseException.NOT_ALLOWED_ERR is 5 -PASS IDBDatabaseException.SERIAL_ERR is 11 -PASS IDBDatabaseException.RECOVERABLE_ERR is 21 -PASS IDBDatabaseException.TRANSIENT_ERR is 31 -PASS IDBDatabaseException.TIMEOUT_ERR is 32 -PASS IDBDatabaseException.DEADLOCK_ERR is 33 -PASS IDBRequest.LOADING is 1 -PASS IDBRequest.DONE is 2 -PASS IDBCursor.NEXT is 0 -PASS IDBCursor.NEXT_NO_DUPLICATE is 1 -PASS IDBCursor.PREV is 2 -PASS IDBCursor.PREV_NO_DUPLICATE is 3 -PASS IDBTransaction.READ_WRITE is 0 -PASS IDBTransaction.READ_ONLY is 1 -PASS IDBTransaction.SNAPSHOT_READ is 2 -PASS IDBTransaction.VERSION_CHANGE is 3 +PASS webkitIDBKeyRange.SINGLE is 0 +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.NON_TRANSIENT_ERR is 1 +PASS webkitIDBDatabaseException.NOT_FOUND_ERR is 2 +PASS webkitIDBDatabaseException.CONSTRAINT_ERR is 3 +PASS webkitIDBDatabaseException.DATA_ERR is 4 +PASS webkitIDBDatabaseException.NOT_ALLOWED_ERR is 5 +PASS webkitIDBDatabaseException.SERIAL_ERR is 11 +PASS webkitIDBDatabaseException.RECOVERABLE_ERR is 21 +PASS webkitIDBDatabaseException.TRANSIENT_ERR is 31 +PASS webkitIDBDatabaseException.TIMEOUT_ERR is 32 +PASS webkitIDBDatabaseException.DEADLOCK_ERR is 33 +PASS webkitIDBRequest.LOADING is 1 +PASS webkitIDBRequest.DONE is 2 +PASS webkitIDBCursor.NEXT is 0 +PASS webkitIDBCursor.NEXT_NO_DUPLICATE is 1 +PASS webkitIDBCursor.PREV is 2 +PASS webkitIDBCursor.PREV_NO_DUPLICATE is 3 +PASS webkitIDBTransaction.READ_WRITE is 0 +PASS webkitIDBTransaction.READ_ONLY is 1 +PASS webkitIDBTransaction.SNAPSHOT_READ is 2 +PASS webkitIDBTransaction.VERSION_CHANGE is 3 PASS successfullyParsed is true TEST COMPLETE diff --git a/LayoutTests/storage/indexeddb/constants.html b/LayoutTests/storage/indexeddb/constants.html index dd24917..813fe7a 100644 --- a/LayoutTests/storage/indexeddb/constants.html +++ b/LayoutTests/storage/indexeddb/constants.html @@ -16,36 +16,36 @@ if (window.layoutTestController) function test() { - shouldBe("IDBKeyRange.SINGLE", "0"); - shouldBe("IDBKeyRange.LEFT_OPEN", "1"); - shouldBe("IDBKeyRange.RIGHT_OPEN", "2"); - shouldBe("IDBKeyRange.LEFT_BOUND", "4"); - shouldBe("IDBKeyRange.RIGHT_BOUND", "8"); - - shouldBe("IDBDatabaseException.UNKNOWN_ERR", "0"); - shouldBe("IDBDatabaseException.NON_TRANSIENT_ERR", "1"); - shouldBe("IDBDatabaseException.NOT_FOUND_ERR", "2"); - shouldBe("IDBDatabaseException.CONSTRAINT_ERR", "3"); - shouldBe("IDBDatabaseException.DATA_ERR", "4"); - shouldBe("IDBDatabaseException.NOT_ALLOWED_ERR", "5"); - shouldBe("IDBDatabaseException.SERIAL_ERR", "11"); - shouldBe("IDBDatabaseException.RECOVERABLE_ERR", "21"); - shouldBe("IDBDatabaseException.TRANSIENT_ERR", "31"); - shouldBe("IDBDatabaseException.TIMEOUT_ERR", "32"); - shouldBe("IDBDatabaseException.DEADLOCK_ERR", "33"); - - shouldBe("IDBRequest.LOADING", "1"); - shouldBe("IDBRequest.DONE", "2"); - - shouldBe("IDBCursor.NEXT", "0"); - shouldBe("IDBCursor.NEXT_NO_DUPLICATE", "1"); - shouldBe("IDBCursor.PREV", "2"); - shouldBe("IDBCursor.PREV_NO_DUPLICATE", "3"); - - shouldBe("IDBTransaction.READ_WRITE", "0"); - shouldBe("IDBTransaction.READ_ONLY", "1"); - shouldBe("IDBTransaction.SNAPSHOT_READ", "2"); - shouldBe("IDBTransaction.VERSION_CHANGE", "3"); + shouldBe("webkitIDBKeyRange.SINGLE", "0"); + shouldBe("webkitIDBKeyRange.LEFT_OPEN", "1"); + shouldBe("webkitIDBKeyRange.RIGHT_OPEN", "2"); + shouldBe("webkitIDBKeyRange.LEFT_BOUND", "4"); + shouldBe("webkitIDBKeyRange.RIGHT_BOUND", "8"); + + shouldBe("webkitIDBDatabaseException.UNKNOWN_ERR", "0"); + shouldBe("webkitIDBDatabaseException.NON_TRANSIENT_ERR", "1"); + shouldBe("webkitIDBDatabaseException.NOT_FOUND_ERR", "2"); + shouldBe("webkitIDBDatabaseException.CONSTRAINT_ERR", "3"); + shouldBe("webkitIDBDatabaseException.DATA_ERR", "4"); + shouldBe("webkitIDBDatabaseException.NOT_ALLOWED_ERR", "5"); + shouldBe("webkitIDBDatabaseException.SERIAL_ERR", "11"); + shouldBe("webkitIDBDatabaseException.RECOVERABLE_ERR", "21"); + shouldBe("webkitIDBDatabaseException.TRANSIENT_ERR", "31"); + shouldBe("webkitIDBDatabaseException.TIMEOUT_ERR", "32"); + shouldBe("webkitIDBDatabaseException.DEADLOCK_ERR", "33"); + + shouldBe("webkitIDBRequest.LOADING", "1"); + shouldBe("webkitIDBRequest.DONE", "2"); + + shouldBe("webkitIDBCursor.NEXT", "0"); + shouldBe("webkitIDBCursor.NEXT_NO_DUPLICATE", "1"); + shouldBe("webkitIDBCursor.PREV", "2"); + shouldBe("webkitIDBCursor.PREV_NO_DUPLICATE", "3"); + + shouldBe("webkitIDBTransaction.READ_WRITE", "0"); + shouldBe("webkitIDBTransaction.READ_ONLY", "1"); + shouldBe("webkitIDBTransaction.SNAPSHOT_READ", "2"); + shouldBe("webkitIDBTransaction.VERSION_CHANGE", "3"); } test(); diff --git a/LayoutTests/storage/indexeddb/database-basics-expected.txt b/LayoutTests/storage/indexeddb/database-basics-expected.txt index 42c9879..2a5fa2f 100644 --- a/LayoutTests/storage/indexeddb/database-basics-expected.txt +++ b/LayoutTests/storage/indexeddb/database-basics-expected.txt @@ -3,7 +3,7 @@ Test the basics of IndexedDB's IDBDatabase. On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE". -indexedDB.open('name', 'description') +webkitIndexedDB.open('name', 'description') PASS 'onsuccess' in result is true PASS 'onerror' in result is true PASS 'readyState' in result is true @@ -21,6 +21,27 @@ 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. Testing setVersion. db.setVersion("version a") PASS 'onsuccess' in result is true @@ -61,7 +82,15 @@ PASS db.name is "name" PASS db.objectStores is [] PASS db.objectStores.length is 0 PASS db.objectStores.contains('') is false +PASS db.objectStores[0] is null +PASS db.objectStores.item(0) is null db.createObjectStore("test123") +PASS db.objectStores is ['test123'] +PASS db.objectStores.length is 1 +PASS db.objectStores.contains('') is false +PASS db.objectStores.contains('test456') is false +PASS db.objectStores.contains('test123') is true +db.setVersion("version c") PASS 'onsuccess' in result is true PASS 'onerror' in result is true PASS 'readyState' in result is true @@ -78,6 +107,17 @@ PASS 'onerror' in event.target is true PASS 'readyState' in event.target is true PASS event.target.readyState is event.target.DONE +PASS db.version is "version c" +PASS db.name is "name" +PASS db.objectStores is ['test123'] +PASS db.objectStores.length is 1 +PASS db.objectStores.contains('') is false +PASS db.objectStores.contains('test456') is false +PASS db.objectStores.contains('test123') is true +db.createObjectStore("test456") +setVersionTrans = event.result +PASS setVersionTrans !== null is true +PASS db.version is "version b" PASS db.objectStores is ['test123'] PASS db.objectStores.length is 1 PASS db.objectStores.contains('') is false diff --git a/LayoutTests/storage/indexeddb/database-basics.html b/LayoutTests/storage/indexeddb/database-basics.html index b099a49..31c887b 100644 --- a/LayoutTests/storage/indexeddb/database-basics.html +++ b/LayoutTests/storage/indexeddb/database-basics.html @@ -14,23 +14,43 @@ description("Test the basics of IndexedDB's IDBDatabase."); if (window.layoutTestController) layoutTestController.waitUntilDone(); +function test() +{ + result = evalAndLog("webkitIndexedDB.open('name', 'description')"); + verifyResult(result); + result.onsuccess = openSuccess; + result.onerror = unexpectedErrorCallback; +} + function openSuccess() { verifySuccessEvent(event); + window.db = evalAndLog("db = event.result"); + + result = evalAndLog("db.setVersion('new version')"); + verifyResult(result); + result.onsuccess = setVersionSuccess; + result.onerror = unexpectedErrorCallback; +} - var db = evalAndLog("db = event.result"); - deleteAllObjectStores(db); +function setVersionSuccess() +{ + debug("setVersionSuccess():"); + verifySuccessEvent(event); + window.trans = evalAndLog("trans = event.result"); + shouldBeTrue("trans !== null"); + trans.onabort = unexpectedAbortCallback; - // We must do something asynchronous before anything synchronous since - // deleteAllObjectStores only schedules the object stores to be removed. - // We don't know for sure whether it's happened until an IDBRequest object - // that was created after the removes fires. + deleteAllObjectStores(db, testSetVersion); +} +function testSetVersion() +{ debug("Testing setVersion."); result = evalAndLog('db.setVersion("version a")'); verifyResult(result); result.onsuccess = setVersionAgain; - result.onError = unexpectedErrorCallback; + result.onerror = unexpectedErrorCallback; } function setVersionAgain() @@ -40,7 +60,7 @@ function setVersionAgain() result = evalAndLog('db.setVersion("version b")'); verifyResult(result); result.onsuccess = createObjectStore; - result.onError = unexpectedErrorCallback; + result.onerror = unexpectedErrorCallback; } function createObjectStore() @@ -51,33 +71,58 @@ function createObjectStore() shouldBe("db.objectStores", "[]"); shouldBe("db.objectStores.length", "0"); shouldBe("db.objectStores.contains('')", "false"); + shouldBeNull("db.objectStores[0]"); + shouldBeNull("db.objectStores.item(0)"); - result = evalAndLog('db.createObjectStore("test123")'); - verifyResult(result); - result.onsuccess = checkObjectStore; - result.onError = unexpectedErrorCallback; + objectStore = evalAndLog('db.createObjectStore("test123")'); + checkObjectStore(); + commitAndContinue(); } function checkObjectStore() { - verifySuccessEvent(event); shouldBe("db.objectStores", "['test123']"); shouldBe("db.objectStores.length", "1"); shouldBe("db.objectStores.contains('')", "false"); shouldBe("db.objectStores.contains('test456')", "false"); shouldBe("db.objectStores.contains('test123')", "true"); +} - done(); +function commitAndContinue() +{ + window.setTimeout(testSetVersionAbort, 0); } -function test() +function testSetVersionAbort() { - result = evalAndLog("indexedDB.open('name', 'description')"); + result = evalAndLog('db.setVersion("version c")'); verifyResult(result); - result.onsuccess = openSuccess; + result.onsuccess = createAnotherObjectStore; result.onerror = unexpectedErrorCallback; } +function createAnotherObjectStore() +{ + verifySuccessEvent(event); + shouldBeEqualToString("db.version", "version c"); + shouldBeEqualToString("db.name", "name"); + checkObjectStore(); + + objectStore = evalAndLog('db.createObjectStore("test456")'); + var setVersionTrans = evalAndLog("setVersionTrans = event.result"); + shouldBeTrue("setVersionTrans !== null"); + setVersionTrans.oncomplete = unexpectedCompleteCallback; + setVersionTrans.onabort = checkMetadata; + setVersionTrans.abort(); +} + +function checkMetadata() +{ + shouldBeEqualToString("db.version", "version b"); + checkObjectStore(); + done(); +} + test(); var successfullyParsed = true; diff --git a/LayoutTests/storage/indexeddb/database-quota-expected.txt b/LayoutTests/storage/indexeddb/database-quota-expected.txt new file mode 100644 index 0000000..b6ea505 --- /dev/null +++ b/LayoutTests/storage/indexeddb/database-quota-expected.txt @@ -0,0 +1,1115 @@ +Tests IndexedDB's quota enforcing mechanism. + +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. +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 db.version is "new version" +PASS db.name is "name" +PASS db.objectStores is [] +PASS db.objectStores.length is 0 +PASS db.objectStores.contains('') is false +db.createObjectStore("test123") +PASS db.objectStores is ['test123'] +PASS db.objectStores.length is 1 +PASS db.objectStores.contains('') is false +PASS db.objectStores.contains('test456') is false +PASS db.objectStores.contains('test123') is true +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 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 Adding data failed due to quota error. Data added was: 5120 KB +PASS successfullyParsed is true + +TEST COMPLETE + diff --git a/LayoutTests/storage/indexeddb/database-quota.html b/LayoutTests/storage/indexeddb/database-quota.html new file mode 100644 index 0000000..45ce709 --- /dev/null +++ b/LayoutTests/storage/indexeddb/database-quota.html @@ -0,0 +1,126 @@ + + + + + + + + +

+
+ + + diff --git a/LayoutTests/storage/indexeddb/index-basics-expected.txt b/LayoutTests/storage/indexeddb/index-basics-expected.txt index 564bdc8..0869d95 100644 --- a/LayoutTests/storage/indexeddb/index-basics-expected.txt +++ b/LayoutTests/storage/indexeddb/index-basics-expected.txt @@ -1,9 +1,9 @@ -Test the basics of IndexedDB's IDBIndex. +Test the basics of IndexedDB's webkitIDBIndex. On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE". -indexedDB.open('name', 'description') +webkitIndexedDB.open('name', 'description') PASS 'onsuccess' in result is true PASS 'onerror' in result is true PASS 'readyState' in result is true @@ -21,12 +21,13 @@ PASS 'readyState' in event.target is true PASS event.target.readyState is event.target.DONE db = event.result -db.createObjectStore('storeName', null) +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 @@ -38,8 +39,25 @@ PASS 'onerror' in event.target is true PASS 'readyState' in event.target is true PASS event.target.readyState is event.target.DONE -store = event.result -event.result.createIndex('indexName', 'x') +trans = event.result +PASS trans !== null is true +Deleted all object stores. +db.createObjectStore('storeName', null) +store.createIndex('indexName', 'x') +store.createIndex('indexName2', 'y', false) +PASS 'name' in indexObject is true +PASS indexObject.name is "indexName" +PASS 'storeName' in indexObject is true +PASS indexObject.storeName is "storeName" +PASS 'keyPath' in indexObject is true +PASS indexObject.keyPath is "x" +PASS 'unique' in indexObject is true +PASS indexObject.unique is false +PASS 'openKeyCursor' in indexObject is true +PASS 'openCursor' in indexObject is true +PASS 'getKey' in indexObject is true +PASS 'get' in indexObject is true +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 @@ -56,21 +74,7 @@ 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 -indexObject = event.result -PASS 'name' in indexObject is true -PASS indexObject.name is "indexName" -PASS 'storeName' in indexObject is true -PASS indexObject.storeName is "storeName" -PASS 'keyPath' in indexObject is true -PASS indexObject.keyPath is "x" -PASS 'unique' in indexObject is true -PASS indexObject.unique is false -PASS 'openObjectCursor' in indexObject is true -PASS 'openCursor' in indexObject is true -PASS 'getObject' in indexObject is true -PASS 'get' in indexObject is true -event.source.add({x: 'value', y: 'zzz'}, 'key') +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 @@ -87,7 +91,7 @@ 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') +indexObject.getKey('value') PASS 'onsuccess' in result is true PASS 'onerror' in result is true PASS 'readyState' in result is true @@ -104,7 +108,8 @@ PASS 'onerror' in event.target is true PASS 'readyState' in event.target is true PASS event.target.readyState is event.target.DONE -indexObject.get('value') +PASS event.result is "key" +indexObject2.getKey('zzz') PASS 'onsuccess' in result is true PASS 'onerror' in result is true PASS 'readyState' in result is true @@ -122,7 +127,7 @@ PASS 'readyState' in event.target is true PASS event.target.readyState is event.target.DONE PASS event.result is "key" -indexObject.getObject('value') +indexObject.get('value') PASS 'onsuccess' in result is true PASS 'onerror' in result is true PASS 'readyState' in result is true @@ -141,7 +146,7 @@ PASS event.target.readyState is event.target.DONE PASS event.result.x is "value" PASS event.result.y is "zzz" -indexObject.get('does not exist') +indexObject.getKey('does not exist') PASS 'onsuccess' in result is true PASS 'onerror' in result is true PASS 'readyState' in result is true @@ -158,8 +163,8 @@ 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 IDBDatabaseException.NOT_FOUND_ERR -indexObject.getObject('does not exist') +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 @@ -176,8 +181,8 @@ 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 IDBDatabaseException.NOT_FOUND_ERR -indexObject.openCursor() +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 @@ -235,7 +240,7 @@ PASS 'readyState' in event.target is true PASS event.target.readyState is event.target.DONE PASS event.result === null is true -indexObject.openObjectCursor() +indexObject.openCursor() PASS 'onsuccess' in result is true PASS 'onerror' in result is true PASS 'readyState' in result is true diff --git a/LayoutTests/storage/indexeddb/index-basics.html b/LayoutTests/storage/indexeddb/index-basics.html index c23f141..f7257f1 100644 --- a/LayoutTests/storage/indexeddb/index-basics.html +++ b/LayoutTests/storage/indexeddb/index-basics.html @@ -10,47 +10,50 @@
+ + + + +

+
+ + + diff --git a/LayoutTests/storage/indexeddb/resources/shared.js b/LayoutTests/storage/indexeddb/resources/shared.js index 65da3bf..01ec606 100644 --- a/LayoutTests/storage/indexeddb/resources/shared.js +++ b/LayoutTests/storage/indexeddb/resources/shared.js @@ -40,6 +40,12 @@ function verifyAbortEvent(event) shouldBeEqualToString("event.type", "abort"); } +function verifyCompleteEvent(event) +{ + debug("Complete event fired:"); + shouldBeEqualToString("event.type", "complete"); +} + function verifyResult(result) { shouldBeTrue("'onsuccess' in result"); @@ -65,9 +71,28 @@ function unexpectedErrorCallback() done(); } -function deleteAllObjectStores(db) +function unexpectedAbortCallback() +{ + testFailed("Abort function called unexpectedly!"); + debug(""); + verifyAbortEvent(event); + done(); +} + +function unexpectedCompleteCallback() { - objectStores = db.objectStores; - for (var i = 0; i < objectStores.length; ++i) - db.removeObjectStore(objectStores[i]); + testFailed("oncomplete function called unexpectedly!"); + debug(""); + verifyCompleteEvent(event); + done(); +} + +// FIXME: remove the onfinished parameter. +function deleteAllObjectStores(db, onfinished) +{ + while (db.objectStores.length) + db.removeObjectStore(db.objectStores.item(0)); + + debug("Deleted all object stores."); + onfinished(); } diff --git a/LayoutTests/storage/indexeddb/transaction-basics-expected.txt b/LayoutTests/storage/indexeddb/transaction-basics-expected.txt index bba62f0..b493946 100644 --- a/LayoutTests/storage/indexeddb/transaction-basics-expected.txt +++ b/LayoutTests/storage/indexeddb/transaction-basics-expected.txt @@ -3,15 +3,15 @@ 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 'webkitIndexedDB' in window is true +PASS webkitIndexedDB == null is false +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... -createObjectStoreCallback(): +openSuccess(): Success event fired: PASS 'result' in event is true PASS 'code' in event is false @@ -24,12 +24,32 @@ PASS 'readyState' in event.target is true PASS event.target.readyState is event.target.DONE db = event.result -db.createObjectStore('storeName', null) +result = db.setVersion('version 1') +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 + +Deleted all object stores. +PASS window.db.objectStores is [] +PASS window.db.objectStores.length is 0 +PASS window.db.objectStores.contains('storeFail') is false +PASS window.db.objectStores is [] +PASS window.db.objectStores.length is 0 +PASS window.db.objectStores.contains('storeFail') is false +result = startSetVersion('version fail') PASS 'onsuccess' in result is true PASS 'onerror' in result is true PASS 'readyState' in result is true An event should fire shortly... +addRemoveIDBObjects(): Success event fired: PASS 'result' in event is true PASS 'code' in event is false @@ -41,11 +61,125 @@ 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 +store = db.createObjectStore('storeFail', null) +index = store.createIndex('indexFail', 'x', false) +db.removeObjectStore('storeFail') +store.removeIndex('indexFail') +PASS window.db.objectStores is [] +PASS window.db.objectStores.length is 0 +PASS window.db.objectStores.contains('storeFail') is false +result = startSetVersion('version fail') +PASS 'onsuccess' in result is true +PASS 'onerror' in result is true +PASS 'readyState' in result is true +An event should fire shortly... + +addRemoveAddIDBObjects(): +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 +store = db.createObjectStore('storeFail', null) +index = store.createIndex('indexFail', 'x', false) +db.removeObjectStore('storeFail') +store.removeIndex('indexFail') +store = db.createObjectStore('storeFail', null) +index = store.createIndex('indexFail', 'x', false) +PASS window.db.objectStores is [] +PASS window.db.objectStores.length is 0 +PASS window.db.objectStores.contains('storeFail') is false +result = startSetVersion('version fail') +PASS 'onsuccess' in result is true +PASS 'onerror' in result is true +PASS 'readyState' in result is true +An event should fire shortly... + +addIDBObjects(): +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 +store = db.createObjectStore('storeFail', null) +index = store.createIndex('indexFail', 'x', false) +PASS db.objectStores is ['storeFail'] +PASS db.objectStores.length is 1 +PASS db.objectStores.contains('storeFail') is true +result = startSetVersion('version fail') +PASS 'onsuccess' in result is true +PASS 'onerror' in result is true +PASS 'readyState' in result is true +An event should fire shortly... + +removeIDBObjects(): +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 +store = trans.objectStore('storeFail') +store.removeIndex('indexFail') +db.removeObjectStore('storeFail') +PASS db.objectStores is ['storeFail'] +PASS db.objectStores.length is 1 +PASS db.objectStores.contains('storeFail') is true +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) db.transaction() store = transaction.objectStore('storeName') PASS store.name is "storeName" Abort event fired: PASS event.type is "abort" +Complete event fired: +PASS event.type is "complete" +PASS oncomplete event had fired PASS successfullyParsed is true TEST COMPLETE diff --git a/LayoutTests/storage/indexeddb/transaction-basics.html b/LayoutTests/storage/indexeddb/transaction-basics.html index cea5d5d..07fc685 100644 --- a/LayoutTests/storage/indexeddb/transaction-basics.html +++ b/LayoutTests/storage/indexeddb/transaction-basics.html @@ -16,48 +16,239 @@ if (window.layoutTestController) function test() { - shouldBeTrue("'indexedDB' in window"); - shouldBeFalse("indexedDB == null"); + shouldBeTrue("'webkitIndexedDB' in window"); + shouldBeFalse("webkitIndexedDB == null"); - result = evalAndLog("indexedDB.open('name', 'description')"); + result = evalAndLog("webkitIndexedDB.open('name', 'description')"); verifyResult(result); result.onsuccess = openSuccess; result.onerror = unexpectedErrorCallback; +} + +function openSuccess() +{ + debug("openSuccess():"); + verifySuccessEvent(event); + window.db = evalAndLog("db = event.result"); + result = evalAndLog("result = db.setVersion('version 1')"); + result.onsuccess = cleanDatabase; + result.onerror = unexpectedErrorCallback; +} + +function cleanDatabase() +{ + verifySuccessEvent(event); + deleteAllObjectStores(db, checkMetadataEmpty); + commitAndContinue(testSetVersionAbort1); +} + +function testSetVersionAbort1() +{ + checkMetadataEmpty(); + result = evalAndLog("result = startSetVersion('version fail')"); + result.onsuccess = addRemoveIDBObjects; +} + +function addRemoveIDBObjects() +{ + debug("addRemoveIDBObjects():"); + verifySuccessEvent(event); + var trans = evalAndLog("trans = event.result"); + shouldBeTrue("trans !== null"); + trans.onabort = testSetVersionAbort2; + trans.oncomplete = unexpectedCompleteCallback; + + var store = evalAndLog("store = db.createObjectStore('storeFail', null)"); + var index = evalAndLog("index = store.createIndex('indexFail', 'x', false)"); + + evalAndLog("db.removeObjectStore('storeFail')"); + evalAndLog("store.removeIndex('indexFail')"); + + trans.abort(); +} + +function testSetVersionAbort2() +{ + checkMetadataEmpty(); + result = evalAndLog("result = startSetVersion('version fail')"); + result.onsuccess = addRemoveAddIDBObjects; +} + +function addRemoveAddIDBObjects() +{ + debug("addRemoveAddIDBObjects():"); + verifySuccessEvent(event); + var trans = evalAndLog("trans = event.result"); + shouldBeTrue("trans !== null"); + trans.onabort = testSetVersionAbort3; + trans.oncomplete = unexpectedCompleteCallback; + + var store = evalAndLog("store = db.createObjectStore('storeFail', null)"); + var index = evalAndLog("index = store.createIndex('indexFail', 'x', false)"); + + evalAndLog("db.removeObjectStore('storeFail')"); + evalAndLog("store.removeIndex('indexFail')"); + + var store = evalAndLog("store = db.createObjectStore('storeFail', null)"); + var index = evalAndLog("index = store.createIndex('indexFail', 'x', false)"); + + trans.abort(); +} + +function testSetVersionAbort3() +{ + checkMetadataEmpty(); + result = evalAndLog("result = startSetVersion('version fail')"); + result.onsuccess = addIDBObjects; +} + +function addIDBObjects() +{ + debug("addIDBObjects():"); + verifySuccessEvent(event); + var trans = evalAndLog("trans = event.result"); + shouldBeTrue("trans !== null"); + trans.onabort = testSetVersionAbort4; + trans.oncomplete = unexpectedCompleteCallback; + + var store = evalAndLog("store = db.createObjectStore('storeFail', null)"); + var index = evalAndLog("index = store.createIndex('indexFail', 'x', false)"); + + trans.abort(); +} + +function testSetVersionAbort4() +{ + checkMetadataEmpty(); + result = evalAndLog("result = startSetVersion('version fail')"); + result.onsuccess = addIDBObjectsAndCommit; +} + +function addIDBObjects() +{ + debug("addIDBObjects():"); + verifySuccessEvent(event); + var trans = evalAndLog("trans = event.result"); + shouldBeTrue("trans !== null"); + trans.onabort = unexpectedAbortCallback; + + var store = evalAndLog("store = db.createObjectStore('storeFail', null)"); + var index = evalAndLog("index = store.createIndex('indexFail', 'x', false)"); + + commitAndContinue(testSetVersionAbort5); +} + +function commitAndContinue(continueFunction) +{ + window.setTimeout(continueFunction, 0); +} + +function testSetVersionAbort5() +{ + checkMetadataExistingObjectStore(); + result = evalAndLog("result = startSetVersion('version fail')"); + result.onsuccess = removeIDBObjects; +} + +function removeIDBObjects() +{ + debug("removeIDBObjects():"); + verifySuccessEvent(event); + var trans = evalAndLog("trans = event.result"); + shouldBeTrue("trans !== null"); + trans.onabort = testSetVersionAbort6; + trans.oncomplete = unexpectedCompleteCallback; + + var store = evalAndLog("store = trans.objectStore('storeFail')"); + evalAndLog("store.removeIndex('indexFail')"); + evalAndLog("db.removeObjectStore('storeFail')"); + + trans.abort(); +} + +function testSetVersionAbort6() +{ + checkMetadataExistingObjectStore(); + setNewVersion(); +} + +function startSetVersion(versionName) +{ + result = db.setVersion(versionName); + verifyResult(result); + result.onerror = unexpectedErrorCallback; + return result; +} + +function checkMetadataEmpty() +{ + shouldBe("window.db.objectStores", "[]"); + shouldBe("window.db.objectStores.length", "0"); + shouldBe("window.db.objectStores.contains('storeFail')", "false"); +} + +function checkMetadataExistingObjectStore() +{ + shouldBe("db.objectStores", "['storeFail']"); + shouldBe("db.objectStores.length", "1"); + shouldBe("db.objectStores.contains('storeFail')", "true"); } -function openSuccess() +function setNewVersion() { - debug("createObjectStoreCallback():"); - verifySuccessEvent(event); - db = evalAndLog("db = event.result"); - - deleteAllObjectStores(db); - - result = evalAndLog("db.createObjectStore('storeName', null)"); + result = evalAndLog("db.setVersion('new version')"); verifyResult(result); - result.onsuccess = createSuccess; + result.onsuccess = setVersionSuccess; result.onerror = unexpectedErrorCallback; } -function createSuccess() +function setVersionSuccess() { + debug("setVersionSuccess():"); verifySuccessEvent(event); + window.trans = evalAndLog("trans = event.result"); + shouldBeTrue("trans !== null"); + trans.onabort = unexpectedAbortCallback; + trans.oncomplete = completeCallback; + window.completeEventFired = false; + + deleteAllObjectStores(db, createObjectStoreAndStartTransaction); +} + +function createObjectStoreAndStartTransaction() +{ + evalAndLog("db.createObjectStore('storeName', null)"); transaction = evalAndLog("db.transaction()"); transaction.onabort = abortCallback; var store = evalAndLog("store = transaction.objectStore('storeName')"); shouldBeEqualToString("store.name", "storeName"); } +function completeCallback() +{ + verifyCompleteEvent(event); + window.completeEventFired = true; +} + function abortCallback() { verifyAbortEvent(event); - done(); + checkForCompleteEvent(); } -test(); +function checkForCompleteEvent() +{ + if (completeEventFired) { + testPassed("oncomplete event had fired"); + done(); + } else + setTimeout(checkForCompleteEvent, 1); +} var successfullyParsed = true; +test(); + -- cgit v1.1