Bug 1454202: Part 2a - Add promise variants for more AOM test "helper" functions. r?aswan draft
authorKris Maglione <maglione.k@gmail.com>
Sat, 14 Apr 2018 23:12:42 -0700
changeset 782298 bf4871951fd5c541bfb85eb093c6c7cb928819c0
parent 782297 0713a5f0a67d8207f6f73de5fad265c5359523d9
child 782299 e05fe21d83a151eb760011a0e946100aa06cf126
push id106511
push usermaglione.k@gmail.com
push dateSun, 15 Apr 2018 06:46:19 +0000
reviewersaswan
bugs1454202
milestone61.0a1
Bug 1454202: Part 2a - Add promise variants for more AOM test "helper" functions. r?aswan MozReview-Commit-ID: Je2KHXSFmji
toolkit/mozapps/extensions/test/browser/head.js
--- 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);
 }