|
|
|
@ -645,7 +645,7 @@ vAPI.tabs._remove = function(tab, tabBrowser) {
|
|
|
|
|
|
|
|
|
|
/******************************************************************************/
|
|
|
|
|
|
|
|
|
|
vAPI.tabs.remove = function(tabIds) {
|
|
|
|
|
vAPI.tabs.remove = function(tabId) {
|
|
|
|
|
var browser = tabWatcher.browserFromTabId(tabId);
|
|
|
|
|
if ( !browser ) {
|
|
|
|
|
return;
|
|
|
|
@ -841,7 +841,13 @@ var tabWatcher = (function() {
|
|
|
|
|
|
|
|
|
|
var currentBrowser = function() {
|
|
|
|
|
var win = Services.wm.getMostRecentWindow('navigator:browser');
|
|
|
|
|
return browserFromTarget(getTabBrowser(win).selectedTab);
|
|
|
|
|
// https://github.com/gorhill/uBlock/issues/399
|
|
|
|
|
// getTabBrowser() can return null at browser launch time.
|
|
|
|
|
var tabBrowser = getTabBrowser(win);
|
|
|
|
|
if ( tabBrowser === null ) {
|
|
|
|
|
return null;
|
|
|
|
|
}
|
|
|
|
|
return browserFromTarget(tabBrowser.selectedTab);
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
var removeBrowserEntry = function(tabId, browser) {
|
|
|
|
@ -900,11 +906,7 @@ var tabWatcher = (function() {
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
var tabContainer;
|
|
|
|
|
if ( tabBrowser.deck ) {
|
|
|
|
|
// Fennec
|
|
|
|
|
tabContainer = tabBrowser.deck;
|
|
|
|
|
} else if ( tabBrowser.tabContainer ) {
|
|
|
|
|
// desktop Firefox
|
|
|
|
|
if ( tabBrowser.tabContainer ) {
|
|
|
|
|
tabContainer = tabBrowser.tabContainer;
|
|
|
|
|
vAPI.contextMenu.register(this.document);
|
|
|
|
|
} else {
|
|
|
|
@ -928,10 +930,7 @@ var tabWatcher = (function() {
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
var tabContainer = null;
|
|
|
|
|
if ( tabBrowser.deck ) {
|
|
|
|
|
// Fennec
|
|
|
|
|
tabContainer = tabBrowser.deck;
|
|
|
|
|
} else if ( tabBrowser.tabContainer ) {
|
|
|
|
|
if ( tabBrowser.tabContainer ) {
|
|
|
|
|
tabContainer = tabBrowser.tabContainer;
|
|
|
|
|
}
|
|
|
|
|
if ( tabContainer ) {
|
|
|
|
@ -941,7 +940,6 @@ var tabWatcher = (function() {
|
|
|
|
|
tabContainer.removeEventListener('TabSelect', onSelect);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// Close extension tabs
|
|
|
|
|
var browser, URI, tabId;
|
|
|
|
|
for ( var tab of tabBrowser.tabs ) {
|
|
|
|
|
browser = tabWatcher.browserFromTarget(tab);
|
|
|
|
@ -949,12 +947,14 @@ var tabWatcher = (function() {
|
|
|
|
|
continue;
|
|
|
|
|
}
|
|
|
|
|
URI = browser.currentURI;
|
|
|
|
|
// Close extension tabs
|
|
|
|
|
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);
|
|
|
|
|
tabIdToBrowserMap.delete(tabId);
|
|
|
|
|
}
|
|
|
|
|
browserToTabIdMap.delete(browser);
|
|
|
|
@ -966,6 +966,11 @@ var tabWatcher = (function() {
|
|
|
|
|
observe: function(win, topic) {
|
|
|
|
|
if ( topic === 'domwindowopened' ) {
|
|
|
|
|
win.addEventListener('DOMContentLoaded', onWindowLoad);
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
if ( topic === 'domwindowclosed' ) {
|
|
|
|
|
onWindowUnload.call(win);
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
};
|
|
|
|
|