[Pkg-mozext-commits] [tabmixplus] 08/32: Replace eval of gBrowserInit._delayedStartup with wrapped function, fix incompatibility with Multiple Tab Handler extension
David Prévot
taffit at moszumanska.debian.org
Sun Feb 7 19:23:12 UTC 2016
This is an automated email from the git hooks/post-receive script.
taffit pushed a commit to branch master
in repository tabmixplus.
commit 6ce467de4d6c6cee8113fa22e14b0dcc65d2bf24
Author: onemen <tabmix.onemen at gmail.com>
Date: Mon Dec 28 23:32:45 2015 +0200
Replace eval of gBrowserInit._delayedStartup with wrapped function, fix incompatibility with Multiple Tab Handler extension
---
chrome/content/links/setup.js | 73 +++++++++++++++++++--------------------
chrome/content/minit/tablib.js | 1 -
chrome/content/session/session.js | 2 +-
chrome/content/tabmix.js | 18 +++-------
modules/Services.jsm | 8 -----
5 files changed, 42 insertions(+), 60 deletions(-)
diff --git a/chrome/content/links/setup.js b/chrome/content/links/setup.js
index f56ac00..319878b 100644
--- a/chrome/content/links/setup.js
+++ b/chrome/content/links/setup.js
@@ -123,47 +123,46 @@ Tabmix.beforeBrowserInitOnLoad = function() {
}
}
- var loadOnStartup;
if (prepareLoadOnStartup) {
- // move this code from gBrowserInit.onLoad to gBrowserInit._delayedStartup after bug 756313
- loadOnStartup =
- ' if (uriToLoad && uriToLoad != "about:blank") {' +
- ' for (let i = 0; i < gBrowser.tabs.length ; i++) {' +
- ' gBrowser.tabs[i].loadOnStartup = true;' +
- ' }' +
- ' }' +
- ' if (uriToLoad == TabmixSvc.aboutBlank || "tabmixdata" in window) {' +
- ' gBrowser.selectedBrowser.stop();' +
- ' }\n' +
- ' $&';
- }
-
- // At the moment we must init TabmixSessionManager before sessionStore.init
- var fn;
- if (typeof gBrowserInit.__treestyletab___delayedStartup == "function") {
- fn = "gBrowserInit.__treestyletab___delayedStartup";
+ Tabmix.prepareLoadOnStartup = function() {
+ let uriToLoad = gBrowserInit._getUriToLoad();
+ if (uriToLoad && uriToLoad != TabmixSvc.aboutBlank) {
+ let tabs = gBrowser.tabs;
+ for (let tab of tabs) {
+ tab.loadOnStartup = true;
+ }
+ }
+ if (uriToLoad == TabmixSvc.aboutBlank || "tabmixdata" in window) {
+ gBrowser.selectedBrowser.stop();
+ }
+ };
} else {
- fn = "gBrowserInit._delayedStartup";
+ Tabmix.prepareLoadOnStartup = function() { };
}
- let insertionPoint = "PlacesToolbarHelper.init();";
- this.changeCode(gBrowserInit, fn)._replace(
- '{',
- '{\n' +
- ' Tabmix.runningDelayedStartup = true;\n'
- )._replace(
- 'Services.obs.addObserver', loadOnStartup, {check: !!loadOnStartup}
- )._replace(
- insertionPoint,
- 'try {' +
- ' Tabmix.beforeSessionStoreInit();' +
- '} catch (ex) {Tabmix.assert(ex);}\n' +
- ' $&'
- )._replace(
- /(\})(\)?)$/,
- ' Tabmix.runningDelayedStartup = false;\n' +
- '$1$2'
- ).toCode();
+ Tabmix.originalFunctions.gBrowserInit__delayedStartup = gBrowserInit._delayedStartup;
+ gBrowserInit._delayedStartup = function() {
+ try {
+ Tabmix.beforeDelayedStartup();
+ } catch (ex) {
+ Tabmix.assert(ex);
+ }
+
+ let result;
+ try {
+ // we use runningDelayedStartup in gBrowser.swapBrowsersAndCloseOther
+ Tabmix.runningDelayedStartup = true;
+ result = Tabmix.originalFunctions.gBrowserInit__delayedStartup.apply(this, arguments);
+ } finally {
+ Tabmix.runningDelayedStartup = false;
+ }
+
+ Tabmix.prepareLoadOnStartup();
+ TabmixSessionManager.init();
+ Tabmix.initialization.run("afterDelayedStartup");
+
+ return result;
+ };
// look for installed extensions that are incompatible with tabmix
if (this.firstWindowInSession && this.prefs.getBoolPref("disableIncompatible")) {
diff --git a/chrome/content/minit/tablib.js b/chrome/content/minit/tablib.js
index ca99ed8..a11a034 100644
--- a/chrome/content/minit/tablib.js
+++ b/chrome/content/minit/tablib.js
@@ -1687,7 +1687,6 @@ var tablib = { // eslint-disable-line
return;
}
Tabmix._afterTabduplicated = true;
- TabmixSessionManager.init();
let url = aOtherTab.linkedBrowser.currentURI.spec;
gBrowser.tabContainer.adjustTabstrip(true, url);
}
diff --git a/chrome/content/session/session.js b/chrome/content/session/session.js
index 3b2f71e..cb8dc65 100644
--- a/chrome/content/session/session.js
+++ b/chrome/content/session/session.js
@@ -256,7 +256,7 @@ var TabmixSessionManager = { // jshint ignore:line
return (this.prefBranch = Services.prefs.getBranch("extensions.tabmix.sessions."));
},
- // call by Tabmix.beforeSessionStoreInit
+ // call by Tabmix.beforeDelayedStartup
init: function SM_init() {
if (this._inited)
return;
diff --git a/chrome/content/tabmix.js b/chrome/content/tabmix.js
index 5c7b53d..6c460f6 100644
--- a/chrome/content/tabmix.js
+++ b/chrome/content/tabmix.js
@@ -42,21 +42,13 @@ Tabmix.startup = function TMP_startup() {
};
// we call this function from gBrowserInit._delayedStartup, see setup.js
-Tabmix.beforeSessionStoreInit = function TMP_beforeSessionStoreInit() {
- // when gBrowserInit._delayedStartup broke by extension we don't get
- // "browser-delayed-startup-finished" notification
- setTimeout(function() {
- Tabmix.initialization.run("delayedStartup");
- }, 25);
-
+Tabmix.beforeDelayedStartup = function() {
if (this.isFirstWindow) {
let tmp = {};
Cu.import("resource://tabmixplus/extensions/AddonManager.jsm", tmp);
TMP_SessionStore.setService(1, true);
}
- TabmixSessionManager.init();
-
// if we call these functions earlier we get this warning:
// XUL box for _moz_generated_content_before element contained an inline #text child
// by calling getBoundingClientRect
@@ -111,7 +103,7 @@ Tabmix.sessionInitialized = function() {
};
// we call gTMPprefObserver.miscellaneousRules to add some dynamic rules
-// from Tabmix.delayedStartup
+// from Tabmix.afterDelayedStartup
Tabmix.getButtonsHeight = function() {
if (gBrowser.tabContainer.orient == "horizontal") {
let tabBar = gBrowser.tabContainer;
@@ -166,7 +158,7 @@ Tabmix.getAfterTabsButtonsWidth = function TMP_getAfterTabsButtonsWidth() {
}
};
-Tabmix.delayedStartup = function TMP_delayedStartup() {
+Tabmix.afterDelayedStartup = function() {
TabmixTabbar._enablePositionCheck = true;
TMP_TabView.init();
@@ -525,7 +517,7 @@ var TMP_eventListener = {
Tabmix.Shortcuts.onWindowOpen(window);
// if treeStyleTab extension installed we call this from
- // Tabmix.delayedStartup
+ // Tabmix.afterDelayedStartup
if (!Tabmix.extensions.treeStyleTab)
Tabmix.navToolbox.tabStripAreaChanged();
@@ -1136,7 +1128,7 @@ Tabmix.initialization = {
onContentLoaded: {id: 2, obj: "TMP_eventListener"},
beforeBrowserInitOnLoad: {id: 3, obj: "Tabmix"},
onWindowOpen: {id: 4, obj: "TMP_eventListener"},
- delayedStartup: {id: 5, obj: "Tabmix"},
+ afterDelayedStartup: {id: 5, obj: "Tabmix"},
get isValidWindow() {
/**
diff --git a/modules/Services.jsm b/modules/Services.jsm
index dc8b848..1858384 100644
--- a/modules/Services.jsm
+++ b/modules/Services.jsm
@@ -166,7 +166,6 @@ this.TabmixSvc = {
this.addMissingPrefs();
- Services.obs.addObserver(this, "browser-delayed-startup-finished", true);
Services.obs.addObserver(this, "quit-application", true);
if (isVersion(190))
@@ -209,13 +208,6 @@ this.TabmixSvc = {
delete TabmixSvc.SessionStoreGlobal;
delete TabmixSvc.SessionStore;
break;
- case "browser-delayed-startup-finished":
- try {
- aSubject.Tabmix.initialization.run("delayedStartup");
- } catch (ex) {
- TabmixSvc.console.assert(ex);
- }
- break;
}
}
},
--
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/pkg-mozext/tabmixplus.git
More information about the Pkg-mozext-commits
mailing list