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

Wed, 31 Dec 2014 06:09:35 +0100

author
Michael Schloh von Bennewitz <michael@schloh.com>
date
Wed, 31 Dec 2014 06:09:35 +0100
changeset 0
6474c204b198
permissions
-rw-r--r--

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 }

mercurial