browser/base/content/test/general/browser_aboutHealthReport.js

changeset 0
6474c204b198
equal deleted inserted replaced
-1:000000000000 0:a9979125b684
1 /* Any copyright is dedicated to the Public Domain.
2 * http://creativecommons.org/publicdomain/zero/1.0/
3 */
4
5 XPCOMUtils.defineLazyModuleGetter(this, "Promise",
6 "resource://gre/modules/Promise.jsm");
7 XPCOMUtils.defineLazyModuleGetter(this, "Task",
8 "resource://gre/modules/Task.jsm");
9
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 });
22
23 let gTests = [
24
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();
35
36 let policy = Cc["@mozilla.org/datareporting/service;1"]
37 .getService(Ci.nsISupports)
38 .wrappedJSObject
39 .policy;
40
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 }
54
55 }, false, true);
56
57 } catch(e) {
58 ok(false, "Failed to get all commands");
59 deferred.reject();
60 }
61 return deferred.promise;
62 }
63 },
64
65
66 ]; // gTests
67
68 function test()
69 {
70 waitForExplicitFinish();
71
72 // xxxmpc leaving this here until we resolve bug 854038 and bug 854060
73 requestLongerTimeout(10);
74
75 Task.spawn(function () {
76 for (let test of gTests) {
77 info(test.desc);
78 test.setup();
79
80 yield promiseNewTabLoadEvent("about:healthreport");
81
82 yield test.run();
83
84 gBrowser.removeCurrentTab();
85 }
86
87 finish();
88 });
89 }
90
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 }
105

mercurial