Bug 1330822 - Remove CPOWs from browser_popupUI.js. r=Felipe draft
authorBlake Kaplan <mrbkap@gmail.com>
Tue, 15 Nov 2016 15:12:28 -0800
changeset 463355 eeea46735e323d8af1df8c14dbdb4ab92a969cec
parent 463354 7009711e1c1f89658a473859d875a0b56257913d
child 463356 95cdf3c43d8905c6772db038d551078e95699d24
push id42038
push userbmo:mrbkap@mozilla.com
push dateWed, 18 Jan 2017 23:45:52 +0000
reviewersFelipe
bugs1330822
milestone53.0a1
Bug 1330822 - Remove CPOWs from browser_popupUI.js. r=Felipe Finding the popup window after the fact was going to be messy (maintaining window identity across the message manager is a tricky task). Instead, it's much easier to wait for the new window to open and grab a reference to it then.
browser/base/content/test/general/browser_popupUI.js
--- a/browser/base/content/test/general/browser_popupUI.js
+++ b/browser/base/content/test/general/browser_popupUI.js
@@ -1,37 +1,17 @@
 function test() {
   waitForExplicitFinish();
-  gPrefService.setBoolPref("dom.disable_open_during_load", false);
+  SpecialPowers.pushPrefEnv({ set: [[ "dom.disable_open_during_load", false ]] });
 
-  var browser = gBrowser.selectedBrowser;
-  BrowserTestUtils.browserLoaded(browser).then(() => {
-    if (gPrefService.prefHasUserValue("dom.disable_open_during_load"))
-      gPrefService.clearUserPref("dom.disable_open_during_load");
-
-    findPopup();
-  });
-
-  browser.loadURI(
+  let popupOpened = BrowserTestUtils.waitForNewWindow(true, "about:blank");
+  BrowserTestUtils.openNewForegroundTab(gBrowser,
     "data:text/html,<html><script>popup=open('about:blank','','width=300,height=200')</script>"
   );
-}
-
-function findPopup() {
-  var enumerator = Services.wm.getEnumerator("navigator:browser");
-
-  while (enumerator.hasMoreElements()) {
-    let win = enumerator.getNext();
-    if (win.content.wrappedJSObject == content.wrappedJSObject.popup) {
-      testPopupUI(win);
-      return;
-    }
-  }
-
-  throw "couldn't find the popup";
+  popupOpened.then((win) => testPopupUI(win));
 }
 
 function testPopupUI(win) {
   var doc = win.document;
 
   ok(win.gURLBar, "location bar exists in the popup");
   isnot(win.gURLBar.clientWidth, 0, "location bar is visible in the popup");
   ok(win.gURLBar.readOnly, "location bar is read-only in the popup");
@@ -39,20 +19,19 @@ function testPopupUI(win) {
      "'open location' command is not disabled in the popup");
 
   let historyButton = doc.getAnonymousElementByAttribute(win.gURLBar, "anonid",
                                                          "historydropmarker");
   is(historyButton.clientWidth, 0, "history dropdown button is hidden in the popup");
 
   EventUtils.synthesizeKey("t", { accelKey: true }, win);
   is(win.gBrowser.browsers.length, 1, "Accel+T doesn't open a new tab in the popup");
-  is(gBrowser.browsers.length, 2, "Accel+T opened a new tab in the parent window");
+  is(gBrowser.browsers.length, 3, "Accel+T opened a new tab in the parent window");
   gBrowser.removeCurrentTab();
 
   EventUtils.synthesizeKey("w", { accelKey: true }, win);
   ok(win.closed, "Accel+W closes the popup");
 
   if (!win.closed)
     win.close();
-  gBrowser.addTab();
   gBrowser.removeCurrentTab();
   finish();
 }