--- a/toolkit/mozapps/extensions/test/browser/head.js
+++ b/toolkit/mozapps/extensions/test/browser/head.js
@@ -84,16 +84,20 @@ for (let pref of gRestorePrefs) {
pref.value = Services.prefs.getCharPref(pref.name);
}
// Turn logging on for all tests
Services.prefs.setBoolPref(PREF_LOGGING_ENABLED, true);
Services.prefs.setBoolPref(PREF_CUSTOM_XPINSTALL_CONFIRMATION_UI, false);
+function promiseFocus(window) {
+ return new Promise(resolve => waitForFocus(resolve, window));
+}
+
// Helper to register test failures and close windows if any are left open
function checkOpenWindows(aWindowID) {
let windows = Services.wm.getEnumerator(aWindowID);
let found = false;
while (windows.hasMoreElements()) {
let win = windows.getNext().QueryInterface(Ci.nsIDOMWindow);
if (!win.closed) {
found = true;
@@ -335,38 +339,46 @@ function get_addon_element(aManager, aId
if (node.value == aId)
return node;
node = node.nextSibling;
}
return null;
}
function wait_for_view_load(aManagerWindow, aCallback, aForceWait, aLongerTimeout) {
- requestLongerTimeout(aLongerTimeout ? aLongerTimeout : 2);
+ let p = new Promise(resolve => {
+ requestLongerTimeout(aLongerTimeout ? aLongerTimeout : 2);
- if (!aForceWait && !aManagerWindow.gViewController.isLoading) {
- log_exceptions(aCallback, aManagerWindow);
- return;
- }
+ if (!aForceWait && !aManagerWindow.gViewController.isLoading) {
+ log_exceptions(resolve, aManagerWindow);
+ return;
+ }
- aManagerWindow.document.addEventListener("ViewChanged", function() {
- log_exceptions(aCallback, aManagerWindow);
- }, {once: true});
+ aManagerWindow.document.addEventListener("ViewChanged", function() {
+ log_exceptions(resolve, aManagerWindow);
+ }, {once: true});
+ });
+
+ return log_callback(p, aCallback);
}
function wait_for_manager_load(aManagerWindow, aCallback) {
- if (!aManagerWindow.gIsInitializing) {
- log_exceptions(aCallback, aManagerWindow);
- return;
- }
+ let p = new Promise(resolve => {
+ if (!aManagerWindow.gIsInitializing) {
+ log_exceptions(resolve, aManagerWindow);
+ return;
+ }
- info("Waiting for initialization");
- aManagerWindow.document.addEventListener("Initialized", function() {
- log_exceptions(aCallback, aManagerWindow);
- }, {once: true});
+ info("Waiting for initialization");
+ aManagerWindow.document.addEventListener("Initialized", function() {
+ log_exceptions(resolve, aManagerWindow);
+ }, {once: true});
+ });
+
+ return log_callback(p, aCallback);
}
function open_manager(aView, aCallback, aLoadCallback, aLongerTimeout) {
let p = new Promise((resolve, reject) => {
function setup_manager(aManagerWindow) {
if (aLoadCallback)
log_exceptions(aLoadCallback, aManagerWindow);
@@ -438,32 +450,36 @@ function restart_manager(aManagerWindow,
return open_manager(aView, aCallback, aLoadCallback);
}
return close_manager(aManagerWindow)
.then(() => open_manager(aView, aCallback, aLoadCallback));
}
function wait_for_window_open(aCallback) {
- Services.wm.addListener({
- onOpenWindow(aWindow) {
- Services.wm.removeListener(this);
+ let p = new Promise(resolve => {
+ Services.wm.addListener({
+ onOpenWindow(aWindow) {
+ Services.wm.removeListener(this);
- let domwindow = aWindow.QueryInterface(Ci.nsIInterfaceRequestor)
- .getInterface(Ci.nsIDOMWindow);
- domwindow.addEventListener("load", function() {
- executeSoon(function() {
- aCallback(domwindow);
- });
- }, {once: true});
- },
+ let domwindow = aWindow.QueryInterface(Ci.nsIInterfaceRequestor)
+ .getInterface(Ci.nsIDOMWindow);
+ domwindow.addEventListener("load", function() {
+ executeSoon(function() {
+ resolve(domwindow);
+ });
+ }, {once: true});
+ },
- onCloseWindow(aWindow) {
- },
+ onCloseWindow(aWindow) {
+ },
+ });
});
+
+ return log_callback(p, aCallback);
}
function get_string(aName, ...aArgs) {
var bundle = Services.strings.createBundle("chrome://mozapps/locale/extensions/extensions.properties");
if (aArgs.length == 0)
return bundle.GetStringFromName(aName);
return bundle.formatStringFromName(aName, aArgs, aArgs.length);
}