event_body_attribute.js (4021B)
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_body_handler.html"; 17 } 18 19 function step1(msg) 20 { 21 storageEventList = new Array(); 22 storage.setItem('FOO', 'BAR'); 23 24 runAfterNStorageEvents(t.step_func(step2), 1); 25 } 26 27 function step2(msg) 28 { 29 if (msg != undefined) { 30 assert_unreached(msg); 31 } 32 assert_equals(storageEventList.length, 1); 33 assert_equals(storageEventList[0].key, "FOO"); 34 assert_equals(storageEventList[0].oldValue, null); 35 assert_equals(storageEventList[0].newValue, "BAR"); 36 37 storage.setItem('FU', 'BAR'); 38 storage.setItem('a', '1'); 39 storage.setItem('b', '2'); 40 storage.setItem('b', '3'); 41 42 runAfterNStorageEvents(t.step_func(step3), 5); 43 } 44 45 function step3(msg) 46 { 47 if (msg != undefined) { 48 assert_unreached(msg); 49 } 50 assert_equals(storageEventList.length, 5); 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].key, "a"); 56 assert_equals(storageEventList[2].oldValue, null); 57 assert_equals(storageEventList[2].newValue, "1"); 58 59 assert_equals(storageEventList[3].key, "b"); 60 assert_equals(storageEventList[3].oldValue, null); 61 assert_equals(storageEventList[3].newValue, "2"); 62 63 assert_equals(storageEventList[4].key, "b"); 64 assert_equals(storageEventList[4].oldValue, "2"); 65 assert_equals(storageEventList[4].newValue, "3"); 66 67 storage.removeItem('FOO'); 68 69 runAfterNStorageEvents(t.step_func(step4), 6); 70 } 71 72 function step4(msg) 73 { 74 if(msg != undefined) { 75 assert_unreached(msg); 76 } 77 assert_equals(storageEventList.length, 6); 78 assert_equals(storageEventList[5].key, "FOO"); 79 assert_equals(storageEventList[5].oldValue, "BAR"); 80 assert_equals(storageEventList[5].newValue, null); 81 82 storage.removeItem('FU'); 83 84 runAfterNStorageEvents(t.step_func(step5), 7); 85 } 86 87 function step5(msg) 88 { 89 if(msg != undefined) { 90 assert_unreached(msg); 91 } 92 assert_equals(storageEventList.length, 7); 93 assert_equals(storageEventList[6].key, "FU"); 94 assert_equals(storageEventList[6].oldValue, "BAR"); 95 assert_equals(storageEventList[6].newValue, null); 96 97 storage.clear(); 98 99 runAfterNStorageEvents(t.step_func(step6), 8); 100 } 101 102 function step6(msg) 103 { 104 if(msg != undefined) { 105 assert_unreached(msg); 106 } 107 assert_equals(storageEventList.length, 8); 108 assert_equals(storageEventList[7].key, null); 109 assert_equals(storageEventList[7].oldValue, null); 110 assert_equals(storageEventList[7].newValue, null); 111 112 t.done(); 113 } 114 115 }, storageString + " mutations fire StorageEvents that are caught by the event listener specified as an attribute on the body."); 116 });