mirror of https://github.com/gorhill/uBlock.git
this fixes 1d448b85b2 (commitcomment-14944764)
This commit is contained in:
parent
dfdd5a10f3
commit
945a8a999a
|
@ -516,6 +516,22 @@ vAPI.tabs.onPopupUpdated = (function() {
|
||||||
// remember whether a popup or popunder was matched.
|
// remember whether a popup or popunder was matched.
|
||||||
var context = {};
|
var context = {};
|
||||||
|
|
||||||
|
// https://github.com/gorhill/uBlock/commit/1d448b85b2931412508aa01bf899e0b6f0033626#commitcomment-14944764
|
||||||
|
// See if two URLs are different, disregarding scheme -- because the scheme
|
||||||
|
// can be unilaterally changed by the browser.
|
||||||
|
var areDifferentURLs = function(a, b) {
|
||||||
|
var pos = a.indexOf('://');
|
||||||
|
if ( pos === -1 ) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
a = a.slice(pos);
|
||||||
|
pos = b.indexOf('://');
|
||||||
|
if ( pos === -1 ) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
return b.slice(pos) !== a;
|
||||||
|
};
|
||||||
|
|
||||||
var popupMatch = function(openerURL, targetURL, clickedURL, popupType) {
|
var popupMatch = function(openerURL, targetURL, clickedURL, popupType) {
|
||||||
var openerHostname = µb.URI.hostnameFromURI(openerURL);
|
var openerHostname = µb.URI.hostnameFromURI(openerURL);
|
||||||
var openerDomain = µb.URI.domainFromHostname(openerHostname);
|
var openerDomain = µb.URI.domainFromHostname(openerHostname);
|
||||||
|
@ -529,12 +545,19 @@ vAPI.tabs.onPopupUpdated = (function() {
|
||||||
context.requestHostname = µb.URI.hostnameFromURI(targetURL);
|
context.requestHostname = µb.URI.hostnameFromURI(targetURL);
|
||||||
context.requestType = 'popup';
|
context.requestType = 'popup';
|
||||||
|
|
||||||
|
// https://github.com/gorhill/uBlock/commit/1d448b85b2931412508aa01bf899e0b6f0033626#commitcomment-14944764
|
||||||
|
// Ignore bad target URL. On Firefox, an `about:blank` tab may be
|
||||||
|
// opened for a new tab before it is filled in with the real target URL.
|
||||||
|
if ( context.requestHostname === '' ) {
|
||||||
|
return '';
|
||||||
|
}
|
||||||
|
|
||||||
// Dynamic filtering makes sense only when we have a valid hostname.
|
// Dynamic filtering makes sense only when we have a valid hostname.
|
||||||
if ( openerHostname !== '' ) {
|
if ( openerHostname !== '' ) {
|
||||||
// Check user switch first
|
// Check user switch first
|
||||||
if (
|
if (
|
||||||
popupType !== 'popunder' &&
|
popupType !== 'popunder' &&
|
||||||
targetURL !== clickedURL &&
|
areDifferentURLs(targetURL, clickedURL) &&
|
||||||
µb.hnSwitches.evaluateZ('no-popups', openerHostname)
|
µb.hnSwitches.evaluateZ('no-popups', openerHostname)
|
||||||
) {
|
) {
|
||||||
return 'ub:no-popups: ' + µb.hnSwitches.z + ' true';
|
return 'ub:no-popups: ' + µb.hnSwitches.z + ' true';
|
||||||
|
@ -609,7 +632,7 @@ vAPI.tabs.onPopupUpdated = (function() {
|
||||||
// Popunder test. Ignore if the target URL was opened by clicking on
|
// Popunder test. Ignore if the target URL was opened by clicking on
|
||||||
// a link, or else this could prevent opening a legitimate site for
|
// a link, or else this could prevent opening a legitimate site for
|
||||||
// which there is a very broad popunder filter.
|
// which there is a very broad popunder filter.
|
||||||
if ( result === '' && targetURL !== µb.mouseURL ) {
|
if ( result === '' && areDifferentURLs(targetURL, µb.mouseURL) ) {
|
||||||
var tmp = openerTabId; openerTabId = targetTabId; targetTabId = tmp;
|
var tmp = openerTabId; openerTabId = targetTabId; targetTabId = tmp;
|
||||||
popupType = 'popunder';
|
popupType = 'popunder';
|
||||||
result = popupMatch(targetURL, openerURL, µb.mouseURL, popupType);
|
result = popupMatch(targetURL, openerURL, µb.mouseURL, popupType);
|
||||||
|
|
Loading…
Reference in New Issue