Wed, 31 Dec 2014 06:09:35 +0100
Cloned upstream origin tor-browser at tor-browser-31.3.0esr-4.5-1-build1
revision ID fc1c9ff7c1b2defdbc039f12214767608f46423f for hacking purpose.
1 /* Any copyright is dedicated to the Public Domain.
2 * http://creativecommons.org/publicdomain/zero/1.0/
3 */
5 XPCOMUtils.defineLazyModuleGetter(this, "Promise",
6 "resource://gre/modules/Promise.jsm");
7 XPCOMUtils.defineLazyModuleGetter(this, "Task",
8 "resource://gre/modules/Task.jsm");
10 registerCleanupFunction(function() {
11 // Ensure we don't pollute prefs for next tests.
12 try {
13 Services.prefs.clearUserPref("datareporting.healthreport.about.reportUrl");
14 let policy = Cc["@mozilla.org/datareporting/service;1"]
15 .getService(Ci.nsISupports)
16 .wrappedJSObject
17 .policy;
18 policy.recordHealthReportUploadEnabled(true,
19 "Resetting after tests.");
20 } catch (ex) {}
21 });
23 let gTests = [
25 {
26 desc: "Test the remote commands",
27 setup: function ()
28 {
29 Services.prefs.setCharPref("datareporting.healthreport.about.reportUrl",
30 "https://example.com/browser/browser/base/content/test/general/healthreport_testRemoteCommands.html");
31 },
32 run: function ()
33 {
34 let deferred = Promise.defer();
36 let policy = Cc["@mozilla.org/datareporting/service;1"]
37 .getService(Ci.nsISupports)
38 .wrappedJSObject
39 .policy;
41 let results = 0;
42 try {
43 let win = gBrowser.contentWindow;
44 win.addEventListener("message", function testLoad(e) {
45 if (e.data.type == "testResult") {
46 ok(e.data.pass, e.data.info);
47 results++;
48 }
49 else if (e.data.type == "testsComplete") {
50 is(results, e.data.count, "Checking number of results received matches the number of tests that should have run");
51 win.removeEventListener("message", testLoad, false, true);
52 deferred.resolve();
53 }
55 }, false, true);
57 } catch(e) {
58 ok(false, "Failed to get all commands");
59 deferred.reject();
60 }
61 return deferred.promise;
62 }
63 },
66 ]; // gTests
68 function test()
69 {
70 waitForExplicitFinish();
72 // xxxmpc leaving this here until we resolve bug 854038 and bug 854060
73 requestLongerTimeout(10);
75 Task.spawn(function () {
76 for (let test of gTests) {
77 info(test.desc);
78 test.setup();
80 yield promiseNewTabLoadEvent("about:healthreport");
82 yield test.run();
84 gBrowser.removeCurrentTab();
85 }
87 finish();
88 });
89 }
91 function promiseNewTabLoadEvent(aUrl, aEventType="load")
92 {
93 let deferred = Promise.defer();
94 let tab = gBrowser.selectedTab = gBrowser.addTab(aUrl);
95 tab.linkedBrowser.addEventListener(aEventType, function load(event) {
96 tab.linkedBrowser.removeEventListener(aEventType, load, true);
97 let iframe = tab.linkedBrowser.contentDocument.getElementById("remote-report");
98 iframe.addEventListener("load", function frameLoad(e) {
99 iframe.removeEventListener("load", frameLoad, false);
100 deferred.resolve();
101 }, false);
102 }, true);
103 return deferred.promise;
104 }