test_storageNotifications.html (3140B)
1 <html xmlns="http://www.w3.org/1999/xhtml"> 2 <head> 3 <title>sessionStorage basic test</title> 4 5 <script src="/tests/SimpleTest/SimpleTest.js"></script> 6 <link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css" /> 7 8 <script type="application/javascript"> 9 10 var expectedTypes = [ 11 "localStorage", 12 "localStorage", 13 "sessionStorage", 14 "localStorage", 15 "sessionStorage", 16 "sessionStorage", 17 "localStorage", 18 "sessionStorage", 19 "localStorage", 20 "sessionStorage", 21 "localStorage", 22 "sessionStorage", 23 "sessionStorage", 24 "localStorage", 25 "sessionStorage", 26 "localStorage", 27 ]; 28 29 var tests = Tests(); 30 function setup() { 31 sessionStorage.clear(); 32 SimpleTest.executeSoon(function() { 33 tests.next(); 34 }); 35 } 36 37 function* Tests() 38 { 39 // Initially check the both storages are empty 40 is(sessionStorage.length, 0, "Session storage is empty [1]"); 41 is(localStorage.length, 0, "Local storage is empty [1]"); 42 43 function onSessionStorageChanged(e) { 44 ok(expectedTypes.length, "Not more then expected events encountered"); 45 is("sessionStorage", expectedTypes.shift(), "Expected session type of the storage notification"); 46 tests.next(); 47 } 48 49 function onLocalStorageChanged(e) { 50 ok(expectedTypes.length, "Not more then expected events encountered"); 51 is("localStorage", expectedTypes.shift(), "Expected session type of the storage notification"); 52 tests.next(); 53 } 54 55 // Listen for storage notifications 56 SpecialPowers.addChromeEventListener("MozSessionStorageChanged", onSessionStorageChanged, true); 57 SpecialPowers.addChromeEventListener("MozLocalStorageChanged", onLocalStorageChanged, true); 58 59 // add an empty-value key 60 localStorage.setItem("empty", ""); 61 yield undefined; 62 63 localStorage.setItem("empty", "value-1"); 64 yield undefined; 65 66 sessionStorage.setItem("empty", ""); 67 yield undefined; 68 69 localStorage.removeItem("empty"); 70 yield undefined; 71 72 sessionStorage.setItem("empty", "value-1"); 73 yield undefined; 74 75 sessionStorage.removeItem("empty"); 76 yield undefined; 77 78 localStorage.setItem("key1", "value-1"); 79 yield undefined; 80 81 sessionStorage.setItem("key2", "value-2"); 82 yield undefined; 83 84 localStorage.setItem("key1", "value-1-2"); 85 yield undefined; 86 87 sessionStorage.setItem("key2", "value-2-2"); 88 yield undefined; 89 90 localStorage.setItem("key3", "value-3"); 91 yield undefined; 92 93 sessionStorage.setItem("key4", "value-4"); 94 yield undefined; 95 96 sessionStorage.removeItem("key4"); 97 yield undefined; 98 99 localStorage.setItem("key4", "value-4"); 100 yield undefined; 101 102 sessionStorage.clear(); 103 yield undefined; 104 105 localStorage.clear(); 106 yield undefined; 107 108 SimpleTest.executeSoon(function () { 109 SpecialPowers.removeChromeEventListener("MozSessionStorageChanged", onSessionStorageChanged, true); 110 SpecialPowers.removeChromeEventListener("MozLocalStorageChanged", onLocalStorageChanged, true); 111 112 is(expectedTypes.length, 0, "received the correct number of events"); 113 114 sessionStorage.clear(); 115 localStorage.clear(); 116 tests = null; 117 SimpleTest.finish(); 118 }); 119 } 120 121 SimpleTest.waitForExplicitFinish(); 122 123 </script> 124 125 </head> 126 127 <body onload="setup();"> 128 129 </body> 130 </html>