dom/tests/mochitest/storageevent/interOriginTest2.js

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 var frameLoadsPending = 2;
     3 var callMasterFrame = true;
     4 var testDone = false;
     6 var masterFrameOrigin = "";
     7 var slaveFrameOrigin = "";
     9 var failureRegExp = new RegExp("^FAILURE");
    10 var todoRegExp = new RegExp("^TODO");
    12 const framePath = "/tests/dom/tests/mochitest/storageevent/";
    14 window.addEventListener("message", onMessageReceived, false);
    16 function onMessageReceived(event)
    17 {
    19   switch (event.data)
    20   {
    21     // Indication of the frame onload event
    22     case "frame loaded":
    23       if (--frameLoadsPending)
    24         break;
    26       // Just fall through...
    28     // Indication of successfully finished step of a test
    29     case "perf":
    30       if (callMasterFrame)
    31         masterFrame.postMessage("step", "*");
    32       else if (slaveFrame)
    33         slaveFrame.postMessage("step", "*");
    34       else if (SpecialPowers.wrap(masterFrame).slaveFrame)
    35         SpecialPowers.wrap(masterFrame).slaveFrame.postMessage("step", "*");
    36       callMasterFrame = !callMasterFrame;
    37       break;
    39     // Indication of all test parts finish (from any of the frames)
    40     case "done":
    41       if (testDone)
    42         break;
    44       testDone = true;
    45       SimpleTest.finish();
    46       break;
    48     // Any other message indicates error, succes or todo message of a test
    49     default:
    50       if (typeof event.data == "undefined")
    51         break; // XXXkhuey this receives undefined values
    52                // (which used to become empty strings) on occasion ...
    53       if (event.data.match(todoRegExp))
    54         SimpleTest.todo(false, event.data);
    55       else
    56         SimpleTest.ok(!event.data.match(failureRegExp), event.data);
    57       break;
    58   }
    59 }

mercurial