1
0
Fork 0
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:
gorhill 2015-07-05 08:54:08 -04:00
parent 3d3673f163
commit f7a9ba851d

View file

@ -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;
}
}
};