aboutsummaryrefslogtreecommitdiffstats
path: root/platform/firefox/vapi-background.js
diff options
context:
space:
mode:
Diffstat (limited to 'platform/firefox/vapi-background.js')
-rw-r--r--platform/firefox/vapi-background.js53
1 files changed, 30 insertions, 23 deletions
diff --git a/platform/firefox/vapi-background.js b/platform/firefox/vapi-background.js
index cff89ba..e21afdf 100644
--- a/platform/firefox/vapi-background.js
+++ b/platform/firefox/vapi-background.js
@@ -964,29 +964,36 @@ var tabWatcher = (function() {
return tabbrowser.tabs[i];
};
- var browserFromTarget = function(target) {
- if ( !target ) {
- return null;
- }
+ var browserFromTarget = (function() {
if ( vAPI.fennec ) {
- if ( target.browser ) { // target is a tab
- target = target.browser;
- }
- } else if ( vAPI.thunderbird ) {
- if ( target.mode ) { // target is object with tab info
- var browserFunc = target.mode.getBrowser || target.mode.tabType.getBrowser;
- if (browserFunc) {
- return browserFunc.call(target.mode.tabType, target);
+ return function(target) {
+ if ( !target ) { return null; }
+ if ( target.browser ) { // target is a tab
+ target = target.browser;
}
- }
- } else if ( target.linkedPanel ) { // target is a tab
- target = target.linkedBrowser;
+ return target.localName === 'browser' ? target : null;
+ };
}
- if ( target.localName !== 'browser' ) {
- return null;
+ if ( vAPI.thunderbird ) {
+ return function(target) {
+ if ( !target ) { return null; }
+ if ( target.mode ) { // target is object with tab info
+ var browserFunc = target.mode.getBrowser || target.mode.tabType.getBrowser;
+ if ( browserFunc ) {
+ return browserFunc.call(target.mode.tabType, target);
+ }
+ }
+ return target.localName === 'browser' ? target : null;
+ };
}
- return target;
- };
+ return function(target) {
+ if ( !target ) { return null; }
+ if ( target.linkedPanel ) { // target is a tab
+ target = target.linkedBrowser;
+ }
+ return target.localName === 'browser' ? target : null;
+ };
+ })();
var tabIdFromTarget = function(target) {
var browser = browserFromTarget(target);
@@ -1161,9 +1168,10 @@ var tabWatcher = (function() {
}
var browser, URI, tabId;
- for ( var tabindex = tabs.length - 1; tabindex >= 0; tabindex-- ) {
- var tab = tabs[tabindex];
- browser = tabWatcher.browserFromTarget(tab);
+ var tabindex = tabs.length, tab;
+ while ( tabindex-- ) {
+ tab = tabs[tabindex];
+ browser = browserFromTarget(tab);
if ( browser === null ) {
continue;
}
@@ -1172,7 +1180,6 @@ var tabWatcher = (function() {
if ( URI.schemeIs('chrome') && URI.host === location.host ) {
vAPI.tabs._remove(tab, getTabBrowser(this));
}
- browser = browserFromTarget(tab);
tabId = browserToTabIdMap.get(browser);
if ( tabId !== undefined ) {
removeBrowserEntry(tabId, browser);