Isolate from custom extensions.js
This commit is contained in:
parent
81e2c10ed5
commit
c35e239555
@ -100,6 +100,7 @@ TreeStyleTabWindowHelper.overrideExtensionsBeforeBrowserInit = function TSTWH_ov
|
|||||||
|
|
||||||
TreeStyleTabWindowHelper.overrideExtensionsAfterBrowserInit = function TSTWH_overrideExtensionsAfterBrowserInit() {
|
TreeStyleTabWindowHelper.overrideExtensionsAfterBrowserInit = function TSTWH_overrideExtensionsAfterBrowserInit() {
|
||||||
var sv = this.service;
|
var sv = this.service;
|
||||||
|
var { AddonManager } = Component.utils.import('resource://gre/modules/AddonManager.jsm', {});
|
||||||
|
|
||||||
// Selection Links
|
// Selection Links
|
||||||
// https://addons.mozilla.org/firefox/addon/selection-links/
|
// https://addons.mozilla.org/firefox/addon/selection-links/
|
||||||
@ -244,11 +245,12 @@ TreeStyleTabWindowHelper.overrideExtensionsAfterBrowserInit = function TSTWH_ove
|
|||||||
// Focus Last Selected Tab 0.9.5.x
|
// Focus Last Selected Tab 0.9.5.x
|
||||||
// http://www.gozer.org/mozilla/extensions/
|
// http://www.gozer.org/mozilla/extensions/
|
||||||
if (TreeStyleTabUtils.getTreePref('compatibility.FocusLastSelectedTab')) {
|
if (TreeStyleTabUtils.getTreePref('compatibility.FocusLastSelectedTab')) {
|
||||||
sv.extensions.isAvailable('focuslastselectedtab@gozer.org', { ok : function() {
|
AddonManager.getAddonById('focuslastselectedtab@gozer.org', function(aAddon) {
|
||||||
TreeStyleTabService.registerTabFocusAllowance(function(aTabBrowser) {
|
if (aAddon && aAddon.isAvailable)
|
||||||
return !aTabBrowser.selectedTab.hasAttribute('lastselected');
|
TreeStyleTabService.registerTabFocusAllowance(function(aTabBrowser) {
|
||||||
});
|
return !aTabBrowser.selectedTab.hasAttribute('lastselected');
|
||||||
}});
|
});
|
||||||
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
// LastTab
|
// LastTab
|
||||||
@ -443,9 +445,10 @@ TreeStyleTabWindowHelper.overrideExtensionsAfterBrowserInit = function TSTWH_ove
|
|||||||
// Remove New Tab Button
|
// Remove New Tab Button
|
||||||
// https://addons.mozilla.org/firefox/addon/remove-new-tab-button/
|
// https://addons.mozilla.org/firefox/addon/remove-new-tab-button/
|
||||||
if (TreeStyleTabUtils.getTreePref('compatibility.RemoveNewTabButton')) {
|
if (TreeStyleTabUtils.getTreePref('compatibility.RemoveNewTabButton')) {
|
||||||
sv.extensions.isAvailable('remove-new-tab-button@forerunnerdesigns.com', { ok : function() {
|
AddonManager.getAddonById('remove-new-tab-button@forerunnerdesigns.com', function(aAddon) {
|
||||||
document.documentElement.setAttribute(TreeStyleTabService.kHIDE_NEWTAB, true);
|
if (aAddon && aAddon.isAvailable)
|
||||||
}});
|
document.documentElement.setAttribute(TreeStyleTabService.kHIDE_NEWTAB, true);
|
||||||
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
// InstaClick
|
// InstaClick
|
||||||
@ -554,13 +557,6 @@ TreeStyleTabWindowHelper.overrideExtensionsDelayed = function TSTWH_overrideExte
|
|||||||
var t = gBrowser.treeStyleTab.getFirstTab(gBrowser);
|
var t = gBrowser.treeStyleTab.getFirstTab(gBrowser);
|
||||||
gBrowser.treeStyleTab.initTabAttributes(t);
|
gBrowser.treeStyleTab.initTabAttributes(t);
|
||||||
gBrowser.treeStyleTab.initTabContentsOrder(t);
|
gBrowser.treeStyleTab.initTabContentsOrder(t);
|
||||||
|
|
||||||
gBrowser.__treestyletab__openInverseLink = gBrowser.openInverseLink;
|
|
||||||
gBrowser.openInverseLink = function(...aArgs) {
|
|
||||||
TreeStyleTabService.readyToOpenChildTabNow(gBrowser);
|
|
||||||
return this.__treestyletab__openInverseLink(...aArgs);
|
|
||||||
};
|
|
||||||
|
|
||||||
gBrowser.treeStyleTab.internallyTabMovingCount--;
|
gBrowser.treeStyleTab.internallyTabMovingCount--;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -54,10 +54,6 @@ XPCOMUtils.defineLazyGetter(this, 'prefs', function() {
|
|||||||
Cu.import('resource://treestyletab-modules/lib/prefs.js');
|
Cu.import('resource://treestyletab-modules/lib/prefs.js');
|
||||||
return window['piro.sakura.ne.jp'].prefs;
|
return window['piro.sakura.ne.jp'].prefs;
|
||||||
});
|
});
|
||||||
XPCOMUtils.defineLazyGetter(this, 'extensions', function() {
|
|
||||||
Cu.import('resource://treestyletab-modules/lib/extensions.js', {});
|
|
||||||
return window['piro.sakura.ne.jp'].extensions;
|
|
||||||
});
|
|
||||||
XPCOMUtils.defineLazyGetter(this, 'animationManager', function() {
|
XPCOMUtils.defineLazyGetter(this, 'animationManager', function() {
|
||||||
Cu.import('resource://treestyletab-modules/lib/animationManager.js', {});
|
Cu.import('resource://treestyletab-modules/lib/animationManager.js', {});
|
||||||
return window['piro.sakura.ne.jp'].animationManager;
|
return window['piro.sakura.ne.jp'].animationManager;
|
||||||
@ -117,7 +113,6 @@ var TreeStyleTabBase = inherit(TreeStyleTabConstants, {
|
|||||||
return SessionStore;
|
return SessionStore;
|
||||||
},
|
},
|
||||||
|
|
||||||
get extensions() { return extensions; },
|
|
||||||
get animationManager() { return animationManager; },
|
get animationManager() { return animationManager; },
|
||||||
get autoScroll() { return autoScroll; },
|
get autoScroll() { return autoScroll; },
|
||||||
get AeroPeek() { return AeroPeek; }, // for Windows
|
get AeroPeek() { return AeroPeek; }, // for Windows
|
||||||
|
@ -50,6 +50,7 @@ Cu.import('resource://treestyletab-modules/ReferenceCounter.js');
|
|||||||
|
|
||||||
XPCOMUtils.defineLazyModuleGetter(this, 'Services', 'resource://gre/modules/Services.jsm');
|
XPCOMUtils.defineLazyModuleGetter(this, 'Services', 'resource://gre/modules/Services.jsm');
|
||||||
XPCOMUtils.defineLazyModuleGetter(this, 'Promise', 'resource://gre/modules/Promise.jsm');
|
XPCOMUtils.defineLazyModuleGetter(this, 'Promise', 'resource://gre/modules/Promise.jsm');
|
||||||
|
XPCOMUtils.defineLazyModuleGetter(this, 'AddonManager', 'resource://gre/modules/AddonManager.jsm');
|
||||||
XPCOMUtils.defineLazyModuleGetter(this, 'utils', 'resource://treestyletab-modules/utils.js', 'TreeStyleTabUtils');
|
XPCOMUtils.defineLazyModuleGetter(this, 'utils', 'resource://treestyletab-modules/utils.js', 'TreeStyleTabUtils');
|
||||||
XPCOMUtils.defineLazyModuleGetter(this, 'FullTooltipManager', 'resource://treestyletab-modules/fullTooltip.js');
|
XPCOMUtils.defineLazyModuleGetter(this, 'FullTooltipManager', 'resource://treestyletab-modules/fullTooltip.js');
|
||||||
XPCOMUtils.defineLazyModuleGetter(this, 'TabbarDNDObserver', 'resource://treestyletab-modules/tabbarDNDObserver.js');
|
XPCOMUtils.defineLazyModuleGetter(this, 'TabbarDNDObserver', 'resource://treestyletab-modules/tabbarDNDObserver.js');
|
||||||
@ -2970,16 +2971,15 @@ TreeStyleTabBrowser.prototype = inherit(TreeStyleTabWindow.prototype, {
|
|||||||
prefs.getPref('extensions.informationaltab.thumbnail.enabled') &&
|
prefs.getPref('extensions.informationaltab.thumbnail.enabled') &&
|
||||||
prefs.getPref('extensions.informationaltab.thumbnail.position') < 100
|
prefs.getPref('extensions.informationaltab.thumbnail.position') < 100
|
||||||
) {
|
) {
|
||||||
let self = this;
|
AddonManager.getAddonByID('informationaltab@piro.sakura.ne.jp', (function(aAddon) {
|
||||||
this.extensions.isAvailable('informationaltab@piro.sakura.ne.jp', {
|
if (aAddon) {
|
||||||
ok : function() {
|
|
||||||
aStyle = 'retro';
|
aStyle = 'retro';
|
||||||
self.setTabbrowserAttribute(self.kTWISTY_STYLE, aStyle);
|
this.setTabbrowserAttribute(this.kTWISTY_STYLE, aStyle);
|
||||||
},
|
|
||||||
ng : function() {
|
|
||||||
self.setTabbrowserAttribute(self.kTWISTY_STYLE, aStyle);
|
|
||||||
}
|
}
|
||||||
});
|
else {
|
||||||
|
this.setTabbrowserAttribute(this.kTWISTY_STYLE, aStyle);
|
||||||
|
}
|
||||||
|
}).bind(this));
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1,161 +0,0 @@
|
|||||||
/*
|
|
||||||
Extensions Compatibility Library
|
|
||||||
|
|
||||||
Usage:
|
|
||||||
var extensions = window['piro.sakura.ne.jp'].extensions;
|
|
||||||
extensions.isAvailable('my.extension.id@example.com', {
|
|
||||||
ok : function() { extensions.goToOptions('my.extension.id@example.com'); },
|
|
||||||
ng : function() { alert('NOT INSTALLED'); }
|
|
||||||
});
|
|
||||||
extensions.isInstalled('my.extension.id@example.com', {
|
|
||||||
ok : function(aDir) {
|
|
||||||
var dir = aDir; // nsILocalFile
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
license: The MIT License, Copyright (c) 2009-2016 YUKI "Piro" Hiroshi
|
|
||||||
original:
|
|
||||||
http://github.com/piroor/fxaddonlib-extensions
|
|
||||||
*/
|
|
||||||
|
|
||||||
/* To work as a JS Code Module */
|
|
||||||
if (typeof window == 'undefined' ||
|
|
||||||
(window && typeof window.constructor == 'function')) {
|
|
||||||
this.EXPORTED_SYMBOLS = ['extensions'];
|
|
||||||
|
|
||||||
// If namespace.jsm is available, export symbols to the shared namespace.
|
|
||||||
// See: http://github.com/piroor/fxaddonlibs/blob/master/namespace.jsm
|
|
||||||
try {
|
|
||||||
let ns = {};
|
|
||||||
Components.utils.import('resource://treestyletab-modules/lib/namespace.jsm', ns);
|
|
||||||
/* var */ window = ns.getNamespaceFor('piro.sakura.ne.jp');
|
|
||||||
}
|
|
||||||
catch(e) {
|
|
||||||
window = {};
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
(function() {
|
|
||||||
const currentRevision = 13;
|
|
||||||
|
|
||||||
if (!('piro.sakura.ne.jp' in window)) window['piro.sakura.ne.jp'] = {};
|
|
||||||
|
|
||||||
var loadedRevision = 'extensions' in window['piro.sakura.ne.jp'] ?
|
|
||||||
window['piro.sakura.ne.jp'].extensions.revision :
|
|
||||||
0 ;
|
|
||||||
if (loadedRevision && loadedRevision > currentRevision) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
const Cc = Components.classes;
|
|
||||||
const Ci = Components.interfaces;
|
|
||||||
|
|
||||||
var { AddonManager } = Components.utils.import('resource://gre/modules/AddonManager.jsm', {});
|
|
||||||
|
|
||||||
window['piro.sakura.ne.jp'].extensions = {
|
|
||||||
revision : currentRevision,
|
|
||||||
|
|
||||||
_formatCallbacks : function(aOKCallback, aNGCallback)
|
|
||||||
{
|
|
||||||
var callbacks = {
|
|
||||||
ok : aOKCallback,
|
|
||||||
ng : aNGCallback
|
|
||||||
};
|
|
||||||
if (typeof aOKCallback != 'function')
|
|
||||||
callbacks = aOKCallback;
|
|
||||||
|
|
||||||
if (!('ok' in callbacks) || typeof callbacks.ok != 'function')
|
|
||||||
callbacks.ok = function() {};
|
|
||||||
if (!('ng' in callbacks) || typeof callbacks.ng != 'function')
|
|
||||||
callbacks.ng = function() {};
|
|
||||||
|
|
||||||
return callbacks;
|
|
||||||
},
|
|
||||||
|
|
||||||
|
|
||||||
isAvailable : function(aId, aOKCallback, aNGCallback)
|
|
||||||
{
|
|
||||||
return this.isEnabled(aId, aOKCallback, aNGCallback);
|
|
||||||
},
|
|
||||||
|
|
||||||
|
|
||||||
isInstalled : function(aId, aOKCallback, aNGCallback)
|
|
||||||
{
|
|
||||||
var callbacks = this._formatCallbacks(aOKCallback, aNGCallback);
|
|
||||||
AddonManager.getAddonByID(aId, function(aAddon) {
|
|
||||||
callbacks[aAddon ? 'ok' : 'ng']();
|
|
||||||
});
|
|
||||||
},
|
|
||||||
|
|
||||||
|
|
||||||
isEnabled : function(aId, aOKCallback, aNGCallback)
|
|
||||||
{
|
|
||||||
var callbacks = this._formatCallbacks(aOKCallback, aNGCallback);
|
|
||||||
AddonManager.getAddonByID(aId, function(aAddon) {
|
|
||||||
callbacks[aAddon && aAddon.isActive ? 'ok' : 'ng']();
|
|
||||||
});
|
|
||||||
},
|
|
||||||
|
|
||||||
|
|
||||||
getInstalledLocation : function(aId, aCallback)
|
|
||||||
{
|
|
||||||
AddonManager.getAddonByID(aId, function(aAddon) {
|
|
||||||
var location = null;
|
|
||||||
if (aAddon)
|
|
||||||
location = aAddon.getResourceURI('/').QueryInterface(Ci.nsIFileURL).file.clone();
|
|
||||||
aCallback(location);
|
|
||||||
});
|
|
||||||
},
|
|
||||||
|
|
||||||
getVersion : function(aId, aCallback)
|
|
||||||
{
|
|
||||||
AddonManager.getAddonByID(aId, function(aAddon) {
|
|
||||||
aCallback(aAddon ? aAddon.version : null );
|
|
||||||
});
|
|
||||||
},
|
|
||||||
|
|
||||||
|
|
||||||
goToOptions : function(aId, aOwnerWindow)
|
|
||||||
{
|
|
||||||
var self = this;
|
|
||||||
var callback = function(aURI) {
|
|
||||||
self.goToOptionsInternal(aURI, aOwnerWindow);
|
|
||||||
};
|
|
||||||
AddonManager.getAddonByID(aId, function(aAddon) {
|
|
||||||
callback(aAddon && aAddon.isActive ? aAddon.optionsURL : null );
|
|
||||||
});
|
|
||||||
},
|
|
||||||
goToOptionsInternal : function(aURI, aOwnerWindow)
|
|
||||||
{
|
|
||||||
if (!aURI) return;
|
|
||||||
|
|
||||||
var windows = this._WindowMediator.getEnumerator(null);
|
|
||||||
while (windows.hasMoreElements())
|
|
||||||
{
|
|
||||||
let win = windows.getNext();
|
|
||||||
if (win.location.href == aURI) {
|
|
||||||
win.focus();
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
var instantApply = false;
|
|
||||||
try {
|
|
||||||
instantApply = Cc['@mozilla.org/preferences;1']
|
|
||||||
.getService(Ci.nsIPrefBranch)
|
|
||||||
.getBoolPref('browser.preferences.instantApply');
|
|
||||||
}
|
|
||||||
catch(e) {
|
|
||||||
}
|
|
||||||
(aOwnerWindow || window).openDialog(
|
|
||||||
aURI,
|
|
||||||
'',
|
|
||||||
'chrome,titlebar,toolbar,centerscreen,' + (instantApply ? 'dialog=no' : 'modal' )
|
|
||||||
);
|
|
||||||
}
|
|
||||||
};
|
|
||||||
})();
|
|
||||||
|
|
||||||
if (window != this) { // work as a JS Code Module
|
|
||||||
this.extensions = window['piro.sakura.ne.jp'].extensions;
|
|
||||||
}
|
|
||||||
|
|
Loading…
Reference in New Issue
Block a user