mirror of
https://github.com/gorhill/uBlock.git
synced 2024-11-16 23:42:39 +01:00
Fix for #1437 - support for browsers which don't support getTabForBrowser
This commit is contained in:
parent
6d942dc424
commit
eb264c6b87
@ -383,9 +383,25 @@ var getTabForBrowser = function(browser) {
|
|||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
var win = browser.ownerGlobal;
|
var win = browser.ownerGlobal;
|
||||||
return vAPI.fennec && win.BrowserApp && win.BrowserApp.getTabForBrowser(browser) ||
|
if (vAPI.fennec) {
|
||||||
win.gBrowser && (win.gBrowser.getTabForBrowser && win.gBrowser.getTabForBrowser(browser) ||
|
return win.BrowserApp && win.BrowserApp.getTabForBrowser(browser);
|
||||||
win.gBrowser._getTabForBrowser && win.gBrowser._getTabForBrowser(browser));
|
} else {
|
||||||
|
var gBrowser = win.gBrowser;
|
||||||
|
if (gBrowser) {
|
||||||
|
if (typeof gBrowser.getTabForBrowser === 'function') {
|
||||||
|
return gBrowser.getTabForBrowser(browser);
|
||||||
|
} else if (gBrowser.browsers && gBrowser.tabs) {
|
||||||
|
// Fallback to manual searching if the browser doesn't support getTabForBrowser
|
||||||
|
for (var i = 0; i < gBrowser.browsers.length; i++) {
|
||||||
|
if (gBrowser.browsers[i] === browser) {
|
||||||
|
return gBrowser.tabs[i];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return null;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
@ -477,7 +493,7 @@ vAPI.tabs.getTabId = function(target) {
|
|||||||
return vAPI.noTabId;
|
return vAPI.noTabId;
|
||||||
}
|
}
|
||||||
|
|
||||||
var tab;
|
var tab = null;
|
||||||
var browser;
|
var browser;
|
||||||
|
|
||||||
if ( vAPI.fennec ) {
|
if ( vAPI.fennec ) {
|
||||||
@ -505,13 +521,7 @@ vAPI.tabs.getTabId = function(target) {
|
|||||||
tabId = '' + this.stackId++;
|
tabId = '' + this.stackId++;
|
||||||
this.stack.set(browser, tabId);
|
this.stack.set(browser, tabId);
|
||||||
|
|
||||||
if (!tab) {
|
this.tabLookup.set(tabId, tab || browser); // If the tab is not know, record the browser instead and find the tab later
|
||||||
tab = getTabForBrowser(browser);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (tab) {
|
|
||||||
this.tabLookup.set(tabId, tab);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
return tabId;
|
return tabId;
|
||||||
};
|
};
|
||||||
@ -519,7 +529,24 @@ vAPI.tabs.getTabId = function(target) {
|
|||||||
/******************************************************************************/
|
/******************************************************************************/
|
||||||
|
|
||||||
vAPI.tabs.tabFromTabId = function(tabId) {
|
vAPI.tabs.tabFromTabId = function(tabId) {
|
||||||
return this.tabLookup.get(tabId);
|
var target = this.tabLookup.get(tabId);
|
||||||
|
|
||||||
|
if (!target) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Check if this is actually a tab
|
||||||
|
if (vAPI.fennec && target.browser ||
|
||||||
|
target.linkedPanel) {
|
||||||
|
return target;
|
||||||
|
}
|
||||||
|
// This isn't a tab. No tab for this browser is yet known.
|
||||||
|
var tab = getTabForBrowser(target);
|
||||||
|
if (tab) {
|
||||||
|
// Found the tab now, so record it
|
||||||
|
this.tabLookup.set(tabId, tab);
|
||||||
|
}
|
||||||
|
return tab;
|
||||||
};
|
};
|
||||||
|
|
||||||
/******************************************************************************/
|
/******************************************************************************/
|
||||||
|
Loading…
Reference in New Issue
Block a user