summaryrefslogtreecommitdiffstats
path: root/testing/web-platform/tests/webstorage/event_setattribute.js
diff options
context:
space:
mode:
Diffstat (limited to 'testing/web-platform/tests/webstorage/event_setattribute.js')
-rw-r--r--testing/web-platform/tests/webstorage/event_setattribute.js115
1 files changed, 115 insertions, 0 deletions
diff --git a/testing/web-platform/tests/webstorage/event_setattribute.js b/testing/web-platform/tests/webstorage/event_setattribute.js
new file mode 100644
index 000000000..8070938ba
--- /dev/null
+++ b/testing/web-platform/tests/webstorage/event_setattribute.js
@@ -0,0 +1,115 @@
+testStorages(function(storageString) {
+ async_test(function(t) {
+ assert_true(storageString in window, storageString + " exist");
+ var storage = window[storageString];
+ t.add_cleanup(function() { storage.clear() });
+
+ clearStorage(storageString, t.step_func(step0));
+ assert_equals(storage.length, 0, "storage.length");
+
+ function step0(msg)
+ {
+ iframe.onload = t.step_func(step1);
+ // Null out the existing handler eventTestHarness.js set up;
+ // otherwise this test won't be testing much of anything useful.
+ iframe.contentWindow.onstorage = null;
+ iframe.src = "resources/event_setattribute_handler.html";
+ }
+
+ function step1(msg)
+ {
+ storage.setItem('FOO', 'BAR');
+
+ runAfterNStorageEvents(t.step_func(step2), 1);
+ }
+
+ function step2(msg)
+ {
+ if(msg != undefined) {
+ assert_unreached(msg);
+ }
+ assert_equals(storageEventList.length, 1);
+ assert_equals(storageEventList[0].key, "FOO");
+ assert_equals(storageEventList[0].oldValue, null);
+ assert_equals(storageEventList[0].newValue, "BAR");
+
+ storage.setItem('FU', 'BAR');
+ storage.setItem('a', '1');
+ storage.setItem('b', '2');
+ storage.setItem('b', '3');
+
+ runAfterNStorageEvents(t.step_func(step3), 5);
+ }
+
+ function step3(msg)
+ {
+ if(msg != undefined) {
+ assert_unreached(msg);
+ }
+ assert_equals(storageEventList.length, 5);
+ assert_equals(storageEventList[1].key, "FU");
+ assert_equals(storageEventList[1].oldValue, null);
+ assert_equals(storageEventList[1].newValue, "BAR");
+
+ assert_equals(storageEventList[2].key, "a");
+ assert_equals(storageEventList[2].oldValue, null);
+ assert_equals(storageEventList[2].newValue, "1");
+
+ assert_equals(storageEventList[3].key, "b");
+ assert_equals(storageEventList[3].oldValue, null);
+ assert_equals(storageEventList[3].newValue, "2");
+
+ assert_equals(storageEventList[4].key, "b");
+ assert_equals(storageEventList[4].oldValue, "2");
+ assert_equals(storageEventList[4].newValue, "3");
+
+ storage.removeItem('FOO');
+
+ runAfterNStorageEvents(t.step_func(step4), 6);
+ }
+
+ function step4(msg)
+ {
+ if(msg != undefined) {
+ assert_unreached(msg);
+ }
+ assert_equals(storageEventList.length, 6);
+ assert_equals(storageEventList[5].key, "FOO");
+ assert_equals(storageEventList[5].oldValue, "BAR");
+ assert_equals(storageEventList[5].newValue, null);
+
+ storage.removeItem('FU');
+
+ runAfterNStorageEvents(t.step_func(step5), 7);
+ }
+
+ function step5(msg)
+ {
+ if(msg != undefined) {
+ assert_unreached(msg);
+ }
+ assert_equals(storageEventList.length, 7);
+ assert_equals(storageEventList[6].key, "FU");
+ assert_equals(storageEventList[6].oldValue, "BAR");
+ assert_equals(storageEventList[6].newValue, null);
+
+ storage.clear();
+
+ runAfterNStorageEvents(t.step_func(step6), 8);
+ }
+
+ function step6(msg)
+ {
+ if(msg != undefined) {
+ assert_unreached(msg);
+ }
+ assert_equals(storageEventList.length, 8);
+ assert_equals(storageEventList[7].key, null);
+ assert_equals(storageEventList[7].oldValue, null);
+ assert_equals(storageEventList[7].newValue, null);
+
+ t.done();
+ }
+
+ }, storageString + " mutations fire StorageEvents that are caught by the event listener attached via setattribute.");
+});