Bug 1298323 - do not destroy the Finder instance when only a single window closes in e10s mode, because that render the findbar useless. r?jaws draft
authorMike de Boer <mdeboer@mozilla.com>
Fri, 26 Aug 2016 10:07:54 +0200
changeset 405970 316def26dbc437fb1121a982f484ef44cc554c12
parent 405693 4988e9ed22f34ffa92723a16b0be9f82f48fe3e9
child 529558 bb86da278d1479d6ba89eb27f580b662f732fee9
push id27620
push usermdeboer@mozilla.com
push dateFri, 26 Aug 2016 08:08:52 +0000
reviewersjaws
bugs1298323
milestone51.0a1
Bug 1298323 - do not destroy the Finder instance when only a single window closes in e10s mode, because that render the findbar useless. r?jaws MozReview-Commit-ID: 4kxdba41n8k
toolkit/modules/RemoteFinder.jsm
--- a/toolkit/modules/RemoteFinder.jsm
+++ b/toolkit/modules/RemoteFinder.jsm
@@ -21,27 +21,17 @@ XPCOMUtils.defineLazyGetter(this, "Rect"
 function RemoteFinder(browser) {
   this._listeners = new Set();
   this._searchString = null;
 
   this.swapBrowser(browser);
 }
 
 RemoteFinder.prototype = {
-  destroy() {
-    this._browser.messageManager.sendAsyncMessage("Finder:Destroy");
-    if (this._messageManager) {
-      this._messageManager.removeMessageListener("Finder:Result", this);
-      this._messageManager.removeMessageListener("Finder:MatchesResult", this);
-      this._messageManager.removeMessageListener("Finder:CurrentSelectionResult", this);
-      this._messageManager.removeMessageListener("Finder:HighlightFinished", this);
-    }
-    this._listeners.clear();
-    this._browser = this._messageManager = null;
-  },
+  destroy() {},
 
   swapBrowser: function(aBrowser) {
     if (this._messageManager) {
       this._messageManager.removeMessageListener("Finder:Result", this);
       this._messageManager.removeMessageListener("Finder:MatchesResult", this);
       this._messageManager.removeMessageListener("Finder:CurrentSelectionResult", this);
       this._messageManager.removeMessageListener("Finder:HighlightFinished", this);
     }
@@ -222,23 +212,21 @@ function RemoteFinderListener(global) {
   let {Finder} = Cu.import("resource://gre/modules/Finder.jsm", {});
   this._finder = new Finder(global.docShell);
   this._finder.addResultListener(this);
   this._global = global;
 
   for (let msg of this.MESSAGES) {
     global.addMessageListener(msg, this);
   }
-  global.addEventListener("unload", this.destroy.bind(this));
 }
 
 RemoteFinderListener.prototype = {
   MESSAGES: [
     "Finder:CaseSensitive",
-    "Finder:Destroy",
     "Finder:EntireWord",
     "Finder:FastFind",
     "Finder:FindAgain",
     "Finder:SetSearchStringToSelection",
     "Finder:GetInitialSelection",
     "Finder:Highlight",
     "Finder:HighlightAllChange",
     "Finder:EnableSelection",
@@ -246,23 +234,16 @@ RemoteFinderListener.prototype = {
     "Finder:FocusContent",
     "Finder:FindbarClose",
     "Finder:FindbarOpen",
     "Finder:KeyPress",
     "Finder:MatchesCount",
     "Finder:ModalHighlightChange"
   ],
 
-  destroy() {
-    this._finder.destroy();
-    for (let msg of this.MESSAGES)
-      this._global.removeMessageListener(msg, this);
-    this._finder = this._global = null;
-  },
-
   onFindResult: function (aData) {
     this._global.sendAsyncMessage("Finder:Result", aData);
   },
 
   // When the child receives messages with results of requestMatchesCount,
   // it passes them forward to the parent.
   onMatchesCountResult: function (aData) {
     this._global.sendAsyncMessage("Finder:MatchesResult", aData);
@@ -271,20 +252,16 @@ RemoteFinderListener.prototype = {
   onHighlightFinished: function(aData) {
     this._global.sendAsyncMessage("Finder:HighlightFinished", aData);
   },
 
   receiveMessage: function (aMessage) {
     let data = aMessage.data;
 
     switch (aMessage.name) {
-      case "Finder:Destroy":
-        this._finder.destroy();
-        break;
-
       case "Finder:CaseSensitive":
         this._finder.caseSensitive = data.caseSensitive;
         break;
 
       case "Finder:EntireWord":
         this._finder.entireWord = data.entireWord;
         break;