diff options
Diffstat (limited to 'LayoutTests/storage/domstorage/sessionstorage')
19 files changed, 594 insertions, 0 deletions
diff --git a/LayoutTests/storage/domstorage/sessionstorage/delete-removal-expected.txt b/LayoutTests/storage/domstorage/sessionstorage/delete-removal-expected.txt new file mode 100644 index 0000000..ce04017 --- /dev/null +++ b/LayoutTests/storage/domstorage/sessionstorage/delete-removal-expected.txt @@ -0,0 +1,13 @@ +This test makes sure that using the syntax `delete sessionStorage.keyName` works as an alias to `sessionStorage.removeItem(keyName).` +foo (before anything) is: undefined +foo (after a named property setter set) is: bar +foo (after a delete) is: undefined +foo (after an indexed setter set) is: bar +foo (after deleting FOO (not foo)) is : bar +foo (after a delete) is: undefined +foo (after calling setItem) is: bar +foo (after a delete) is: undefined +foo (after a redundant delete) is: undefined +foo (after a named property setter set) is: bar +foo (after an indexed delete) is: undefined + diff --git a/LayoutTests/storage/domstorage/sessionstorage/delete-removal.html b/LayoutTests/storage/domstorage/sessionstorage/delete-removal.html new file mode 100644 index 0000000..7a4b8d2 --- /dev/null +++ b/LayoutTests/storage/domstorage/sessionstorage/delete-removal.html @@ -0,0 +1,51 @@ +<html> +<head> +<script src="resources/clearSessionStorage.js"></script> +<script> + +if (window.layoutTestController) + layoutTestController.dumpAsText(); + +function log(a) +{ + document.getElementById('logger').appendChild(document.createTextNode(a)); + document.getElementById('logger').appendChild(document.createElement("br")); +} + +function runTest() +{ + if (!window.sessionStorage) { + log("window.sessionStorage DOES NOT exist"); + return; + } + + log("foo (before anything) is: " + sessionStorage.foo); + sessionStorage.foo = "bar"; + log("foo (after a named property setter set) is: " + sessionStorage.foo); + delete sessionStorage.foo; + log("foo (after a delete) is: " + sessionStorage.foo); + sessionStorage["foo"] = "bar"; + log("foo (after an indexed setter set) is: " + sessionStorage.foo); + delete sessionStorage.FOO; + log("foo (after deleting FOO (not foo)) is : " + sessionStorage.foo); + delete sessionStorage.foo; + log("foo (after a delete) is: " + sessionStorage.foo); + sessionStorage.setItem("foo", "bar"); + log("foo (after calling setItem) is: " + sessionStorage.foo); + delete sessionStorage.foo; + log("foo (after a delete) is: " + sessionStorage.foo); + delete sessionStorage.foo; + log("foo (after a redundant delete) is: " + sessionStorage.foo); + sessionStorage.foo = "bar"; + log("foo (after a named property setter set) is: " + sessionStorage.foo); + delete sessionStorage["foo"]; + log("foo (after an indexed delete) is: " + sessionStorage.foo); +} + +</script> +</head> +<body onload="runTest();"> +This test makes sure that using the syntax `delete sessionStorage.keyName` works as an alias to `sessionStorage.removeItem(keyName).`<br><hr> +<div id="logger"></div> +</body> +</html> diff --git a/LayoutTests/storage/domstorage/sessionstorage/enumerate-storage-expected.txt b/LayoutTests/storage/domstorage/sessionstorage/enumerate-storage-expected.txt new file mode 100644 index 0000000..7c87325 --- /dev/null +++ b/LayoutTests/storage/domstorage/sessionstorage/enumerate-storage-expected.txt @@ -0,0 +1,9 @@ +This test checks to see that you can enumber a Storage object and get only the keys as a result. The built-in properties of the Storage object should be ignored. The test operates on the SessionStorage object. +alpha +bar +batman +foo +fu +prototypeTestKey +zeta + diff --git a/LayoutTests/storage/domstorage/sessionstorage/enumerate-storage.html b/LayoutTests/storage/domstorage/sessionstorage/enumerate-storage.html new file mode 100644 index 0000000..7321f9a --- /dev/null +++ b/LayoutTests/storage/domstorage/sessionstorage/enumerate-storage.html @@ -0,0 +1,47 @@ +<html> +<head> +<script src="resources/clearSessionStorage.js"></script> +<script> + +if (window.layoutTestController) + layoutTestController.dumpAsText(); + +function log(a) +{ + document.getElementById("logger").innerHTML += a + "<br>"; +} + +function startTest() +{ + if (!window.sessionStorage) { + log("window.sessionStorage DOES NOT exist"); + return; + } + + Storage.prototype.prototypeTestKey = "prototypeTestValue"; + sessionStorage.foo = "bar"; + sessionStorage.fu = "baz"; + sessionStorage.batman = "bin suparman"; + sessionStorage.bar = "foo"; + sessionStorage.alpha = "beta"; + sessionStorage.zeta = "gamma"; + + // Enumerate sessionStorage, appending each key onto an array + var enumeratedArray = new Array(); + for (var n in sessionStorage) + enumeratedArray.push(n); + + // Sort the array, since the storage order isn't guaranteed + enumeratedArray.sort(); + + for (var n in enumeratedArray) + log(enumeratedArray[n]); +} + +</script> +</head> +<body onload="startTest();"> +This test checks to see that you can enumber a Storage object and get only the keys as a result. The built-in properties of the Storage object should be ignored. The test operates on the SessionStorage object.<br> +<div id="logger"></div> +</body> +</html> diff --git a/LayoutTests/storage/domstorage/sessionstorage/enumerate-with-length-and-key-expected.txt b/LayoutTests/storage/domstorage/sessionstorage/enumerate-with-length-and-key-expected.txt new file mode 100644 index 0000000..f879759 --- /dev/null +++ b/LayoutTests/storage/domstorage/sessionstorage/enumerate-with-length-and-key-expected.txt @@ -0,0 +1,9 @@ +This test attempts to enumerate all the keys in sessionStorage with .length + .key(). The built-in properties of the Storage object should be ignored. The test operates on the sessionStorage object. +alpha +bar +batman +foo +fu +prototypeTestKey +zeta + diff --git a/LayoutTests/storage/domstorage/sessionstorage/enumerate-with-length-and-key.html b/LayoutTests/storage/domstorage/sessionstorage/enumerate-with-length-and-key.html new file mode 100644 index 0000000..27266f1 --- /dev/null +++ b/LayoutTests/storage/domstorage/sessionstorage/enumerate-with-length-and-key.html @@ -0,0 +1,47 @@ +<html> +<head> +<script src="resources/clearSessionStorage.js"></script> +<script> + +if (window.layoutTestController) + layoutTestController.dumpAsText(); + +function log(a) +{ + document.getElementById("logger").innerHTML += a + "<br>"; +} + +function startTest() +{ + if (!window.sessionStorage) { + log("window.sessionStorage DOES NOT exist"); + return; + } + + Storage.prototype.prototypeTestKey = "prototypeTestValue"; + sessionStorage.foo = "bar"; + sessionStorage.fu = "baz"; + sessionStorage.batman = "bin suparman"; + sessionStorage.bar = "foo"; + sessionStorage.alpha = "beta"; + sessionStorage.zeta = "gamma"; + + // Enumerate sessionStorage, appending each key onto an array + var enumeratedArray = new Array(); + for (var n in sessionStorage) + enumeratedArray.push(n); + + // Sort the array, since the storage order isn't guaranteed + enumeratedArray.sort(); + + for (var n in enumeratedArray) + log(enumeratedArray[n]); +} + +</script> +</head> +<body onload="startTest();"> +This test attempts to enumerate all the keys in sessionStorage with .length + .key(). The built-in properties of the Storage object should be ignored. The test operates on the sessionStorage object.<br> +<div id="logger"></div> +</body> +</html> diff --git a/LayoutTests/storage/domstorage/sessionstorage/index-get-and-set-expected.txt b/LayoutTests/storage/domstorage/sessionstorage/index-get-and-set-expected.txt new file mode 100644 index 0000000..ff66bdc --- /dev/null +++ b/LayoutTests/storage/domstorage/sessionstorage/index-get-and-set-expected.txt @@ -0,0 +1,32 @@ +This is a test to make sure you can get and set values in SessionStorage by index. +Setting FOO using the index setter. +Reading FOO: +BAR +BAR +BAR + +Setting FOO again, using setItem. +Reading FOO: +BAZ +BAZ +BAZ + +Setting FOO again, using the index setter. +Reading FOO: +BAT +BAT +BAT + +Setting FOO again, using property-slot syntax +Reading FOO: +BATMAN +BATMAN +BATMAN + +Removing FOO, then trying to read it +Reading FOO: +undefined +undefined +null + + diff --git a/LayoutTests/storage/domstorage/sessionstorage/index-get-and-set.html b/LayoutTests/storage/domstorage/sessionstorage/index-get-and-set.html new file mode 100644 index 0000000..7922d0b --- /dev/null +++ b/LayoutTests/storage/domstorage/sessionstorage/index-get-and-set.html @@ -0,0 +1,79 @@ +<html> +<head> +<script src="resources/clearSessionStorage.js"></script> +<script> + +if (window.layoutTestController) { + layoutTestController.dumpAsText(); + layoutTestController.waitUntilDone(); +} + +function log(a) +{ + document.getElementById("logger").innerHTML += a + "<br>"; +} + +function finish() +{ + if (window.layoutTestController) + layoutTestController.notifyDone() +} + +function runTest() +{ + if (!window.sessionStorage) { + log("window.sessionStorage DOES NOT exist"); + finish(); + return; + } + + log("Setting FOO using the index setter."); + sessionStorage["FOO"] = "BAR"; + log("Reading FOO:"); + log(sessionStorage.FOO); + log(sessionStorage["FOO"]); + log(sessionStorage.getItem("FOO")); + log(""); + + log("Setting FOO again, using setItem."); + sessionStorage.setItem("FOO", "BAZ"); + log("Reading FOO:"); + log(sessionStorage.FOO); + log(sessionStorage["FOO"]); + log(sessionStorage.getItem("FOO")); + log(""); + + log("Setting FOO again, using the index setter."); + sessionStorage["FOO"] = "BAT"; + log("Reading FOO:"); + log(sessionStorage.FOO); + log(sessionStorage["FOO"]); + log(sessionStorage.getItem("FOO")); + log(""); + + log("Setting FOO again, using property-slot syntax"); + sessionStorage.FOO = "BATMAN"; + log("Reading FOO:"); + log(sessionStorage.FOO); + log(sessionStorage["FOO"]); + log(sessionStorage.getItem("FOO")); + log(""); + + log("Removing FOO, then trying to read it"); + sessionStorage.removeItem("FOO"); + log("Reading FOO:"); + log(sessionStorage.FOO); + log(sessionStorage["FOO"]); + log(sessionStorage.getItem("FOO")); + log(""); + + finish(); +} + +</script> +</head> +<body onload="runTest();"> +This is a test to make sure you can get and set values in SessionStorage by index.<br> +<div id="logger"></div> +</body> +</html> diff --git a/LayoutTests/storage/domstorage/sessionstorage/private-browsing-affects-storage-expected.txt b/LayoutTests/storage/domstorage/sessionstorage/private-browsing-affects-storage-expected.txt new file mode 100644 index 0000000..ed2017a --- /dev/null +++ b/LayoutTests/storage/domstorage/sessionstorage/private-browsing-affects-storage-expected.txt @@ -0,0 +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 +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 + diff --git a/LayoutTests/storage/domstorage/sessionstorage/private-browsing-affects-storage.html b/LayoutTests/storage/domstorage/sessionstorage/private-browsing-affects-storage.html new file mode 100644 index 0000000..8dd7a6a --- /dev/null +++ b/LayoutTests/storage/domstorage/sessionstorage/private-browsing-affects-storage.html @@ -0,0 +1,50 @@ +<html> +<head> +<script src="resources/clearSessionStorage.js"></script> +<script> + +if (window.layoutTestController) + layoutTestController.dumpAsText(); + +function log(a) +{ + document.getElementById("logger").innerHTML += a + "<br>"; +} + +function runTest() +{ + if (!window.sessionStorage) { + log("window.sessionStorage DOES NOT exist"); + return; + } + if (!window.layoutTestController) { + log("Test only designed to be run under DumpRenderTree"); + return; + } + + sessionStorage.setItem("testItem", "InitialValue"); + layoutTestController.setPrivateBrowsingEnabled(true); + log("Initial value of testItem is: " + sessionStorage.getItem("testItem")); + + try { + sessionStorage.setItem("testItem", "ChangedValue"); + } catch(e) { + log("Caught exception trying to change item: " + e); + } + + log("After change attempt, testItem is: " + sessionStorage.getItem("testItem")); + + sessionStorage.removeItem("testItem"); + log("After remove attempt, testItem is: " + sessionStorage.getItem("testItem")); + + sessionStorage.clear(); + log("After clear attempt, testItem is: " + sessionStorage.getItem("testItem")); +} + +</script> +</head> +<body onload="runTest();"> +This is a test to make sure that when private browsing is on any attempt to change the sessionStorage area fail. +<div id="logger"></div> +</body> +</html> diff --git a/LayoutTests/storage/domstorage/sessionstorage/resources/clearSessionStorage.js b/LayoutTests/storage/domstorage/sessionstorage/resources/clearSessionStorage.js new file mode 100644 index 0000000..489ef2a --- /dev/null +++ b/LayoutTests/storage/domstorage/sessionstorage/resources/clearSessionStorage.js @@ -0,0 +1,12 @@ +function clearSessionStorage() +{ + var keys = new Array(); + for (key in sessionStorage) + keys.push(key); + + for (key in keys) + sessionStorage.removeItem(keys[key]); +} + +if (window.sessionStorage) + clearSessionStorage(); diff --git a/LayoutTests/storage/domstorage/sessionstorage/resources/iframe-events-second.html b/LayoutTests/storage/domstorage/sessionstorage/resources/iframe-events-second.html new file mode 100644 index 0000000..2d7b004 --- /dev/null +++ b/LayoutTests/storage/domstorage/sessionstorage/resources/iframe-events-second.html @@ -0,0 +1,24 @@ +<html> +<head> +<script> +function handleStorageEvent(e) +{ + parent.log("Subframe received storage event:"); + parent.log("Key - " + e.key); + parent.log("New Value - " + e.newValue); + parent.log("Old Value - " + e.oldValue); + parent.log("URI - " + parent.normalizeURL(e.uri)); + parent.log("Storage Area - " + ((e.storageArea == window.sessionStorage) ? "This window's window.sessionStorage" : "Another window's window.sessionStorage")); + parent.log(""); + + if (e.key != "Subframe") { + parent.log("Subframe about to change sessionStorage..."); + sessionStorage.setItem("Subframe", "SET"); + } +} +</script> +</head> +<body onload="window.addEventListener('storage', handleStorageEvent, false);"> +This is the subframe which exists to make sure that both frames of a same security origin receive the event for that origin's sessionStorage object mutating +</body> +</html> diff --git a/LayoutTests/storage/domstorage/sessionstorage/resources/window-open-second.html b/LayoutTests/storage/domstorage/sessionstorage/resources/window-open-second.html new file mode 100644 index 0000000..b8dede6 --- /dev/null +++ b/LayoutTests/storage/domstorage/sessionstorage/resources/window-open-second.html @@ -0,0 +1,36 @@ +<html> +<head> +<script> + +var secondWindowLog = "Logging from second window:<br>"; + +function log(a) +{ + secondWindowLog += a + "<br>"; +} + +function runTest() +{ + if (!window.sessionStorage) { + log("window.sessionStorage DOES NOT exist"); + return; + } + + log("Value for FOO is " + window.sessionStorage.getItem("FOO")); + window.sessionStorage.setItem("FOO", "BAR-NEWWINDOW"); + log("Value for FOO after changing my own copy is " + window.sessionStorage.getItem("FOO")); + + log("Value for FOO in my opening window is " + window.opener.sessionStorage.getItem("FOO")); + + window.opener.log(secondWindowLog); + + if (window.layoutTestController) + layoutTestController.notifyDone(); +} + +</script> +</head> +<body onload="runTest();"> +This is a new window to make sure there is a copy of the previous window's sessionStorage, and that they diverge after a change<br> +</body> +</html> diff --git a/LayoutTests/storage/domstorage/sessionstorage/simple-usage-expected.txt b/LayoutTests/storage/domstorage/sessionstorage/simple-usage-expected.txt new file mode 100644 index 0000000..399fd08 --- /dev/null +++ b/LayoutTests/storage/domstorage/sessionstorage/simple-usage-expected.txt @@ -0,0 +1,13 @@ +This test trys simple operations on SessionStorage +Length is 0 +Value for FOO is null +Length is 1 +Value for FOO is BAR +Key for index 0 is FOO +Key for index 1 is null +Key for index -1 is null +Length is 1 +Value for FOO is BAZ +Length is 0 +Value for FOO is null + diff --git a/LayoutTests/storage/domstorage/sessionstorage/simple-usage.html b/LayoutTests/storage/domstorage/sessionstorage/simple-usage.html new file mode 100644 index 0000000..8e45521 --- /dev/null +++ b/LayoutTests/storage/domstorage/sessionstorage/simple-usage.html @@ -0,0 +1,49 @@ +<html> +<head> +<script src="resources/clearSessionStorage.js"></script> +<script> + +if (window.layoutTestController) + layoutTestController.dumpAsText(); + +function log(a) +{ + document.getElementById("logger").innerHTML += a + "<br>"; +} + +function runTest() +{ + if (!window.sessionStorage) { + log("window.sessionStorage DOES NOT exist"); + return; + } + + log("Length is " + window.sessionStorage.length); + log("Value for FOO is " + window.sessionStorage.getItem("FOO")); + + window.sessionStorage.setItem("FOO", "BAR"); + + log("Length is " + window.sessionStorage.length); + log("Value for FOO is " + window.sessionStorage.getItem("FOO")); + log("Key for index 0 is " + window.sessionStorage.key(0)); + log("Key for index 1 is " + window.sessionStorage.key(1)); + log("Key for index -1 is " + window.sessionStorage.key(-1)); + + window.sessionStorage.setItem("FOO", "BAZ"); + + log("Length is " + window.sessionStorage.length); + log("Value for FOO is " + window.sessionStorage.getItem("FOO")); + + window.sessionStorage.removeItem("FOO"); + + log("Length is " + window.sessionStorage.length); + log("Value for FOO is " + window.sessionStorage.getItem("FOO")); +} + +</script> +</head> +<body onload="runTest();"> +This test trys simple operations on SessionStorage<br> +<div id="logger"></div> +</body> +</html> diff --git a/LayoutTests/storage/domstorage/sessionstorage/string-conversion-expected.txt b/LayoutTests/storage/domstorage/sessionstorage/string-conversion-expected.txt new file mode 100644 index 0000000..65dcb2c --- /dev/null +++ b/LayoutTests/storage/domstorage/sessionstorage/string-conversion-expected.txt @@ -0,0 +1,15 @@ +This test case verifies that session storage only stores strings. +Length is 0 +Testing implicit setters +Type/value for null is string/null +Type/value for 0 is string/0 +Type/value for function(){} is string/function () {} +Testing explicit setters +Type/value for null is string/null +Type/value for 0 is string/0 +Type/value for function(){} is string/function () {} +Testing index setters +Type/value for null is string/null +Type/value for 0 is string/0 +Type/value for function(){} is string/function () {} + diff --git a/LayoutTests/storage/domstorage/sessionstorage/string-conversion.html b/LayoutTests/storage/domstorage/sessionstorage/string-conversion.html new file mode 100644 index 0000000..64a4e14 --- /dev/null +++ b/LayoutTests/storage/domstorage/sessionstorage/string-conversion.html @@ -0,0 +1,54 @@ +<html> +<head> +<script src="resources/clearSessionStorage.js"></script> +<script> + +if (window.layoutTestController) + layoutTestController.dumpAsText(); + +function log(a) +{ + document.getElementById("logger").innerHTML += a + "<br>"; +} + +function runTest() +{ + if (!window.sessionStorage) { + log("window.sessionStorage DOES NOT exist"); + return; + } + + log("Length is " + sessionStorage.length); + + log("Testing implicit setters"); + sessionStorage.a = null; + log("Type/value for null is " + typeof sessionStorage.a + "/" + sessionStorage.a); + sessionStorage.b = 0; + log("Type/value for 0 is " + typeof sessionStorage.b + "/" + sessionStorage.b); + sessionStorage.c = function(){}; + log("Type/value for function(){} is " + typeof sessionStorage.c + "/" + sessionStorage.c); + + log("Testing explicit setters"); + sessionStorage.setItem('d', null); + log("Type/value for null is " + typeof sessionStorage.d + "/" + sessionStorage.d); + sessionStorage.setItem('e', 0); + log("Type/value for 0 is " + typeof sessionStorage.e + "/" + sessionStorage.e); + sessionStorage.setItem('f', function(){}); + log("Type/value for function(){} is " + typeof sessionStorage.f + "/" + sessionStorage.f); + + log("Testing index setters"); + sessionStorage['g'] = null; + log("Type/value for null is " + typeof sessionStorage.g + "/" + sessionStorage.g); + sessionStorage['h'] = 0; + log("Type/value for 0 is " + typeof sessionStorage.h + "/" + sessionStorage.h); + sessionStorage['i'] = function(){}; + log("Type/value for function(){} is " + typeof sessionStorage.i + "/" + sessionStorage.i); +} + +</script> +</head> +<body onload="runTest();"> +This test case verifies that session storage only stores strings. +<div id="logger"></div> +</body> +</html> diff --git a/LayoutTests/storage/domstorage/sessionstorage/window-open-expected.txt b/LayoutTests/storage/domstorage/sessionstorage/window-open-expected.txt new file mode 100644 index 0000000..c613414 --- /dev/null +++ b/LayoutTests/storage/domstorage/sessionstorage/window-open-expected.txt @@ -0,0 +1,8 @@ +This is a new window to make sure there is a copy of the previous window's sessionStorage, and that they diverge after a change +Value for FOO is BAR +Logging from second window: +Value for FOO is BAR +Value for FOO after changing my own copy is BAR-NEWWINDOW +Value for FOO in my opening window is BAR + + diff --git a/LayoutTests/storage/domstorage/sessionstorage/window-open.html b/LayoutTests/storage/domstorage/sessionstorage/window-open.html new file mode 100644 index 0000000..34f8f39 --- /dev/null +++ b/LayoutTests/storage/domstorage/sessionstorage/window-open.html @@ -0,0 +1,39 @@ +<html> +<head> +<script src="resources/clearSessionStorage.js"></script> +<script> + +if (window.layoutTestController) { + layoutTestController.dumpAsText(); + layoutTestController.setCanOpenWindows(); + layoutTestController.waitUntilDone(); +} + +function log(a) +{ + document.getElementById("logger").innerHTML += a + "<br>"; +} + +function runTest() +{ + if (!window.sessionStorage) { + log("window.sessionStorage DOES NOT exist"); + return; + } + + window.log = log; + + window.sessionStorage.setItem("FOO", "BAR"); + log("Value for FOO is " + window.sessionStorage.getItem("FOO")); + window.open("resources/window-open-second.html"); + + +} + +</script> +</head> +<body onload="runTest();"> +This is a new window to make sure there is a copy of the previous window's sessionStorage, and that they diverge after a change<br> +<div id="logger"></div> +</body> +</html> |