diff options
author | Ben Murdoch <benm@google.com> | 2011-05-05 14:36:32 +0100 |
---|---|---|
committer | Ben Murdoch <benm@google.com> | 2011-05-10 15:38:30 +0100 |
commit | f05b935882198ccf7d81675736e3aeb089c5113a (patch) | |
tree | 4ea0ca838d9ef1b15cf17ddb3928efb427c7e5a1 /LayoutTests/storage | |
parent | 60fbdcc62bced8db2cb1fd233cc4d1e4ea17db1b (diff) | |
download | external_webkit-f05b935882198ccf7d81675736e3aeb089c5113a.zip external_webkit-f05b935882198ccf7d81675736e3aeb089c5113a.tar.gz external_webkit-f05b935882198ccf7d81675736e3aeb089c5113a.tar.bz2 |
Merge WebKit at r74534: Initial merge by git.
Change-Id: I6ccd1154fa1b19c2ec2a66878eb675738735f1eb
Diffstat (limited to 'LayoutTests/storage')
13 files changed, 669 insertions, 47 deletions
diff --git a/LayoutTests/storage/domstorage/localstorage/private-browsing-affects-storage-expected.txt b/LayoutTests/storage/domstorage/localstorage/private-browsing-affects-storage-expected.txt index 6de4296..2fea061 100644 --- a/LayoutTests/storage/domstorage/localstorage/private-browsing-affects-storage-expected.txt +++ b/LayoutTests/storage/domstorage/localstorage/private-browsing-affects-storage-expected.txt @@ -1,7 +1,7 @@ This is a test to make sure that when private browsing is on any attempt to change the localStorage area fail. -Initial value of testItem is: InitialValue +Initial value of testItem is: null Caught exception trying to change item: Error: QUOTA_EXCEEDED_ERR: DOM Exception 22 -After change attempt, testItem is: InitialValue -After remove attempt, testItem is: InitialValue -After clear attempt, testItem is: InitialValue +After change attempt, testItem is: null +After remove attempt, testItem is: null +After clear attempt, testItem is: null diff --git a/LayoutTests/storage/domstorage/sessionstorage/private-browsing-affects-storage-expected.txt b/LayoutTests/storage/domstorage/sessionstorage/private-browsing-affects-storage-expected.txt index ed2017a..58c99f2 100644 --- a/LayoutTests/storage/domstorage/sessionstorage/private-browsing-affects-storage-expected.txt +++ b/LayoutTests/storage/domstorage/sessionstorage/private-browsing-affects-storage-expected.txt @@ -1,7 +1,7 @@ This is a test to make sure that when private browsing is on any attempt to change the sessionStorage area fail. -Initial value of testItem is: InitialValue +Initial value of testItem is: null Caught exception trying to change item: Error: QUOTA_EXCEEDED_ERR: DOM Exception 22 -After change attempt, testItem is: InitialValue -After remove attempt, testItem is: InitialValue -After clear attempt, testItem is: InitialValue +After change attempt, testItem is: null +After remove attempt, testItem is: null +After clear attempt, testItem is: null diff --git a/LayoutTests/storage/hash-change-with-xhr.js b/LayoutTests/storage/hash-change-with-xhr.js index 4290681..7f56f79 100644 --- a/LayoutTests/storage/hash-change-with-xhr.js +++ b/LayoutTests/storage/hash-change-with-xhr.js @@ -81,6 +81,12 @@ function invokeBack() function runTest() { + // Location changes need to happen outside the onload handler to generate history entries. + setTimeout(runTestsInner, 0); +} + +function runTestsInner() +{ backIterations = 10; consecutiveFailures = 0; successes = 0; diff --git a/LayoutTests/storage/indexeddb/cursor-delete-expected.txt b/LayoutTests/storage/indexeddb/cursor-delete-expected.txt new file mode 100644 index 0000000..1fdf9ed --- /dev/null +++ b/LayoutTests/storage/indexeddb/cursor-delete-expected.txt @@ -0,0 +1,133 @@ +Test IndexedDB's openCursor. + +On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE". + + +webkitIndexedDB.open('name') +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. +objectStore = db.createObjectStore('test') +objectStore.add('myValue1', 'myKey1') +objectStore.add('myValue2', 'myKey2') +objectStore.add('myValue3', 'myKey3') +objectStore.add('myValue4', 'myKey4') +openCursor1 +trans = db.transaction('test', webkitIDBTransaction.READ_WRITE) +trans.objectStore('test').openCursor({range: keyRange}) +PASS 'onsuccess' in result is true +PASS 'onerror' in result is true +PASS 'readyState' in result is true +An event should fire shortly... + +event.result.delete() +PASS event.result.value is "myValue1" +event.result.continue() +event.result.delete() +PASS event.result.value is "myValue2" +event.result.continue() +event.result.delete() +PASS event.result.value is "myValue3" +event.result.continue() +event.result.delete() +PASS event.result.value is "myValue4" +event.result.continue() +PASS counter is 5 +trans.objectStore('test').openCursor({range: keyRange}) +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 + +WARN: shouldBe() expects string arguments +PASS null is null +trans = db.transaction('test', webkitIDBTransaction.READ_WRITE) +objectStore = trans.objectStore('test') +objectStore.add('myValue1', 'myKey1') +PASS 'onsuccess' in result is true +PASS 'onerror' in result is true +PASS 'readyState' in result is true +An event should fire shortly... + +openCursor2 +objectStore.openCursor({range: keyRange}) +PASS 'onsuccess' in result is true +PASS 'onerror' in result is true +PASS 'readyState' in result is true +An event should fire shortly... + +Success event fired: +PASS 'result' in event is true +PASS 'code' in event is false +PASS 'message' in event is false +PASS 'source' in event is true +PASS event.source != null is true +PASS 'onsuccess' in event.target is true +PASS 'onerror' in event.target is true +PASS 'readyState' in event.target is true +PASS event.target.readyState is event.target.DONE + +PASS [object IDBCursor] is non-null. +event.result.delete() +objectStore.get('myKey1') +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 successfullyParsed is true + +TEST COMPLETE + diff --git a/LayoutTests/storage/indexeddb/cursor-delete.html b/LayoutTests/storage/indexeddb/cursor-delete.html new file mode 100644 index 0000000..ce62d6a --- /dev/null +++ b/LayoutTests/storage/indexeddb/cursor-delete.html @@ -0,0 +1,132 @@ +<html> +<head> +<link rel="stylesheet" href="../../fast/js/resources/js-test-style.css"> +<script src="../../fast/js/resources/js-test-pre.js"></script> +<script src="../../fast/js/resources/js-test-post-function.js"></script> +<script src="resources/shared.js"></script> +</head> +<body> +<p id="description"></p> +<div id="console"></div> +<script> + +description("Test IndexedDB's openCursor."); +if (window.layoutTestController) + layoutTestController.waitUntilDone(); + +test(); + +function test() +{ + result = evalAndLog("webkitIndexedDB.open('name')"); + verifyResult(result); + result.onsuccess = openSuccess; + result.onerror = unexpectedErrorCallback; +} + +function openSuccess() +{ + verifySuccessEvent(event); + var db = evalAndLog("db = event.result"); + + result = evalAndLog("db.setVersion('new version')"); + verifyResult(result); + result.onsuccess = setVersionSuccess; + result.onerror = unexpectedErrorCallback; +} + +function setVersionSuccess() +{ + debug("setVersionSuccess():"); + verifySuccessEvent(event); + window.trans = evalAndLog("trans = event.result"); + shouldBeTrue("trans !== null"); + trans.onabort = unexpectedAbortCallback; + trans.oncomplete = openCursor; + + deleteAllObjectStores(db, createAndPopulateObjectStore); +} + +function createAndPopulateObjectStore() +{ + var objectStore = evalAndLog("objectStore = db.createObjectStore('test')"); + evalAndLog("objectStore.add('myValue1', 'myKey1')"); + evalAndLog("objectStore.add('myValue2', 'myKey2')"); + evalAndLog("objectStore.add('myValue3', 'myKey3')"); + evalAndLog("objectStore.add('myValue4', 'myKey4')"); +} + +function openCursor() +{ + debug("openCursor1"); + evalAndLog("trans = db.transaction('test', webkitIDBTransaction.READ_WRITE)"); + keyRange = webkitIDBKeyRange.lowerBound("myKey1"); + result = evalAndLog("trans.objectStore('test').openCursor({range: keyRange})"); + verifyResult(result); + result.onsuccess = cursorSuccess; + result.onerror = unexpectedErrorCallback; + counter = 1; +} + +function cursorSuccess() +{ + if (event.result == null) { + shouldBe("counter", "5"); + result = evalAndLog("trans.objectStore('test').openCursor({range: keyRange})"); + verifyResult(result); + result.onsuccess = cursorEmpty; + result.onerror = unexpectedErrorCallback; + return; + } + evalAndLog("event.result.delete()"); + shouldBeEqualToString("event.result.value", "myValue" + counter++); + evalAndLog("event.result.continue()"); +} + +function cursorEmpty() +{ + verifySuccessEvent(event); + shouldBeNull(event.result); + trans.oncomplete = addObject; +} + +function addObject() +{ + evalAndLog("trans = db.transaction('test', webkitIDBTransaction.READ_WRITE)"); + objectStore = evalAndLog("objectStore = trans.objectStore('test')"); + result = evalAndLog("objectStore.add('myValue1', 'myKey1')"); + verifyResult(result); + result.onsuccess = openCursor2; + result.onerror = unexpectedErrorCallback; +} + +function openCursor2() +{ + debug("openCursor2"); + result = evalAndLog("objectStore.openCursor({range: keyRange})"); + verifyResult(result); + result.onsuccess = deleteObject; + result.onerror = unexpectedErrorCallback; +} + +function deleteObject() +{ + verifySuccessEvent(event); + shouldBeNonNull(event.result); + evalAndLog("event.result.delete()"); + result = evalAndLog("objectStore.get('myKey1')"); + result.onsuccess = unexpectedSuccessCallback; + result.onerror = verifyObjectDeleted; +} + +function verifyObjectDeleted() +{ + verifyErrorEvent(event); + done(); +} + +var successfullyParsed = true; + +</script> +</body> +</html> diff --git a/LayoutTests/storage/indexeddb/cursor-index-delete-expected.txt b/LayoutTests/storage/indexeddb/cursor-index-delete-expected.txt new file mode 100644 index 0000000..4598556 --- /dev/null +++ b/LayoutTests/storage/indexeddb/cursor-index-delete-expected.txt @@ -0,0 +1,134 @@ +Test IndexedDB's openCursor. + +On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE". + + +webkitIndexedDB.open('name') +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. +objectStore = db.createObjectStore('test') +objectStore.createIndex('testIndex', 'x') +objectStore.add({x: 1}, 'myKey1') +objectStore.add({x: 2}, 'myKey2') +objectStore.add({x: 3}, 'myKey3') +objectStore.add({x: 4}, 'myKey4') +openCursor1 +trans = db.transaction('test', webkitIDBTransaction.READ_WRITE) +trans.objectStore('test').index('testIndex').openCursor({range: keyRange}) +PASS 'onsuccess' in result is true +PASS 'onerror' in result is true +PASS 'readyState' in result is true +An event should fire shortly... + +event.result.delete() +PASS event.result.key is counter++ +event.result.continue() +event.result.delete() +PASS event.result.key is counter++ +event.result.continue() +event.result.delete() +PASS event.result.key is counter++ +event.result.continue() +event.result.delete() +PASS event.result.key is counter++ +event.result.continue() +PASS counter is 5 +trans.objectStore('test').index('testIndex').openCursor({range: keyRange}) +PASS 'onsuccess' in result is true +PASS 'onerror' in result is true +PASS 'readyState' in result is true +An event should fire shortly... + +Success event fired: +PASS 'result' in event is true +PASS 'code' in event is false +PASS 'message' in event is false +PASS 'source' in event is true +PASS event.source != null is true +PASS 'onsuccess' in event.target is true +PASS 'onerror' in event.target is true +PASS 'readyState' in event.target is true +PASS event.target.readyState is event.target.DONE + +PASS event.result is null +trans = db.transaction('test', webkitIDBTransaction.READ_WRITE) +objectStore = trans.objectStore('test') +objectStore.add({x: 1}, 'myKey1') +PASS 'onsuccess' in result is true +PASS 'onerror' in result is true +PASS 'readyState' in result is true +An event should fire shortly... + +openCursor2 +index = event.source.index('testIndex') +index.openCursor({range: keyRange}) +PASS 'onsuccess' in result is true +PASS 'onerror' in result is true +PASS 'readyState' in result is true +An event should fire shortly... + +Success event fired: +PASS 'result' in event is true +PASS 'code' in event is false +PASS 'message' in event is false +PASS 'source' in event is true +PASS event.source != null is true +PASS 'onsuccess' in event.target is true +PASS 'onerror' in event.target is true +PASS 'readyState' in event.target is true +PASS event.target.readyState is event.target.DONE + +PASS [object IDBCursor] is non-null. +event.result.delete() +index.get(1) +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 successfullyParsed is true + +TEST COMPLETE + diff --git a/LayoutTests/storage/indexeddb/cursor-index-delete.html b/LayoutTests/storage/indexeddb/cursor-index-delete.html new file mode 100644 index 0000000..ea10f02 --- /dev/null +++ b/LayoutTests/storage/indexeddb/cursor-index-delete.html @@ -0,0 +1,136 @@ +<html> +<head> +<link rel="stylesheet" href="../../fast/js/resources/js-test-style.css"> +<script src="../../fast/js/resources/js-test-pre.js"></script> +<script src="../../fast/js/resources/js-test-post-function.js"></script> +<script src="resources/shared.js"></script> +</head> +<body> +<p id="description"></p> +<div id="console"></div> +<script> + +description("Test IndexedDB's openCursor."); +if (window.layoutTestController) + layoutTestController.waitUntilDone(); + +test(); + +function test() +{ + result = evalAndLog("webkitIndexedDB.open('name')"); + verifyResult(result); + result.onsuccess = openSuccess; + result.onerror = unexpectedErrorCallback; +} + +function openSuccess() +{ + verifySuccessEvent(event); + var db = evalAndLog("db = event.result"); + + result = evalAndLog("db.setVersion('new version')"); + verifyResult(result); + result.onsuccess = setVersionSuccess; + result.onerror = unexpectedErrorCallback; +} + +function setVersionSuccess() +{ + debug("setVersionSuccess():"); + verifySuccessEvent(event); + window.trans = evalAndLog("trans = event.result"); + shouldBeTrue("trans !== null"); + trans.onabort = unexpectedAbortCallback; + trans.oncomplete = openCursor; + + deleteAllObjectStores(db, createAndPopulateObjectStoreAndIndex); +} + +function createAndPopulateObjectStoreAndIndex() +{ + objectStore = evalAndLog("objectStore = db.createObjectStore('test')"); + evalAndLog("objectStore.createIndex('testIndex', 'x')"); + + evalAndLog("objectStore.add({x: 1}, 'myKey1')"); + evalAndLog("objectStore.add({x: 2}, 'myKey2')"); + evalAndLog("objectStore.add({x: 3}, 'myKey3')"); + evalAndLog("objectStore.add({x: 4}, 'myKey4')"); +} + +function openCursor() +{ + debug("openCursor1"); + evalAndLog("trans = db.transaction('test', webkitIDBTransaction.READ_WRITE)"); + keyRange = webkitIDBKeyRange.lowerBound(1); + result = evalAndLog("trans.objectStore('test').index('testIndex').openCursor({range: keyRange})"); + verifyResult(result); + result.onsuccess = cursorSuccess; + result.onerror = unexpectedErrorCallback; + counter = 1; +} + +function cursorSuccess() +{ + if (event.result == null) { + shouldBe("counter", "5"); + result = evalAndLog("trans.objectStore('test').index('testIndex').openCursor({range: keyRange})"); + verifyResult(result); + result.onsuccess = cursorEmpty; + result.onerror = unexpectedErrorCallback; + return; + } + var deleteResult = evalAndLog("event.result.delete()"); + deleteResult.onerror = unexpectedErrorCallback; + shouldBe("event.result.key", "counter++"); + evalAndLog("event.result.continue()"); +} + +function cursorEmpty() +{ + verifySuccessEvent(event); + shouldBeNull("event.result"); + trans.oncomplete = addObject; +} + +function addObject() +{ + evalAndLog("trans = db.transaction('test', webkitIDBTransaction.READ_WRITE)"); + objectStore = evalAndLog("objectStore = trans.objectStore('test')"); + result = evalAndLog("objectStore.add({x: 1}, 'myKey1')"); + verifyResult(result); + result.onsuccess = openCursor2; + result.onerror = unexpectedErrorCallback; +} + +function openCursor2() +{ + debug("openCursor2"); + evalAndLog("index = event.source.index('testIndex')"); + result = evalAndLog("index.openCursor({range: keyRange})"); + verifyResult(result); + result.onsuccess = deleteObject; + result.onerror = unexpectedErrorCallback; +} + +function deleteObject() +{ + verifySuccessEvent(event); + shouldBeNonNull(event.result); + evalAndLog("event.result.delete()"); + result = evalAndLog("index.get(1)"); + result.onsuccess = unexpectedSuccessCallback; + result.onerror = verifyObjectDeleted; +} + +function verifyObjectDeleted() +{ + verifyErrorEvent(event); + done(); +} + +var successfullyParsed = true; + +</script> +</body> +</html> diff --git a/LayoutTests/storage/indexeddb/objectstore-basics-expected.txt b/LayoutTests/storage/indexeddb/objectstore-basics-expected.txt index e736d2f..17746d3 100644 --- a/LayoutTests/storage/indexeddb/objectstore-basics-expected.txt +++ b/LayoutTests/storage/indexeddb/objectstore-basics-expected.txt @@ -98,22 +98,13 @@ PASS store.indexNames.item(100) is null transaction = db.transaction() store = transaction.objectStore('storeName') Try to insert data with a Date key: -store.add({x: 'foo'}, new Date()) -PASS Exception thrown -PASS code is DOMException.TYPE_MISMATCH_ERR +store.add({x: 'foo'}, testDate) Try to insert a value not handled by structured clone: store.add({x: 'bar', y: document.getElementById('console')}, 'bar') PASS Exception thrown PASS code is DOMException.NOT_SUPPORTED_ERR Try to insert data where key path yields a Date key: -store.add({x: new Date()}, 'foo') -PASS Adding data where key path yielded Date key resulted in error. -store.add({x: 'value'}, 'key') -PASS 'onsuccess' in result is true -PASS 'onerror' in result is true -PASS 'readyState' in result is true -An event should fire shortly... - +store.add({x: new Date(), y: 'value'}, 'key') addSuccess(): Success event fired: PASS 'result' in event is true @@ -127,7 +118,7 @@ PASS 'readyState' in event.target is true PASS event.target.readyState is event.target.DONE PASS event.result is "key" -event.source.add({x: 'value'}, 'zzz') +event.source.add({x: 'foo'}, 'zzz') PASS 'onsuccess' in result is true PASS 'onerror' in result is true PASS 'readyState' in result is true @@ -208,8 +199,22 @@ PASS 'onerror' in event.target is true PASS 'readyState' in event.target is true PASS event.target.readyState is event.target.DONE -PASS event.result.x is "value" +PASS event.result.y is "value" store = event.source +store.get(testDate) +getSuccessDateKey(): +Success event fired: +PASS 'result' in event is true +PASS 'code' in event is false +PASS 'message' in event is false +PASS 'source' in event is true +PASS event.source != null is true +PASS 'onsuccess' in event.target is true +PASS 'onerror' in event.target is true +PASS 'readyState' in event.target is true +PASS event.target.readyState is event.target.DONE + +PASS event.result.x is "foo" store.delete('key') PASS 'onsuccess' in result is true PASS 'onerror' in result is true diff --git a/LayoutTests/storage/indexeddb/objectstore-basics.html b/LayoutTests/storage/indexeddb/objectstore-basics.html index 3d2a1d2..a368c01 100644 --- a/LayoutTests/storage/indexeddb/objectstore-basics.html +++ b/LayoutTests/storage/indexeddb/objectstore-basics.html @@ -136,6 +136,7 @@ function checkMetadata() addData(); } +var testDate = new Date("August 25, 1991 20:57:08"); function addData() { @@ -144,17 +145,13 @@ function addData() window.store = evalAndLog("store = transaction.objectStore('storeName')"); debug("Try to insert data with a Date key:"); - // FIXME: This should work in the future. - try { - debug("store.add({x: 'foo'}, new Date())"); - store.add({x: 'foo'}, new Date()); - testFailed("Passing a Date as key argument should have thrown."); - } catch (err) { - testPassed("Exception thrown"); - code = err.code; - shouldBe("code", "DOMException.TYPE_MISMATCH_ERR"); - } + result = evalAndLog("store.add({x: 'foo'}, testDate)"); + result.onsuccess = addDateSuccess; + result.onerror = unexpectedErrorCallback; +} +function addDateSuccess() +{ debug("Try to insert a value not handled by structured clone:"); try { debug("store.add({x: 'bar', y: document.getElementById('console')}, 'bar')"); @@ -166,19 +163,8 @@ function addData() shouldBe("code", "DOMException.NOT_SUPPORTED_ERR"); } - // FIXME: This should work in the future. debug("Try to insert data where key path yields a Date key:"); - result = evalAndLog("store.add({x: new Date()}, 'foo')"); - result.onsuccess = unexpectedSuccessCallback; - result.onerror = addKeyPathYieldingDateFailure; -} - -function addKeyPathYieldingDateFailure() -{ - testPassed("Adding data where key path yielded Date key resulted in error."); - - result = evalAndLog("store.add({x: 'value'}, 'key')"); - verifyResult(result); + result = evalAndLog("store.add({x: new Date(), y: 'value'}, 'key')"); result.onsuccess = addSuccess; result.onerror = unexpectedErrorCallback; } @@ -189,7 +175,7 @@ function addSuccess() verifySuccessEvent(event); shouldBeEqualToString("event.result", "key"); - result = evalAndLog("event.source.add({x: 'value'}, 'zzz')"); + result = evalAndLog("event.source.add({x: 'foo'}, 'zzz')"); verifyResult(result); result.onsuccess = unexpectedSuccessCallback; result.onerror = addAgainFailure; @@ -248,8 +234,19 @@ function getSuccess() { debug("getSuccess():"); verifySuccessEvent(event); - shouldBeEqualToString("event.result.x", "value"); + shouldBeEqualToString("event.result.y", "value"); + var store = evalAndLog("store = event.source"); + result = evalAndLog("store.get(testDate)"); + result.onsuccess = getSuccessDateKey; + result.onerror = unexpectedErrorCallback; +} + +function getSuccessDateKey() +{ + debug("getSuccessDateKey():"); + verifySuccessEvent(event); + shouldBeEqualToString("event.result.x", "foo"); result = evalAndLog("store.delete('key')"); verifyResult(result); diff --git a/LayoutTests/storage/indexeddb/transaction-crash-on-abort-expected.txt b/LayoutTests/storage/indexeddb/transaction-crash-on-abort-expected.txt new file mode 100644 index 0000000..413643c --- /dev/null +++ b/LayoutTests/storage/indexeddb/transaction-crash-on-abort-expected.txt @@ -0,0 +1,32 @@ +Test IndexedDB transaction does not crash on abort. + +On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE". + + +PASS 'webkitIndexedDB' in window is true +PASS webkitIndexedDB == null is false +webkitIndexedDB.open('name') +PASS 'onsuccess' in result is true +PASS 'onerror' in result is true +PASS 'readyState' in result is true +An event should fire shortly... + +openSuccess(): +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.transaction([]) +window.gc() +PASS successfullyParsed is true + +TEST COMPLETE + diff --git a/LayoutTests/storage/indexeddb/transaction-crash-on-abort.html b/LayoutTests/storage/indexeddb/transaction-crash-on-abort.html new file mode 100644 index 0000000..1b13c87 --- /dev/null +++ b/LayoutTests/storage/indexeddb/transaction-crash-on-abort.html @@ -0,0 +1,44 @@ +<html> +<head> +<link rel="stylesheet" href="../../fast/js/resources/js-test-style.css"> +<script src="../../fast/js/resources/js-test-pre.js"></script> +<script src="../../fast/js/resources/js-test-post-function.js"></script> +<script src="resources/shared.js"></script> +</head> +<body> +<p id="description"></p> +<div id="console"></div> +<script> + +description("Test IndexedDB transaction does not crash on abort."); +if (window.layoutTestController) + layoutTestController.waitUntilDone(); + +function test() +{ + shouldBeTrue("'webkitIndexedDB' in window"); + shouldBeFalse("webkitIndexedDB == null"); + + result = evalAndLog("webkitIndexedDB.open('name')"); + verifyResult(result); + result.onsuccess = openSuccess; + result.onerror = unexpectedErrorCallback; +}
+
+function openSuccess()
+{
+ debug("openSuccess():");
+ verifySuccessEvent(event);
+ db = evalAndLog("db = event.result");
+ evalAndLog("db.transaction([])");
+ evalAndLog("window.gc()");
+ done();
+} + +var successfullyParsed = true; + +test(); + +</script> +</body> +</html> diff --git a/LayoutTests/storage/private-browsing-readonly-expected.txt b/LayoutTests/storage/private-browsing-noread-nowrite-expected.txt index d5f4e0b..7542ba6 100644 --- a/LayoutTests/storage/private-browsing-readonly-expected.txt +++ b/LayoutTests/storage/private-browsing-noread-nowrite-expected.txt @@ -9,5 +9,7 @@ Private browsing statement 3 completed with an error not authorized Private browsing statement 4 completed with an error not authorized +Private browsing statement 5 completed with an error +access to PrivateTest1.randomData is prohibited Test ended diff --git a/LayoutTests/storage/private-browsing-readonly.html b/LayoutTests/storage/private-browsing-noread-nowrite.html index 972b123..b9b5882 100644 --- a/LayoutTests/storage/private-browsing-readonly.html +++ b/LayoutTests/storage/private-browsing-noread-nowrite.html @@ -16,7 +16,8 @@ var privateBrowsingStatements = [ "CREATE TABLE IF NOT EXISTS PrivateTest2 (randomData)", "DELETE FROM PrivateTest1", "DROP TABLE PrivateTest1", - "INSERT INTO PrivateTest1 VALUES ('somedata')" + "INSERT INTO PrivateTest1 VALUES ('somedata')", + "SELECT * FROM PrivateTest1" ]; var completed = 0; @@ -88,7 +89,7 @@ function runTest() layoutTestController.waitUntilDone(); } - var database = openDatabase("PrivateBrowsingReadOnlyTest", "1.0", "Test private browsing read-only safety", 1); + var database = openDatabase("PrivateBrowsingNoReadNoWriteTest", "1.0", "Test private browsing no read/write safety", 1); database.transaction(runSetup, endTest, endTest); } |