summaryrefslogtreecommitdiff
path: root/browser
diff options
context:
space:
mode:
authorPale Moon <git-repo@palemoon.org>2016-09-20 13:11:05 +0200
committerPale Moon <git-repo@palemoon.org>2016-09-20 13:11:05 +0200
commit7085a33fa68b2e37cb3d74f53e3a5e4f5ed4a620 (patch)
tree2b21c492d0bad038be20a934afca1d1d978bf446 /browser
parentb5cb1b120af4cc98f29841db9f837916837406ca (diff)
downloadpalemoon-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.js11
-rw-r--r--browser/base/content/browser.js15
-rw-r--r--browser/components/sessionstore/SessionStore.jsm11
-rw-r--r--browser/components/sessionstore/_SessionFile.jsm2
-rw-r--r--browser/components/sessionstore/nsISessionStore.idl4
-rw-r--r--browser/components/sessionstore/nsSessionStartup.js2
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");