mirror of
https://github.com/gorhill/uMatrix.git
synced 2024-06-01 18:10:17 +12:00
code review: importing uBlock's fixes
This commit is contained in:
parent
3d3673f163
commit
f7a9ba851d
|
@ -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;
|
||||
}
|
||||
}
|
||||
};
|
||||
|
|
Loading…
Reference in a new issue