browser/components/search/test/head.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/ */
     4 XPCOMUtils.defineLazyModuleGetter(this, "Promise",
     5   "resource://gre/modules/Promise.jsm");
     7 function whenNewWindowLoaded(aOptions, aCallback) {
     8   let win = OpenBrowserWindow(aOptions);
     9   let gotLoad = false;
    10   let gotActivate = (Cc["@mozilla.org/focus-manager;1"].getService(Ci.nsIFocusManager).activeWindow == win);
    12   function maybeRunCallback() {
    13     if (gotLoad && gotActivate) {
    14       win.BrowserChromeTest.runWhenReady(function() {
    15         executeSoon(function() { aCallback(win); });
    16       });
    17     }
    18   }
    20   if (!gotActivate) {
    21     win.addEventListener("activate", function onActivate() {
    22       info("Got activate.");
    23       win.removeEventListener("activate", onActivate, false);
    24       gotActivate = true;
    25       maybeRunCallback();
    26     }, false);
    27   } else {
    28     info("Was activated.");
    29   }
    31   win.addEventListener("load", function onLoad() {
    32     info("Got load");
    33     win.removeEventListener("load", onLoad, false);
    34     gotLoad = true;
    35     maybeRunCallback();
    36   }, false);
    37   return win;
    38 }
    40 /**
    41  * Recursively compare two objects and check that every property of expectedObj has the same value
    42  * on actualObj.
    43  */
    44 function isSubObjectOf(expectedObj, actualObj, name) {
    45   for (let prop in expectedObj) {
    46     if (typeof expectedObj[prop] == 'function')
    47       continue;
    48     if (expectedObj[prop] instanceof Object) {
    49       is(actualObj[prop].length, expectedObj[prop].length, name + "[" + prop + "]");
    50       isSubObjectOf(expectedObj[prop], actualObj[prop], name + "[" + prop + "]");
    51     } else {
    52       is(actualObj[prop], expectedObj[prop], name + "[" + prop + "]");
    53     }
    54   }
    55 }
    57 function getLocale() {
    58   const localePref = "general.useragent.locale";
    59   return getLocalizedPref(localePref, Services.prefs.getCharPref(localePref));
    60 }
    62 /**
    63  * Wrapper for nsIPrefBranch::getComplexValue.
    64  * @param aPrefName
    65  *        The name of the pref to get.
    66  * @returns aDefault if the requested pref doesn't exist.
    67  */
    68 function getLocalizedPref(aPrefName, aDefault) {
    69   try {
    70     return Services.prefs.getComplexValue(aPrefName, Ci.nsIPrefLocalizedString).data;
    71   } catch (ex) {
    72     return aDefault;
    73   }
    75   return aDefault;
    76 }
    78 function waitForPopupShown(aPopupId, aCallback) {
    79   let popup = document.getElementById(aPopupId);
    80   info("waitForPopupShown: got popup: " + popup.id);
    81   function onPopupShown() {
    82     info("onPopupShown");
    83     removePopupShownListener();
    84     SimpleTest.executeSoon(aCallback);
    85   }
    86   function removePopupShownListener() {
    87     popup.removeEventListener("popupshown", onPopupShown);
    88   }
    89   popup.addEventListener("popupshown", onPopupShown);
    90   registerCleanupFunction(removePopupShownListener);
    91 }
    93 function* promiseEvent(aTarget, aEventName, aPreventDefault) {
    94   let deferred = Promise.defer();
    95   aTarget.addEventListener(aEventName, function onEvent(aEvent) {
    96     aTarget.removeEventListener(aEventName, onEvent, true);
    97     if (aPreventDefault) {
    98       aEvent.preventDefault();
    99     }
   100     deferred.resolve();
   101   }, true);
   102   return deferred.promise;
   103 }
   105 function waitForBrowserContextMenu(aCallback) {
   106   waitForPopupShown(gBrowser.selectedBrowser.contextMenu, aCallback);
   107 }
   109 function doOnloadOnce(aCallback) {
   110   function doOnloadOnceListener(aEvent) {
   111     info("doOnloadOnce: " + aEvent.originalTarget.location);
   112     removeDoOnloadOnceListener();
   113     SimpleTest.executeSoon(function doOnloadOnceCallback() {
   114       aCallback(aEvent);
   115     });
   116   }
   117   function removeDoOnloadOnceListener() {
   118     gBrowser.removeEventListener("load", doOnloadOnceListener, true);
   119   }
   120   gBrowser.addEventListener("load", doOnloadOnceListener, true);
   121   registerCleanupFunction(removeDoOnloadOnceListener);
   122 }
   124 function* promiseOnLoad() {
   125   let deferred = Promise.defer();
   127   gBrowser.addEventListener("load", function onLoadListener(aEvent) {
   128     info("onLoadListener: " + aEvent.originalTarget.location);
   129     gBrowser.removeEventListener("load", onLoadListener, true);
   130     deferred.resolve(aEvent);
   131   }, true);
   133   return deferred.promise;
   134 }

mercurial