dom/tests/mochitest/storageevent/frameSessionStorageMasterNotEqual.html

Tue, 06 Jan 2015 21:39:09 +0100

author
Michael Schloh von Bennewitz <michael@schloh.com>
date
Tue, 06 Jan 2015 21:39:09 +0100
branch
TOR_BUG_9701
changeset 8
97036ab72558
permissions
-rw-r--r--

Conditionally force memory storage according to privacy.thirdparty.isolate;
This solves Tor bug #9701, complying with disk avoidance documented in
https://www.torproject.org/projects/torbrowser/design/#disk-avoidance.

     1 <html xmlns="http://www.w3.org/1999/xhtml">
     2 <head>
     3 <title>master frame for event storage propagation</title>
     5 <script type="text/javascript" src="interOriginFrame.js"></script>
     6 <script type="text/javascript">
     8 var currentStep = 1;
     9 var gotEvent = false;
    11 window.addEventListener("storage", function(event)
    12 {
    13   gotEvent = true;
    14 }, false);
    16 function doStep()
    17 {
    18   switch (currentStep)
    19   {
    20     case 1:
    21       // Must not fire (storage must be clear!)
    22       sessionStorage.clear();
    23       // Must fire X:null->'1'
    24       sessionStorage.setItem("X", "1");
    25       // Must fire X:'1'->'2'
    26       sessionStorage.setItem("X", "2");
    27       // Must not fire
    28       sessionStorage.setItem("X", "2");
    29       // Must fire X:'2'->null
    30       sessionStorage.removeItem("X");
    31       // Must not fire
    32       sessionStorage.removeItem("X");
    33       // Must not fire
    34       sessionStorage.removeItem("Y");
    35       // Must fire X:null->'2' (we need something in the storage)
    36       sessionStorage.setItem("X", "2");
    37       // Must fire null:null->null (one item has been erased)
    38       sessionStorage.clear();
    39       // Must not fire
    40       sessionStorage.clear();
    41       break;
    43     // Wait some time to let the async event be propagated
    44     case 11:
    45       is(gotEvent, false, "Expected no events");
    46       return finishTest();
    47   }
    49   // Increase by two to distinguish each test step order
    50   // in both master doStep and slave doStep functions.
    51   ++currentStep;
    52   ++currentStep;
    54   return true;
    55 }
    57 </script>
    59 </head>
    61 <body onload="postMsg('frame loaded');">
    62   <iframe src="http://example.com:80/tests/dom/tests/mochitest/storageevent/frameSessionStorageSlaveNotEqual.html"
    63           name="slaveFrame">
    64   </iframe>
    65 </body>
    66 </html>

mercurial