Bug 1362378: Restore rather than reload pending background tabs when reloading all tabs. r?dao
MozReview-Commit-ID: 3UgSSdBHhpK
--- a/browser/base/content/tabbrowser.xml
+++ b/browser/base/content/tabbrowser.xml
@@ -3324,38 +3324,44 @@
}
]]>
</body>
</method>
<method name="reloadAllTabs">
<body>
<![CDATA[
- let tabs = this.visibleTabs;
- let l = tabs.length;
- for (var i = 0; i < l; i++) {
+ for (let tab of this.visibleTabs) {
try {
- this.getBrowserForTab(tabs[i]).reload();
+ this.reloadTab(tab, true);
} catch (e) {
// ignore failure to reload so others will be reloaded
+ Cu.reportError(e);
}
}
]]>
</body>
</method>
<method name="reloadTab">
<parameter name="aTab"/>
+ <parameter name="aKeepTemporaryPermissions"/>
<body>
<![CDATA[
- let browser = this.getBrowserForTab(aTab);
- // Reset temporary permissions on the current tab. This is done here
- // because we only want to reset permissions on user reload.
- SitePermissions.clearTemporaryPermissions(browser);
- browser.reload();
+ if (!aKeepTemporaryPermissions) {
+ // Reset temporary permissions on the current tab. This is done here
+ // because we only want to reset permissions on user reload.
+ SitePermissions.clearTemporaryPermissions(aTab.linkedBrowser);
+ }
+ if (aTab.hasAttribute("pending")) {
+ this._insertBrowser(aTab);
+ SessionStore.restoreTabContent(aTab);
+ } else {
+ aTab.linkedBrowser.reload();
+ }
]]>
</body>
</method>
<method name="addProgressListener">
<parameter name="aListener"/>
<body>
<![CDATA[
--- a/browser/components/sessionstore/SessionStore.jsm
+++ b/browser/components/sessionstore/SessionStore.jsm
@@ -356,16 +356,20 @@ this.SessionStore = {
restoreLastSession: function ss_restoreLastSession() {
SessionStoreInternal.restoreLastSession();
},
getCurrentState(aUpdateAll) {
return SessionStoreInternal.getCurrentState(aUpdateAll);
},
+ restoreTabContent(aTab) {
+ return SessionStoreInternal.restoreTabContent(aTab);
+ },
+
reviveCrashedTab(aTab) {
return SessionStoreInternal.reviveCrashedTab(aTab);
},
reviveAllCrashedTabs() {
return SessionStoreInternal.reviveAllCrashedTabs();
},