tor-browser

The Tor Browser
git clone https://git.dasho.dev/tor-browser.git
Log | Files | Refs | README | LICENSE

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>