diff options
author | Pale Moon <git-repo@palemoon.org> | 2016-09-20 13:11:05 +0200 |
---|---|---|
committer | Pale Moon <git-repo@palemoon.org> | 2016-09-20 13:11:05 +0200 |
commit | 7085a33fa68b2e37cb3d74f53e3a5e4f5ed4a620 (patch) | |
tree | 2b21c492d0bad038be20a934afca1d1d978bf446 /browser | |
parent | b5cb1b120af4cc98f29841db9f837916837406ca (diff) | |
download | palemoon-gre-7085a33fa68b2e37cb3d74f53e3a5e4f5ed4a620.tar.gz |
Switch SessionStore init to Promise.jsm in toolkit, and move restore previous session command check to the actual menu code.
This resolves #499.
Diffstat (limited to 'browser')
-rw-r--r-- | browser/base/content/browser-places.js | 11 | ||||
-rw-r--r-- | browser/base/content/browser.js | 15 | ||||
-rw-r--r-- | browser/components/sessionstore/SessionStore.jsm | 11 | ||||
-rw-r--r-- | browser/components/sessionstore/_SessionFile.jsm | 2 | ||||
-rw-r--r-- | browser/components/sessionstore/nsISessionStore.idl | 4 | ||||
-rw-r--r-- | browser/components/sessionstore/nsSessionStartup.js | 2 |
6 files changed, 27 insertions, 18 deletions
diff --git a/browser/base/content/browser-places.js b/browser/base/content/browser-places.js index 977852d4e..589fb12f5 100644 --- a/browser/base/content/browser-places.js +++ b/browser/base/content/browser-places.js @@ -489,6 +489,16 @@ function HistoryMenu(aPopupShowingEvent) { } HistoryMenu.prototype = { + toggleRestoreLastSession: function HM_toggleRestoreLastSession() {
+ let restoreItem = this._rootElt.ownerDocument.getElementById("Browser:RestoreLastSession");
+
+ if (this._ss.canRestoreLastSession &&
+ !PrivateBrowsingUtils.isWindowPrivate(window))
+ restoreItem.removeAttribute("disabled");
+ else
+ restoreItem.setAttribute("disabled", true);
+ },
+ toggleRecentlyClosedTabs: function HM_toggleRecentlyClosedTabs() { // enable/disable the Recently Closed Tabs sub menu var undoMenu = this._rootElt.getElementsByClassName("recentlyClosedTabsMenu")[0]; @@ -685,6 +695,7 @@ HistoryMenu.prototype = { if (aEvent.target != aEvent.currentTarget) return; + this.toggleRestoreLastSession(); this.toggleRecentlyClosedTabs(); this.toggleRecentlyClosedWindows(); this.toggleTabsFromOtherComputers(); diff --git a/browser/base/content/browser.js b/browser/base/content/browser.js index 5e88dcfb9..6566cee67 100644 --- a/browser/base/content/browser.js +++ b/browser/base/content/browser.js @@ -1048,12 +1048,7 @@ var gBrowserInit = { // initialize the session-restore service (in case it's not already running) let ss = Cc["@mozilla.org/browser/sessionstore;1"].getService(Ci.nsISessionStore); - ss.init(window); - - // Enable the Restore Last Session command if needed - if (ss.canRestoreLastSession && - !PrivateBrowsingUtils.isWindowPrivate(window)) - goSetCommandEnabled("Browser:RestoreLastSession", true); + let ssPromise = ss.init(window); PlacesToolbarHelper.init(); @@ -1239,8 +1234,14 @@ var gBrowserInit = { Cu.reportError("Could not end startup crash tracking: " + ex); } + ssPromise.then(() =>{ + TabView.init(); + SocialUI.init(); + // XXX: do we still need this?... + setTimeout(function () { BrowserChromeTest.markAsReady(); }, 0); + }); + Services.obs.notifyObservers(window, "browser-delayed-startup-finished", ""); - setTimeout(function () { BrowserChromeTest.markAsReady(); }, 0); }, // Returns the URI(s) to load at startup. diff --git a/browser/components/sessionstore/SessionStore.jsm b/browser/components/sessionstore/SessionStore.jsm index d1b3a4a7d..1fc64cd15 100644 --- a/browser/components/sessionstore/SessionStore.jsm +++ b/browser/components/sessionstore/SessionStore.jsm @@ -77,7 +77,7 @@ Cu.import("resource://gre/modules/XPCOMUtils.jsm", this); Cu.import("resource://gre/modules/debug.js", this); Cu.import("resource://gre/modules/osfile.jsm", this); Cu.import("resource://gre/modules/PrivateBrowsingUtils.jsm", this); -Cu.import("resource:///modules/promise.js", this); +Cu.import("resource://gre/modules/Promise.jsm", this); XPCOMUtils.defineLazyServiceGetter(this, "gSessionStartup", "@mozilla.org/browser/sessionstartup;1", "nsISessionStartup"); @@ -135,7 +135,7 @@ this.SessionStore = { }, init: function ss_init(aWindow) { - SessionStoreInternal.init(aWindow); + return SessionStoreInternal.init(aWindow); }, getBrowserState: function ss_getBrowserState() { @@ -334,9 +334,6 @@ let SessionStoreInternal = { }, set canRestoreLastSession(val) { - // Cheat a bit; only allow false. - if (val) - return; this._lastSessionState = null; }, @@ -355,7 +352,7 @@ let SessionStoreInternal = { this._initPrefs(); - this._disabledForMultiProcess = this._prefBranch.getBoolPref("tabs.remote"); + this._disabledForMultiProcess = false; // this pref is only read at startup, so no need to observe it this._sessionhistory_max_entries = @@ -519,7 +516,7 @@ let SessionStoreInternal = { init: function ssi_init(aWindow) { let self = this; this.initService(); - this._promiseInitialization.promise.then( + return this._promiseInitialization.promise.then( function onSuccess() { self._initWindow(aWindow); } diff --git a/browser/components/sessionstore/_SessionFile.jsm b/browser/components/sessionstore/_SessionFile.jsm index b94bcfb0d..9523d074c 100644 --- a/browser/components/sessionstore/_SessionFile.jsm +++ b/browser/components/sessionstore/_SessionFile.jsm @@ -32,7 +32,7 @@ const Ci = Components.interfaces; Cu.import("resource://gre/modules/Services.jsm"); Cu.import("resource://gre/modules/XPCOMUtils.jsm"); Cu.import("resource://gre/modules/osfile.jsm"); -Cu.import("resource:///modules/promise.js"); +Cu.import("resource://gre/modules/Promise.jsm"); XPCOMUtils.defineLazyModuleGetter(this, "NetUtil", "resource://gre/modules/NetUtil.jsm"); diff --git a/browser/components/sessionstore/nsISessionStore.idl b/browser/components/sessionstore/nsISessionStore.idl index dfe7d46bf..0490772a4 100644 --- a/browser/components/sessionstore/nsISessionStore.idl +++ b/browser/components/sessionstore/nsISessionStore.idl @@ -25,13 +25,13 @@ interface nsIDOMNode; * |gBrowser.tabContainer| such as e.g. |gBrowser.selectedTab|. */ -[scriptable, uuid(59bfaf00-e3d8-4728-b4f0-cc0b9dfb4806)] +[scriptable, uuid(43ec216b-f002-4424-bfc5-fc555c87dbc4)] interface nsISessionStore : nsISupports { /** * Initialize the service */ - void init(in nsIDOMWindow aWindow); + jsval init(in nsIDOMWindow aWindow); /** * Is it possible to restore the previous session. Will always be false when diff --git a/browser/components/sessionstore/nsSessionStartup.js b/browser/components/sessionstore/nsSessionStartup.js index 696a189e7..024246619 100644 --- a/browser/components/sessionstore/nsSessionStartup.js +++ b/browser/components/sessionstore/nsSessionStartup.js @@ -38,7 +38,7 @@ const Cu = Components.utils; Cu.import("resource://gre/modules/XPCOMUtils.jsm"); Cu.import("resource://gre/modules/Services.jsm"); Cu.import("resource://gre/modules/PrivateBrowsingUtils.jsm"); -Cu.import("resource:///modules/promise.js"); +Cu.import("resource://gre/modules/Promise.jsm"); XPCOMUtils.defineLazyModuleGetter(this, "_SessionFile", "resource:///modules/sessionstore/_SessionFile.jsm"); |