1
0
Fork 0
mirror of https://github.com/gorhill/uMatrix.git synced 2024-06-29 11:30:20 +12:00

Firefox: block popups earlier

This commit is contained in:
Deathamns 2015-03-02 18:36:04 +01:00 committed by gorhill
parent 6c4428ff73
commit ef9301276c

View file

@ -1052,14 +1052,7 @@ var httpObserver = {
12: 'object', 12: 'object',
14: 'font' 14: 'font'
}, },
lastRequest: { lastRequest: [{}, {}],
url: null,
type: null,
tabId: null,
frameId: null,
parentFrameId: null,
openerURL: null
},
get componentRegistrar() { get componentRegistrar() {
return Components.manager.QueryInterface(Ci.nsIComponentRegistrar); return Components.manager.QueryInterface(Ci.nsIComponentRegistrar);
@ -1238,12 +1231,21 @@ var httpObserver = {
// http-on-opening-request // http-on-opening-request
var lastRequest = this.lastRequest; var lastRequest = this.lastRequest[0];
if ( lastRequest.url !== URI.spec ) {
if ( this.lastRequest[1].url === URI.spec ) {
lastRequest = this.lastRequest[1];
} else {
lastRequest.url = null;
}
}
if ( lastRequest.url === null ) { if ( lastRequest.url === null ) {
lastRequest.type = channel.loadInfo && channel.loadInfo.contentPolicyType || 1;
result = this.handleRequest(channel, URI, { result = this.handleRequest(channel, URI, {
tabId: vAPI.noTabId, tabId: vAPI.noTabId,
type: channel.loadInfo && channel.loadInfo.contentPolicyType type: lastRequest.type
}); });
if ( result === true ) { if ( result === true ) {
@ -1255,14 +1257,10 @@ var httpObserver = {
} }
// Carry data for behind-the-scene redirects // Carry data for behind-the-scene redirects
channelData = [ channel.setProperty(
channel.loadInfo && channel.loadInfo.contentPolicyType || 1, this.REQDATAKEY,
vAPI.noTabId, [lastRequest.type, vAPI.noTabId, null, 0, -1]
null, );
0,
-1
];
channel.setProperty(this.REQDATAKEY, channelData);
return; return;
} }
@ -1311,14 +1309,13 @@ var httpObserver = {
// If request is not handled we may use the data in on-modify-request // If request is not handled we may use the data in on-modify-request
if ( channel instanceof Ci.nsIWritablePropertyBag ) { if ( channel instanceof Ci.nsIWritablePropertyBag ) {
channelData = [ channel.setProperty(this.REQDATAKEY, [
lastRequest.type, lastRequest.type,
lastRequest.tabId, lastRequest.tabId,
sourceTabId, sourceTabId,
lastRequest.frameId, lastRequest.frameId,
lastRequest.parentFrameId lastRequest.parentFrameId
]; ]);
channel.setProperty(this.REQDATAKEY, channelData);
} }
}, },
@ -1385,12 +1382,15 @@ vAPI.net.registerListeners = function() {
var shouldLoadListener = function(e) { var shouldLoadListener = function(e) {
var details = e.data; var details = e.data;
var lastRequest = httpObserver.lastRequest; var lastRequest = httpObserver.lastRequest;
lastRequest.url = details.url; lastRequest[1] = lastRequest[0];
lastRequest.type = details.type; lastRequest[0] = {
lastRequest.tabId = vAPI.tabs.getTabId(e.target); url: details.url,
lastRequest.frameId = details.frameId; type: details.type,
lastRequest.parentFrameId = details.parentFrameId; tabId: vAPI.tabs.getTabId(e.target),
lastRequest.openerURL = details.openerURL; frameId: details.frameId,
parentFrameId: details.parentFrameId,
openerURL: details.openerURL
};
}; };
vAPI.messaging.globalMessageManager.addMessageListener( vAPI.messaging.globalMessageManager.addMessageListener(