|
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 |