event_basic.js (4916B)
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(loadiframe)); 8 assert_equals(storage.length, 0, "storage.length"); 9 10 function loadiframe(msg) 11 { 12 iframe.onload = t.step_func(step1); 13 iframe.src = "resources/event_basic.html"; 14 } 15 16 function step1(msg) 17 { 18 storage.setItem('FOO', 'BAR'); 19 20 runAfterNStorageEvents(t.step_func(step2), 1); 21 } 22 23 function step2(msg) 24 { 25 if(msg != undefined) { 26 assert_unreached(msg); 27 } 28 assert_equals(storageEventList.length, 1); 29 assert_equals(storageEventList[0].storageAreaString, storageString, 30 "Storage event came from wrong storage type."); 31 assert_equals(storageEventList[0].key, "FOO"); 32 assert_equals(storageEventList[0].oldValue, null); 33 assert_equals(storageEventList[0].newValue, "BAR"); 34 35 storage.setItem('FU', 'BAR'); 36 storage.setItem('a', '1'); 37 storage.setItem('b', '2'); 38 storage.setItem('b', '3'); 39 40 runAfterNStorageEvents(t.step_func(step3), 5); 41 } 42 43 function step3(msg) 44 { 45 if(msg != undefined) { 46 assert_unreached(msg); 47 } 48 assert_equals(storageEventList.length, 5); 49 assert_equals(storageEventList[1].storageAreaString, storageString, 50 "Storage event came from wrong storage type."); 51 assert_equals(storageEventList[1].key, "FU"); 52 assert_equals(storageEventList[1].oldValue, null); 53 assert_equals(storageEventList[1].newValue, "BAR"); 54 55 assert_equals(storageEventList[2].storageAreaString, storageString, 56 "Storage event came from wrong storage type."); 57 assert_equals(storageEventList[2].key, "a"); 58 assert_equals(storageEventList[2].oldValue, null); 59 assert_equals(storageEventList[2].newValue, "1"); 60 61 assert_equals(storageEventList[3].storageAreaString, storageString, 62 "Storage event came from wrong storage type."); 63 assert_equals(storageEventList[3].key, "b"); 64 assert_equals(storageEventList[3].oldValue, null); 65 assert_equals(storageEventList[3].newValue, "2"); 66 67 assert_equals(storageEventList[4].storageAreaString, storageString, 68 "Storage event came from wrong storage type."); 69 assert_equals(storageEventList[4].key, "b"); 70 assert_equals(storageEventList[4].oldValue, "2"); 71 assert_equals(storageEventList[4].newValue, "3"); 72 73 storage.removeItem('FOO'); 74 75 runAfterNStorageEvents(t.step_func(step4), 6); 76 } 77 78 function step4(msg) 79 { 80 if(msg != undefined) { 81 assert_unreached(msg); 82 } 83 assert_equals(storageEventList.length, 6); 84 assert_equals(storageEventList[5].storageAreaString, storageString, 85 "Storage event came from wrong storage type."); 86 assert_equals(storageEventList[5].key, "FOO"); 87 assert_equals(storageEventList[5].oldValue, "BAR"); 88 assert_equals(storageEventList[5].newValue, null); 89 90 storage.removeItem('FU'); 91 92 runAfterNStorageEvents(t.step_func(step5), 7); 93 } 94 95 function step5(msg) 96 { 97 if(msg != undefined) { 98 assert_unreached(msg); 99 } 100 assert_equals(storageEventList.length, 7); 101 assert_equals(storageEventList[6].storageAreaString, storageString, 102 "Storage event came from wrong storage type."); 103 assert_equals(storageEventList[6].key, "FU"); 104 assert_equals(storageEventList[6].oldValue, "BAR"); 105 assert_equals(storageEventList[6].newValue, null); 106 107 storage.clear(); 108 109 runAfterNStorageEvents(t.step_func(step6), 8); 110 } 111 112 function step6(msg) 113 { 114 if(msg != undefined) { 115 assert_unreached(msg); 116 } 117 assert_equals(storageEventList.length, 8); 118 assert_equals(storageEventList[7].storageAreaString, storageString, 119 "Storage event came from wrong storage type."); 120 assert_equals(storageEventList[7].key, null); 121 assert_equals(storageEventList[7].oldValue, null); 122 assert_equals(storageEventList[7].newValue, null); 123 124 t.done(); 125 } 126 127 }, storageString + " mutations fire StorageEvents that are caught by the event listener set via window.onstorage."); 128 });