Tue, 06 Jan 2015 21:39:09 +0100
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 }