author | Mike Conley <mconley@mozilla.com> |
Thu, 28 Jul 2016 14:20:05 -0400 | |
changeset 309955 | 2557ea45b8e53cc883a971e3a3736ab92bdbc738 |
parent 309954 | 3ab902adf2ce16e9a385ae2b9cb914b9b314f945 |
child 309956 | f2ea401ab10ce254c22d7ec6ec715b55fbb73998 |
push id | 30575 |
push user | ryanvm@gmail.com |
push date | Fri, 19 Aug 2016 13:46:06 +0000 |
treeherder | mozilla-central@3da4d64410c0 [default view] [failures only] |
perfherder | [talos] [build metrics] [platform microbench] (compared to previous push) |
reviewers | MattN |
bugs | 1294502 |
milestone | 51.0a1 |
first release with | nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
|
last release without | nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
|
browser/base/content/tabbrowser.xml | file | annotate | diff | comparison | revisions | |
toolkit/content/widgets/browser.xml | file | annotate | diff | comparison | revisions |
--- a/browser/base/content/tabbrowser.xml +++ b/browser/base/content/tabbrowser.xml @@ -1717,21 +1717,18 @@ this._preloadedBrowser = null; // Attach the nsIFormFillController now that we know the browser // will be used. If we do that before and the preloaded browser // won't be consumed until shutdown then we leak a docShell. // Also, we do not need to take care of attaching nsIFormFillControllers // in the case that the browser is remote, as remote browsers take // care of that themselves. - if (browser && - this.hasAttribute("autocompletepopup") && - !browser.isRemoteBrowser) { + if (browser && this.hasAttribute("autocompletepopup")) { browser.setAttribute("autocompletepopup", this.getAttribute("autocompletepopup")); - browser.attachFormFill(); } return browser; ]]> </body> </method> <method name="_isPreloadingEnabled"> @@ -4061,32 +4058,16 @@ <parameter name="aIndex"/> <body> <![CDATA[ return this.mCurrentBrowser.gotoIndex(aIndex); ]]> </body> </method> - <method name="attachFormFill"> - <body><![CDATA[ - for (let browser of this.browsers) { - browser.attachFormFill(); - } - ]]></body> - </method> - - <method name="detachFormFill"> - <body><![CDATA[ - for (let browser of this.browsers) { - browser.detachFormFill(); - } - ]]></body> - </method> - <property name="currentURI" onget="return this.mCurrentBrowser.currentURI;" readonly="true"/> <property name="finder" onget="return this.mCurrentBrowser.finder" readonly="true"/>
--- a/toolkit/content/widgets/browser.xml +++ b/toolkit/content/widgets/browser.xml @@ -581,49 +581,16 @@ <parameter name="aListener"/> <body> <![CDATA[ this.webProgress.removeProgressListener(aListener); ]]> </body> </method> - <method name="attachFormFill"> - <body> - <![CDATA[ - if (!this.mFormFillAttached && this.hasAttribute("autocompletepopup")) { - // hoop up the form fill autocomplete controller - var controller = Components.classes["@mozilla.org/satchel/form-fill-controller;1"]. - getService(Components.interfaces.nsIFormFillController); - - var popup = document.getElementById(this.getAttribute("autocompletepopup")); - if (popup) { - controller.attachToBrowser(this.docShell, popup.QueryInterface(Components.interfaces.nsIAutoCompletePopup)); - this.mFormFillAttached = true; - } - } - ]]> - </body> - </method> - - <method name="detachFormFill"> - <body> - <![CDATA[ - if (this.mFormFillAttached) { - // hoop up the form fill autocomplete controller - var controller = Components.classes["@mozilla.org/satchel/form-fill-controller;1"]. - getService(Components.interfaces.nsIFormFillController); - controller.detachFromBrowser(this.docShell); - - this.mFormFillAttached = false; - } - ]]> - </body> - </method> - <method name="findChildShell"> <parameter name="aDocShell"/> <parameter name="aSoughtURI"/> <body> <![CDATA[ if (aDocShell.QueryInterface(Components.interfaces.nsIWebNavigation) .currentURI.spec == aSoughtURI.spec) return aDocShell; @@ -635,25 +602,16 @@ if (docShell) return docShell; } return null; ]]> </body> </method> - <method name="onPageShow"> - <parameter name="aEvent"/> - <body> - <![CDATA[ - this.attachFormFill(); - ]]> - </body> - </method> - <method name="onPageHide"> <parameter name="aEvent"/> <body> <![CDATA[ // Delete the feeds cache if we're hiding the topmost page // (as opposed to one of its iframes). if (this.feeds && aEvent.target == this.contentDocument) this.feeds = null; @@ -923,21 +881,17 @@ Components.utils.reportError(e); } try { var securityUI = this.securityUI; } catch (e) { } - // Listen for first load for lazy attachment to form fill controller - // (But we don't want to do this for remote browsers - the test infra - // might fire these events when they normally wouldn't.) if (!this.isRemoteBrowser) { - this.addEventListener("pageshow", this.onPageShow, true); this.addEventListener("pagehide", this.onPageHide, true); } if (this.messageManager) { this.messageManager.addMessageListener("PopupBlocking:UpdateBlockedPopups", this); this.messageManager.addMessageListener("Autoscroll:Start", this); this.messageManager.addMessageListener("Autoscroll:Cancel", this); this.messageManager.addMessageListener("AudioPlayback:Start", this); @@ -969,28 +923,25 @@ .getService(Components.interfaces.nsIObserverService); try { os.removeObserver(this, "browser:purge-session-history"); } catch (ex) { // It's not clear why this sometimes throws an exception. } } - this.detachFormFill(); - this._fastFind = null; this._webBrowserFind = null; // The feeds cache can keep the document inside this browser alive. this.feeds = null; this.lastURI = null; if (!this.isRemoteBrowser) { - this.removeEventListener("pageshow", this.onPageShow, true); this.removeEventListener("pagehide", this.onPageHide, true); } if (this._autoScrollNeedsCleanup) { // we polluted the global scope, so clean it up this._autoScrollPopup.parentNode.removeChild(this._autoScrollPopup); } ]]> @@ -1282,33 +1233,22 @@ try { this.QueryInterface(Components.interfaces.nsIFrameLoaderOwner) .swapFrameLoaders(aOtherBrowser); } catch (ex) { // This may not be implemented for browser elements that are not // attached to a BrowserDOMWindow. } - // Before we swap the actual docShell property we need to detach the - // form fill controller from those docShells. - if (!this.isRemoteBrowser) { - this.detachFormFill(); - aOtherBrowser.detachFormFill(); - } - for (let field of fieldsToSwap) { this[field] = otherFieldValues[field]; aOtherBrowser[field] = ourFieldValues[field]; } - // Re-attach the docShells to the form fill controller. if (!this.isRemoteBrowser) { - this.attachFormFill(); - aOtherBrowser.attachFormFill(); - // Null the current nsITypeAheadFind instances so that they're // lazily re-created on access. We need to do this because they // might have attached the wrong docShell. this._fastFind = aOtherBrowser._fastFind = null; } else { // Rewire the remote listeners this._remoteWebNavigationImpl.swapBrowser(this);