dom/tests/mochitest/storageevent/test_storageNotifications.html

Thu, 22 Jan 2015 13:21:57 +0100

author
Michael Schloh von Bennewitz <michael@schloh.com>
date
Thu, 22 Jan 2015 13:21:57 +0100
branch
TOR_BUG_9701
changeset 15
b8a032363ba2
permissions
-rw-r--r--

Incorporate requested changes from Mozilla in review:
https://bugzilla.mozilla.org/show_bug.cgi?id=1123480#c6

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

mercurial