event_setattribute.js (3971B)
1 testStorages(function(storageString) { 2 async_test(function(t) { 3 assert_true(storageString in window, storageString + " exist"); 4 var storage = window[storageString]; 5 t.add_cleanup(function() { storage.clear() }); 6 7 clearStorage(storageString, t.step_func(step0)); 8 assert_equals(storage.length, 0, "storage.length"); 9 10 function step0(msg) 11 { 12 iframe.onload = t.step_func(step1); 13 // Null out the existing handler eventTestHarness.js set up; 14 // otherwise this test won't be testing much of anything useful. 15 iframe.contentWindow.onstorage = null; 16 iframe.src = "resources/event_setattribute_handler.html"; 17 } 18 19 function step1(msg) 20 { 21 storage.setItem('FOO', 'BAR'); 22 23 runAfterNStorageEvents(t.step_func(step2), 1); 24 } 25 26 function step2(msg) 27 { 28 if(msg != undefined) { 29 assert_unreached(msg); 30 } 31 assert_equals(storageEventList.length, 1); 32 assert_equals(storageEventList[0].key, "FOO"); 33 assert_equals(storageEventList[0].oldValue, null); 34 assert_equals(storageEventList[0].newValue, "BAR"); 35 36 storage.setItem('FU', 'BAR'); 37 storage.setItem('a', '1'); 38 storage.setItem('b', '2'); 39 storage.setItem('b', '3'); 40 41 runAfterNStorageEvents(t.step_func(step3), 5); 42 } 43 44 function step3(msg) 45 { 46 if(msg != undefined) { 47 assert_unreached(msg); 48 } 49 assert_equals(storageEventList.length, 5); 50 assert_equals(storageEventList[1].key, "FU"); 51 assert_equals(storageEventList[1].oldValue, null); 52 assert_equals(storageEventList[1].newValue, "BAR"); 53 54 assert_equals(storageEventList[2].key, "a"); 55 assert_equals(storageEventList[2].oldValue, null); 56 assert_equals(storageEventList[2].newValue, "1"); 57 58 assert_equals(storageEventList[3].key, "b"); 59 assert_equals(storageEventList[3].oldValue, null); 60 assert_equals(storageEventList[3].newValue, "2"); 61 62 assert_equals(storageEventList[4].key, "b"); 63 assert_equals(storageEventList[4].oldValue, "2"); 64 assert_equals(storageEventList[4].newValue, "3"); 65 66 storage.removeItem('FOO'); 67 68 runAfterNStorageEvents(t.step_func(step4), 6); 69 } 70 71 function step4(msg) 72 { 73 if(msg != undefined) { 74 assert_unreached(msg); 75 } 76 assert_equals(storageEventList.length, 6); 77 assert_equals(storageEventList[5].key, "FOO"); 78 assert_equals(storageEventList[5].oldValue, "BAR"); 79 assert_equals(storageEventList[5].newValue, null); 80 81 storage.removeItem('FU'); 82 83 runAfterNStorageEvents(t.step_func(step5), 7); 84 } 85 86 function step5(msg) 87 { 88 if(msg != undefined) { 89 assert_unreached(msg); 90 } 91 assert_equals(storageEventList.length, 7); 92 assert_equals(storageEventList[6].key, "FU"); 93 assert_equals(storageEventList[6].oldValue, "BAR"); 94 assert_equals(storageEventList[6].newValue, null); 95 96 storage.clear(); 97 98 runAfterNStorageEvents(t.step_func(step6), 8); 99 } 100 101 function step6(msg) 102 { 103 if(msg != undefined) { 104 assert_unreached(msg); 105 } 106 assert_equals(storageEventList.length, 8); 107 assert_equals(storageEventList[7].key, null); 108 assert_equals(storageEventList[7].oldValue, null); 109 assert_equals(storageEventList[7].newValue, null); 110 111 t.done(); 112 } 113 114 }, storageString + " mutations fire StorageEvents that are caught by the event listener attached via setattribute."); 115 });