$OpenBSD$ index 4b9c0ef..ef7a9b6 100644 --- browser/components/search/test/head.js.orig Fri Feb 20 15:40:36 2015 +++ browser/components/search/test/head.js Fri Feb 20 15:40:36 2015 @@ -1,6 +1,9 @@ /* Any copyright is dedicated to the Public Domain. * http://creativecommons.org/publicdomain/zero/1.0/ */ +XPCOMUtils.defineLazyModuleGetter(this, "Promise", + "resource://gre/modules/Promise.jsm"); + function whenNewWindowLoaded(aOptions, aCallback) { let win = OpenBrowserWindow(aOptions); let gotLoad = false; @@ -87,6 +90,18 @@ function waitForPopupShown(aPopupId, aCallback) { registerCleanupFunction(removePopupShownListener); } +function* promiseEvent(aTarget, aEventName, aPreventDefault) { + let deferred = Promise.defer(); + aTarget.addEventListener(aEventName, function onEvent(aEvent) { + aTarget.removeEventListener(aEventName, onEvent, true); + if (aPreventDefault) { + aEvent.preventDefault(); + } + deferred.resolve(); + }, true); + return deferred.promise; +} + function waitForBrowserContextMenu(aCallback) { waitForPopupShown(gBrowser.selectedBrowser.contextMenu, aCallback); } @@ -105,3 +120,16 @@ function doOnloadOnce(aCallback) { gBrowser.addEventListener("load", doOnloadOnceListener, true); registerCleanupFunction(removeDoOnloadOnceListener); } + +function* promiseOnLoad() { + let deferred = Promise.defer(); + + gBrowser.addEventListener("load", function onLoadListener(aEvent) { + info("onLoadListener: " + aEvent.originalTarget.location); + gBrowser.removeEventListener("load", onLoadListener, true); + deferred.resolve(aEvent); + }, true); + + return deferred.promise; +} +