Bug 1322609 - use getTabBrowser() instead of a type attribute check in marionette, r?ato draft
authorGijs Kruitbosch <gijskruitbosch@gmail.com>
Fri, 09 Dec 2016 10:55:25 -1000
changeset 448311 e2c2bfba99c60f803aa8fa4f1c3eaf8108edffb9
parent 448260 8404d26166a35406f46ff237ed132735c98882b2
child 539266 41565e5e5a2dc7c7ef44315ec177954cf63abdbb
push id38316
push usergijskruitbosch@gmail.com
push dateFri, 09 Dec 2016 20:57:53 +0000
reviewersato
bugs1322609
milestone53.0a1
Bug 1322609 - use getTabBrowser() instead of a type attribute check in marionette, r?ato MozReview-Commit-ID: 9iIJyGgoJRU
browser/base/content/tabbrowser.xml
testing/marionette/driver.js
--- a/browser/base/content/tabbrowser.xml
+++ b/browser/base/content/tabbrowser.xml
@@ -1087,17 +1087,17 @@
               if (!this._lastRelatedTab.selected)
                 this._lastRelatedTab.owner = null;
               this._lastRelatedTab = null;
             }
 
             var oldBrowser = this.mCurrentBrowser;
 
             if (!gMultiProcessBrowser) {
-              oldBrowser.setAttribute("type", "content-targetable");
+              oldBrowser.setAttribute("type", "content");
               oldBrowser.docShellIsActive = false;
               newBrowser.setAttribute("type", "content-primary");
               newBrowser.docShellIsActive =
                 (window.windowState != window.STATE_MINIMIZED);
             }
 
             var updateBlockedPopups = false;
             if ((oldBrowser.blockedPopups && !newBrowser.blockedPopups) ||
@@ -1934,17 +1934,17 @@
             // Supported parameters:
             // userContextId, remote, remoteType, isPreloadBrowser,
             // uriIsAboutBlank, permanentKey
 
             const NS_XUL = "http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul";
 
             let b = document.createElementNS(NS_XUL, "browser");
             b.permanentKey = aParams.permanentKey || {};
-            b.setAttribute("type", "content-targetable");
+            b.setAttribute("type", "content");
             b.setAttribute("message", "true");
             b.setAttribute("messagemanagergroup", "browsers");
             b.setAttribute("contextmenu", this.getAttribute("contentcontextmenu"));
             b.setAttribute("tooltip", this.getAttribute("contenttooltip"));
 
             if (aParams.userContextId) {
               b.setAttribute("usercontextid", aParams.userContextId);
             }
@@ -2609,17 +2609,17 @@
 
             if (browser.registeredOpenURI && !aAdoptedByTab) {
               this._unifiedComplete.unregisterOpenPage(browser.registeredOpenURI,
                                                        browser.getAttribute("usercontextid") || 0);
               delete browser.registeredOpenURI;
             }
 
             // We are no longer the primary content area.
-            browser.setAttribute("type", "content-targetable");
+            browser.setAttribute("type", "content");
 
             // Remove this tab as the owner of any other tabs, since it's going away.
             for (let tab of this.tabs) {
               if ("owner" in tab && tab.owner == aTab)
                 // |tab| is a child of the tab we're removing, make it an orphan
                 tab.owner = null;
             }
 
@@ -3735,17 +3735,17 @@
 
               this.tabbrowser._adjustFocusAfterTabSwitch(this.requestedTab);
 
               let fromBrowser = this.originalTab.linkedBrowser;
               // It's possible that the tab we're switching from closed
               // before we were able to finalize, in which case, fromBrowser
               // doesn't exist.
               if (fromBrowser) {
-                fromBrowser.setAttribute("type", "content-targetable");
+                fromBrowser.setAttribute("type", "content");
               }
 
               let event = new CustomEvent("TabSwitchDone", {
                 bubbles: true,
                 cancelable: true
               });
               this.tabbrowser.dispatchEvent(event);
             },
--- a/testing/marionette/driver.js
+++ b/testing/marionette/driver.js
@@ -38,16 +38,18 @@ Cu.import("chrome://marionette/content/s
 
 this.EXPORTED_SYMBOLS = ["GeckoDriver", "Context"];
 
 var FRAME_SCRIPT = "chrome://marionette/content/listener.js";
 const BROWSER_STARTUP_FINISHED = "browser-delayed-startup-finished";
 const CLICK_TO_START_PREF = "marionette.debugging.clicktostart";
 const CONTENT_LISTENER_PREF = "marionette.contentListener";
 
+const XUL_NS = "http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul";
+
 const SUPPORTED_STRATEGIES = new Set([
   element.Strategy.ClassName,
   element.Strategy.Selector,
   element.Strategy.ID,
   element.Strategy.TagName,
   element.Strategy.XPath,
   element.Strategy.Anon,
   element.Strategy.AnonAttribute,
@@ -422,17 +424,18 @@ GeckoDriver.prototype.registerBrowser = 
     // is from a remote frame.
     this.curBrowser.frameManager.currentRemoteFrame.targetFrameId =
         this.generateFrameId(id);
   }
 
   let reg = {};
   // this will be sent to tell the content process if it is the main content
   let mainContent = this.curBrowser.mainContentId === null;
-  if (be.getAttribute("type") != "content") {
+  if (this.appName != "Firefox" || be.namespaceURI != XUL_NS ||
+      be.nodeName != "browser" || be.getTabBrowser()) {
     // curBrowser holds all the registered frames in knownFrames
     let uid = this.generateFrameId(id);
     reg.id = uid;
     reg.remotenessChange = this.curBrowser.register(uid, be);
   }
 
   // set to true if we updated mainContentId
   mainContent = mainContent && this.curBrowser.mainContentId !== null;