Bug 1299334 - Save and restore relatedBrowser around the XBL binding being torn down and restored. draft
authorBlake Kaplan <mrbkap@gmail.com>
Tue, 30 Aug 2016 16:56:06 -0700
changeset 407742 49a4447096a560326febeee7a5e2ff634f007fa9
parent 407722 fa6f91ffb4965302f316635e91d456c8103e08c2
child 529945 1e9db94aa75c9d04cfd57a1d284d1d1ae540dc46
push id28039
push userbmo:mrbkap@mozilla.com
push dateTue, 30 Aug 2016 23:56:26 +0000
bugs1299334
milestone51.0a1
Bug 1299334 - Save and restore relatedBrowser around the XBL binding being torn down and restored. MozReview-Commit-ID: 4LLuzk34ZUt
browser/base/content/tabbrowser.xml
--- a/browser/base/content/tabbrowser.xml
+++ b/browser/base/content/tabbrowser.xml
@@ -1607,23 +1607,30 @@
             listener.destroy();
 
             let oldUserTypedValue = aBrowser.userTypedValue;
             let hadStartedLoad = aBrowser.didStartLoadSinceLastUserTyping();
 
             // Make sure the browser is destroyed so it unregisters from observer notifications
             aBrowser.destroy();
 
-            // Make sure to restore the original droppedLinkHandler.
+            // Make sure to restore the original droppedLinkHandler and
+            // relatedBrowser.
             let droppedLinkHandler = aBrowser.droppedLinkHandler;
+            let relatedBrowser = aBrowser.relatedBrowser;
 
             // Change the "remote" attribute.
             let parent = aBrowser.parentNode;
             parent.removeChild(aBrowser);
             aBrowser.setAttribute("remote", aShouldBeRemote ? "true" : "false");
+
+            // NB: This works with the hack in the browser constructor that
+            // turns this normal property into a field.
+            aBrowser.relatedBrowser = relatedBrowser;
+
             parent.appendChild(aBrowser);
 
             aBrowser.userTypedValue = oldUserTypedValue;
             if (hadStartedLoad) {
               aBrowser.urlbarChangeTracker.startedLoad();
             }
 
             aBrowser.droppedLinkHandler = droppedLinkHandler;