Commit c5e9c97a authored by Asaf Romano's avatar Asaf Romano
Browse files

Bug 477014 -Work around bug 458697 for the tabs' busy state. r=mconnor.

parent 7f26a51c
Loading
Loading
Loading
Loading
+22 −7
Original line number Diff line number Diff line
@@ -1734,6 +1734,7 @@
        <parameter name="aOtherTab"/>
        <body>
          <![CDATA[
            // That's gBrowser for the other window, not the tab's browser!
            var remoteBrowser =
              aOtherTab.ownerDocument.defaultView.getBrowser();

@@ -1751,8 +1752,19 @@
            filter.removeProgressListener(tabListener);
            var tabListenerBlank = tabListener.mBlank;

            // Workarounds for bug 458697
            // Icon might have been set on DOMLinkAdded, don't override that.
            if (!ourBrowser.mIconURL && aOtherTab.linkedBrowser.mIconURL)
              this.setIcon(aOurTab, aOtherTab.linkedBrowser.mIconURL);
            var isBusy = aOtherTab.hasAttribute("busy");
            if (isBusy) {
              aOurTab.setAttribute("busy", "true");
              if (aOurTab == this.selectedTab)
                this.mIsBusy = true;
            }

            // Swap the docshells
            ourBrowser.swapDocShells(remoteBrowser.getBrowserForTab(aOtherTab));
            ourBrowser.swapDocShells(aOtherTab.linkedBrowser);

            // Finish tearing down the tab that's going away.
            remoteBrowser._endRemoveTab(endRemoveArgs);
@@ -1767,6 +1779,9 @@
            ourBrowser.webProgress.addProgressListener(filter,
              Components.interfaces.nsIWebProgress.NOTIFY_ALL);

            if (isBusy)
              this.setTabTitleLoading(aOurTab);
            else
              this.setTabTitle(aOurTab);
            this.updateIcon(aOurTab);

@@ -2295,7 +2310,7 @@
            // tell a new window to take the "dropped" tab
            var ww = Cc["@mozilla.org/embedcomp/window-watcher;1"].
                      getService(Ci.nsIWindowWatcher);
            ww.openWindow(window,
            return ww.openWindow(window,
                                 getBrowserURL(),
                                 null,
                                 "chrome,dialog=no,all",
+1 −0
Original line number Diff line number Diff line
@@ -81,6 +81,7 @@ _BROWSER_FILES = browser_sanitize-timespans.js \
                 browser_bug455852.js \
                 browser_bug462673.js \
                 browser_bug481560.js \
                 browser_bug477014.js \
                 browser_discovery.js \
                 discovery.html \
                 moz.png \
+7 −3
Original line number Diff line number Diff line
@@ -966,9 +966,13 @@
        <parameter name="aOtherBrowser"/>
        <body>
        <![CDATA[
          // We need to swap fields that are tied to our docshell or related to the loaded page
          var fieldsToSwap = [ "_docShell", "_webBrowserFind", "_contentWindow", "_webNavigation",
                               "mIconURL" ];
          // We need to swap fields that are tied to our docshell or related to
          // the loaded page
          // Fields which are built as a result of notifactions (pageshow/hide,
          // DOMLinkAdded/Removed, onStateChange) should not be swapped here,
          // because these notifications are dispatched again once the docshells
          // are swapped.
          var fieldsToSwap = [ "_docShell", "_webBrowserFind", "_contentWindow", "_webNavigation"];

          var ourTabBrowser = this.getTabBrowser();