1.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 1.2 +++ b/browser/base/content/test/general/browser_aboutHealthReport.js Wed Dec 31 06:09:35 2014 +0100 1.3 @@ -0,0 +1,105 @@ 1.4 +/* Any copyright is dedicated to the Public Domain. 1.5 + * http://creativecommons.org/publicdomain/zero/1.0/ 1.6 + */ 1.7 + 1.8 +XPCOMUtils.defineLazyModuleGetter(this, "Promise", 1.9 + "resource://gre/modules/Promise.jsm"); 1.10 +XPCOMUtils.defineLazyModuleGetter(this, "Task", 1.11 + "resource://gre/modules/Task.jsm"); 1.12 + 1.13 +registerCleanupFunction(function() { 1.14 + // Ensure we don't pollute prefs for next tests. 1.15 + try { 1.16 + Services.prefs.clearUserPref("datareporting.healthreport.about.reportUrl"); 1.17 + let policy = Cc["@mozilla.org/datareporting/service;1"] 1.18 + .getService(Ci.nsISupports) 1.19 + .wrappedJSObject 1.20 + .policy; 1.21 + policy.recordHealthReportUploadEnabled(true, 1.22 + "Resetting after tests."); 1.23 + } catch (ex) {} 1.24 +}); 1.25 + 1.26 +let gTests = [ 1.27 + 1.28 +{ 1.29 + desc: "Test the remote commands", 1.30 + setup: function () 1.31 + { 1.32 + Services.prefs.setCharPref("datareporting.healthreport.about.reportUrl", 1.33 + "https://example.com/browser/browser/base/content/test/general/healthreport_testRemoteCommands.html"); 1.34 + }, 1.35 + run: function () 1.36 + { 1.37 + let deferred = Promise.defer(); 1.38 + 1.39 + let policy = Cc["@mozilla.org/datareporting/service;1"] 1.40 + .getService(Ci.nsISupports) 1.41 + .wrappedJSObject 1.42 + .policy; 1.43 + 1.44 + let results = 0; 1.45 + try { 1.46 + let win = gBrowser.contentWindow; 1.47 + win.addEventListener("message", function testLoad(e) { 1.48 + if (e.data.type == "testResult") { 1.49 + ok(e.data.pass, e.data.info); 1.50 + results++; 1.51 + } 1.52 + else if (e.data.type == "testsComplete") { 1.53 + is(results, e.data.count, "Checking number of results received matches the number of tests that should have run"); 1.54 + win.removeEventListener("message", testLoad, false, true); 1.55 + deferred.resolve(); 1.56 + } 1.57 + 1.58 + }, false, true); 1.59 + 1.60 + } catch(e) { 1.61 + ok(false, "Failed to get all commands"); 1.62 + deferred.reject(); 1.63 + } 1.64 + return deferred.promise; 1.65 + } 1.66 +}, 1.67 + 1.68 + 1.69 +]; // gTests 1.70 + 1.71 +function test() 1.72 +{ 1.73 + waitForExplicitFinish(); 1.74 + 1.75 + // xxxmpc leaving this here until we resolve bug 854038 and bug 854060 1.76 + requestLongerTimeout(10); 1.77 + 1.78 + Task.spawn(function () { 1.79 + for (let test of gTests) { 1.80 + info(test.desc); 1.81 + test.setup(); 1.82 + 1.83 + yield promiseNewTabLoadEvent("about:healthreport"); 1.84 + 1.85 + yield test.run(); 1.86 + 1.87 + gBrowser.removeCurrentTab(); 1.88 + } 1.89 + 1.90 + finish(); 1.91 + }); 1.92 +} 1.93 + 1.94 +function promiseNewTabLoadEvent(aUrl, aEventType="load") 1.95 +{ 1.96 + let deferred = Promise.defer(); 1.97 + let tab = gBrowser.selectedTab = gBrowser.addTab(aUrl); 1.98 + tab.linkedBrowser.addEventListener(aEventType, function load(event) { 1.99 + tab.linkedBrowser.removeEventListener(aEventType, load, true); 1.100 + let iframe = tab.linkedBrowser.contentDocument.getElementById("remote-report"); 1.101 + iframe.addEventListener("load", function frameLoad(e) { 1.102 + iframe.removeEventListener("load", frameLoad, false); 1.103 + deferred.resolve(); 1.104 + }, false); 1.105 + }, true); 1.106 + return deferred.promise; 1.107 +} 1.108 +