1.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 1.2 +++ b/dom/tests/mochitest/storageevent/test_storageNotifications.html Wed Dec 31 06:09:35 2014 +0100 1.3 @@ -0,0 +1,127 @@ 1.4 +<html xmlns="http://www.w3.org/1999/xhtml"> 1.5 +<head> 1.6 +<title>sessionStorage basic test</title> 1.7 + 1.8 +<script type="text/javascript" src="/tests/SimpleTest/SimpleTest.js"></script> 1.9 +<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css" /> 1.10 + 1.11 +<script type="application/javascript;version=1.7"> 1.12 + 1.13 +var expectedTypes = [ 1.14 + "localStorage", 1.15 + "localStorage", 1.16 + "sessionStorage", 1.17 + "localStorage", 1.18 + "sessionStorage", 1.19 + "sessionStorage", 1.20 + "localStorage", 1.21 + "sessionStorage", 1.22 + "localStorage", 1.23 + "sessionStorage", 1.24 + "localStorage", 1.25 + "sessionStorage", 1.26 + "sessionStorage", 1.27 + "localStorage", 1.28 + "sessionStorage", 1.29 + "localStorage", 1.30 +]; 1.31 + 1.32 +var tests = Tests(); 1.33 +function setup() { 1.34 + sessionStorage.clear(); 1.35 + SimpleTest.executeSoon(function() { 1.36 + tests.next(); 1.37 + }); 1.38 +} 1.39 + 1.40 +function Tests() 1.41 +{ 1.42 + // Initially check the both storages are empty 1.43 + is(sessionStorage.length, 0, "Session storage is empty [1]"); 1.44 + is(localStorage.length, 0, "Local storage is empty [1]"); 1.45 + 1.46 + var onStorageChanged = { 1.47 + observe: function(subject, topic, type) { 1.48 + if (topic == "dom-storage2-changed") { 1.49 + ok(expectedTypes.length > 0, "Not more then expected events encountered"); 1.50 + is(type, expectedTypes.shift(), "Expected type of the storage notificaiton"); 1.51 + tests.next(); 1.52 + } 1.53 + } 1.54 + } 1.55 + 1.56 + // Listen for dom-storage2-changed notification 1.57 + SpecialPowers.Services.obs.addObserver(onStorageChanged, 1.58 + "dom-storage2-changed", false); 1.59 + 1.60 + // add an empty-value key 1.61 + localStorage.setItem("empty", ""); 1.62 + yield undefined; 1.63 + 1.64 + localStorage.setItem("empty", "value-1"); 1.65 + yield undefined; 1.66 + 1.67 + sessionStorage.setItem("empty", ""); 1.68 + yield undefined; 1.69 + 1.70 + localStorage.removeItem("empty"); 1.71 + yield undefined; 1.72 + 1.73 + sessionStorage.setItem("empty", "value-1"); 1.74 + yield undefined; 1.75 + 1.76 + sessionStorage.removeItem("empty"); 1.77 + yield undefined; 1.78 + 1.79 + localStorage.setItem("key1", "value-1"); 1.80 + yield undefined; 1.81 + 1.82 + sessionStorage.setItem("key2", "value-2"); 1.83 + yield undefined; 1.84 + 1.85 + localStorage.setItem("key1", "value-1-2"); 1.86 + yield undefined; 1.87 + 1.88 + sessionStorage.setItem("key2", "value-2-2"); 1.89 + yield undefined; 1.90 + 1.91 + localStorage.setItem("key3", "value-3"); 1.92 + yield undefined; 1.93 + 1.94 + sessionStorage.setItem("key4", "value-4"); 1.95 + yield undefined; 1.96 + 1.97 + sessionStorage.removeItem("key4"); 1.98 + yield undefined; 1.99 + 1.100 + localStorage.setItem("key4", "value-4"); 1.101 + yield undefined; 1.102 + 1.103 + sessionStorage.clear(); 1.104 + yield undefined; 1.105 + 1.106 + localStorage.clear(); 1.107 + yield undefined; 1.108 + 1.109 + SimpleTest.executeSoon(function () { 1.110 + SpecialPowers.Services.obs.removeObserver(onStorageChanged, 1.111 + "dom-storage2-changed", false); 1.112 + is(expectedTypes.length, 0, "received the correct number of events"); 1.113 + 1.114 + sessionStorage.clear(); 1.115 + localStorage.clear(); 1.116 + tests = null; 1.117 + SimpleTest.finish(); 1.118 + }); 1.119 +} 1.120 + 1.121 +SimpleTest.waitForExplicitFinish(); 1.122 + 1.123 +</script> 1.124 + 1.125 +</head> 1.126 + 1.127 +<body onload="setup();"> 1.128 + 1.129 +</body> 1.130 +</html>