mirror of
https://github.com/gorhill/uMatrix.git
synced 2024-06-14 08:15:03 +12:00
Changes following review
This commit is contained in:
parent
4f825399f6
commit
3607286a3e
|
@ -295,11 +295,9 @@ var windowWatcher = {
|
|||
if ( tabBrowser.deck ) {
|
||||
// Fennec
|
||||
tabContainer = tabBrowser.deck;
|
||||
tabContainer.addEventListener('DOMTitleChanged', tabWatcher.onFennecLocationChange);
|
||||
} else if ( tabBrowser.tabContainer ) {
|
||||
// desktop Firefox
|
||||
tabContainer = tabBrowser.tabContainer;
|
||||
tabBrowser.addTabsProgressListener(tabWatcher);
|
||||
vAPI.contextMenu.register(this.document);
|
||||
} else {
|
||||
return;
|
||||
|
@ -321,8 +319,6 @@ var windowWatcher = {
|
|||
/******************************************************************************/
|
||||
|
||||
var tabWatcher = {
|
||||
SAME_DOCUMENT: Ci.nsIWebProgressListener.LOCATION_CHANGE_SAME_DOCUMENT,
|
||||
|
||||
onTabClose: function({target}) {
|
||||
// target is tab in Firefox, browser in Fennec
|
||||
var tabId = vAPI.tabs.getTabId(target);
|
||||
|
@ -331,69 +327,9 @@ var tabWatcher = {
|
|||
},
|
||||
|
||||
onTabSelect: function({target}) {
|
||||
// target is tab in Firefox, browser in Fennec
|
||||
var browser = (target.linkedBrowser || target);
|
||||
var URI = browser.currentURI;
|
||||
var aboutPath = URI.schemeIs('about') && URI.path;
|
||||
var tabId = vAPI.tabs.getTabId(target);
|
||||
|
||||
if ( !aboutPath || (aboutPath !== 'blank' && aboutPath !== 'newtab') ) {
|
||||
vAPI.setIcon(tabId, getOwnerWindow(target));
|
||||
return;
|
||||
}
|
||||
|
||||
if ( browser.webNavigation.busyFlags === 0 || /*BUSY_FLAGS_NONE*/
|
||||
browser.webNavigation.busyFlags === undefined) {
|
||||
vAPI.tabs.onNavigation({
|
||||
frameId: 0,
|
||||
tabId: tabId,
|
||||
url: URI.asciiSpec
|
||||
});
|
||||
}
|
||||
vAPI.setIcon(vAPI.tabs.getTabId(target), getOwnerWindow(target));
|
||||
return;
|
||||
},
|
||||
|
||||
onLocationChange: function(browser, webProgress, request, location, flags) {
|
||||
if ( !webProgress.isTopLevel ) {
|
||||
return;
|
||||
}
|
||||
|
||||
var tabId = vAPI.tabs.getTabId(browser);
|
||||
|
||||
// LOCATION_CHANGE_SAME_DOCUMENT = "did not load a new document"
|
||||
if ( flags & this.SAME_DOCUMENT ) {
|
||||
vAPI.tabs.onUpdated(tabId, {url: location.asciiSpec}, {
|
||||
frameId: 0,
|
||||
tabId: tabId,
|
||||
url: browser.currentURI.asciiSpec
|
||||
});
|
||||
return;
|
||||
}
|
||||
|
||||
// https://github.com/gorhill/uBlock/issues/105
|
||||
// Allow any kind of pages
|
||||
vAPI.tabs.onNavigation({
|
||||
frameId: 0,
|
||||
tabId: tabId,
|
||||
url: location.asciiSpec
|
||||
});
|
||||
},
|
||||
|
||||
onFennecLocationChange: function({target: doc}) {
|
||||
// Fennec "equivalent" to onLocationChange
|
||||
// note that DOMTitleChanged is selected as it fires very early
|
||||
// (before DOMContentLoaded), and it does fire even if there is no title
|
||||
var win = doc.defaultView;
|
||||
if ( win !== win.top ) {
|
||||
return;
|
||||
}
|
||||
|
||||
vAPI.tabs.onNavigation({
|
||||
frameId: 0,
|
||||
tabId: vAPI.tabs.getTabId(getOwnerWindow(win).BrowserApp.getTabForWindow(win)),
|
||||
url: Services.io.newURI(win.location.href, null, null).asciiSpec
|
||||
});
|
||||
}
|
||||
|
||||
};
|
||||
|
||||
/******************************************************************************/
|
||||
|
@ -445,7 +381,6 @@ vAPI.tabs = {};
|
|||
/******************************************************************************/
|
||||
|
||||
vAPI.tabs.registerListeners = function() {
|
||||
// onNavigation and onUpdated handled with tabWatcher.onLocationChange
|
||||
// onClosed - handled in tabWatcher.onTabClose
|
||||
// onPopup - handled in httpObserver.handlePopup
|
||||
|
||||
|
@ -471,7 +406,6 @@ vAPI.tabs.registerListeners = function() {
|
|||
if ( tabBrowser.deck ) {
|
||||
// Fennec
|
||||
tabContainer = tabBrowser.deck;
|
||||
tabContainer.removeEventListener('DOMTitleChanged', tabWatcher.onFennecLocationChange);
|
||||
} else if ( tabBrowser.tabContainer ) {
|
||||
tabContainer = tabBrowser.tabContainer;
|
||||
tabBrowser.removeTabsProgressListener(tabWatcher);
|
||||
|
@ -1265,14 +1199,6 @@ var httpObserver = {
|
|||
return;
|
||||
}
|
||||
|
||||
if ( vAPI.fennec && lastRequest.type === this.MAIN_FRAME ) {
|
||||
vAPI.tabs.onNavigation({
|
||||
frameId: 0,
|
||||
tabId: lastRequest.tabId,
|
||||
url: URI.asciiSpec
|
||||
});
|
||||
}
|
||||
|
||||
// If request is not handled we may use the data in on-modify-request
|
||||
if ( channel instanceof Ci.nsIWritablePropertyBag ) {
|
||||
channel.setProperty(this.REQDATAKEY, [
|
||||
|
@ -1397,6 +1323,38 @@ vAPI.net.registerListeners = function() {
|
|||
shouldLoadListener
|
||||
);
|
||||
|
||||
var locationChangedListenerMessageName = location.host + ':locationChanged';
|
||||
var locationChangedListener = function(e) {
|
||||
var details = e.data;
|
||||
var browser = e.target;
|
||||
var tabId = vAPI.tabs.getTabId(browser);
|
||||
|
||||
//console.debug("nsIWebProgressListener: onLocationChange: " + details.url + " (" + details.flags + ")");
|
||||
|
||||
// LOCATION_CHANGE_SAME_DOCUMENT = "did not load a new document"
|
||||
if ( details.flags & Ci.nsIWebProgressListener.LOCATION_CHANGE_SAME_DOCUMENT ) {
|
||||
vAPI.tabs.onUpdated(tabId, {url: details.url}, {
|
||||
frameId: 0,
|
||||
tabId: tabId,
|
||||
url: browser.currentURI.asciiSpec
|
||||
});
|
||||
return;
|
||||
}
|
||||
|
||||
// https://github.com/gorhill/uBlock/issues/105
|
||||
// Allow any kind of pages
|
||||
vAPI.tabs.onNavigation({
|
||||
frameId: 0,
|
||||
tabId: tabId,
|
||||
url: details.url,
|
||||
});
|
||||
}
|
||||
|
||||
vAPI.messaging.globalMessageManager.addMessageListener(
|
||||
locationChangedListenerMessageName,
|
||||
locationChangedListener
|
||||
);
|
||||
|
||||
httpObserver.register();
|
||||
|
||||
cleanupTasks.push(function() {
|
||||
|
@ -1405,6 +1363,11 @@ vAPI.net.registerListeners = function() {
|
|||
shouldLoadListener
|
||||
);
|
||||
|
||||
vAPI.messaging.globalMessageManager.removeMessageListener(
|
||||
locationChangedListenerMessageName,
|
||||
locationChangedListener
|
||||
);
|
||||
|
||||
httpObserver.unregister();
|
||||
});
|
||||
};
|
||||
|
|
Loading…
Reference in a new issue