mirror of
https://github.com/gorhill/uBlock.git
synced 2024-10-06 09:37:12 +02:00
Add support to compare delay against literal Number.NaN in nossif/nostif
Related issue: - https://github.com/uBlockOrigin/uBlock-issues/issues/1136
This commit is contained in:
parent
dd6f41aaa9
commit
8f3d8cde7a
@ -705,9 +705,13 @@
|
|||||||
const needleNot = needle.charAt(0) === '!';
|
const needleNot = needle.charAt(0) === '!';
|
||||||
if ( needleNot ) { needle = needle.slice(1); }
|
if ( needleNot ) { needle = needle.slice(1); }
|
||||||
let delay = '{{2}}';
|
let delay = '{{2}}';
|
||||||
const delayNot = delay.charAt(0) === '!';
|
if ( delay === '{{2}}' ) { delay = undefined; }
|
||||||
|
let delayNot = false;
|
||||||
|
if ( delay !== undefined ) {
|
||||||
|
delayNot = delay.charAt(0) === '!';
|
||||||
if ( delayNot ) { delay = delay.slice(1); }
|
if ( delayNot ) { delay = delay.slice(1); }
|
||||||
delay = parseInt(delay, 10);
|
delay = parseInt(delay, 10);
|
||||||
|
}
|
||||||
if ( needle === '' || needle === '{{1}}' ) {
|
if ( needle === '' || needle === '{{1}}' ) {
|
||||||
needle = '';
|
needle = '';
|
||||||
} else if ( needle.startsWith('/') && needle.endsWith('/') ) {
|
} else if ( needle.startsWith('/') && needle.endsWith('/') ) {
|
||||||
@ -715,8 +719,7 @@
|
|||||||
} else {
|
} else {
|
||||||
needle = needle.replace(/[.*+?^${}()|[\]\\]/g, '\\$&');
|
needle = needle.replace(/[.*+?^${}()|[\]\\]/g, '\\$&');
|
||||||
}
|
}
|
||||||
const log = needleNot === false && needle === '' &&
|
const log = needleNot === false && needle === '' && delay === undefined
|
||||||
delayNot === false && isNaN(delay)
|
|
||||||
? console.log
|
? console.log
|
||||||
: undefined;
|
: undefined;
|
||||||
const reNeedle = new RegExp(needle);
|
const reNeedle = new RegExp(needle);
|
||||||
@ -724,19 +727,20 @@
|
|||||||
apply: function(target, thisArg, args) {
|
apply: function(target, thisArg, args) {
|
||||||
const a = String(args[0]);
|
const a = String(args[0]);
|
||||||
const b = args[1];
|
const b = args[1];
|
||||||
let defuse = false;
|
|
||||||
if ( log !== undefined ) {
|
if ( log !== undefined ) {
|
||||||
log('uBO: setInterval("%s", %s)', a, b);
|
log('uBO: setInterval("%s", %s)', a, b);
|
||||||
} else if ( isNaN(delay) ) {
|
|
||||||
defuse = reNeedle.test(a) !== needleNot;
|
|
||||||
} else if ( needle === '' ) {
|
|
||||||
defuse = (b === delay) !== delayNot;
|
|
||||||
} else {
|
} else {
|
||||||
defuse = reNeedle.test(a) !== needleNot && (b === delay) !== delayNot;
|
let defuse;
|
||||||
|
if ( needle !== '' ) {
|
||||||
|
defuse = reNeedle.test(a) !== needleNot;
|
||||||
|
}
|
||||||
|
if ( defuse !== false && delay !== undefined ) {
|
||||||
|
defuse = (b === delay || isNaN(b) && isNaN(delay) ) !== delayNot;
|
||||||
}
|
}
|
||||||
if ( defuse ) {
|
if ( defuse ) {
|
||||||
args[0] = function(){};
|
args[0] = function(){};
|
||||||
}
|
}
|
||||||
|
}
|
||||||
return target.apply(thisArg, args);
|
return target.apply(thisArg, args);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
@ -776,9 +780,13 @@
|
|||||||
const needleNot = needle.charAt(0) === '!';
|
const needleNot = needle.charAt(0) === '!';
|
||||||
if ( needleNot ) { needle = needle.slice(1); }
|
if ( needleNot ) { needle = needle.slice(1); }
|
||||||
let delay = '{{2}}';
|
let delay = '{{2}}';
|
||||||
const delayNot = delay.charAt(0) === '!';
|
if ( delay === '{{2}}' ) { delay = undefined; }
|
||||||
|
let delayNot = false;
|
||||||
|
if ( delay !== undefined ) {
|
||||||
|
delayNot = delay.charAt(0) === '!';
|
||||||
if ( delayNot ) { delay = delay.slice(1); }
|
if ( delayNot ) { delay = delay.slice(1); }
|
||||||
delay = parseInt(delay, 10);
|
delay = parseInt(delay, 10);
|
||||||
|
}
|
||||||
if ( needle === '' || needle === '{{1}}' ) {
|
if ( needle === '' || needle === '{{1}}' ) {
|
||||||
needle = '';
|
needle = '';
|
||||||
} else if ( needle.startsWith('/') && needle.endsWith('/') ) {
|
} else if ( needle.startsWith('/') && needle.endsWith('/') ) {
|
||||||
@ -786,8 +794,7 @@
|
|||||||
} else {
|
} else {
|
||||||
needle = needle.replace(/[.*+?^${}()|[\]\\]/g, '\\$&');
|
needle = needle.replace(/[.*+?^${}()|[\]\\]/g, '\\$&');
|
||||||
}
|
}
|
||||||
const log = needleNot === false && needle === '' &&
|
const log = needleNot === false && needle === '' && delay === undefined
|
||||||
delayNot === false && isNaN(delay)
|
|
||||||
? console.log
|
? console.log
|
||||||
: undefined;
|
: undefined;
|
||||||
const reNeedle = new RegExp(needle);
|
const reNeedle = new RegExp(needle);
|
||||||
@ -795,19 +802,20 @@
|
|||||||
apply: function(target, thisArg, args) {
|
apply: function(target, thisArg, args) {
|
||||||
const a = String(args[0]);
|
const a = String(args[0]);
|
||||||
const b = args[1];
|
const b = args[1];
|
||||||
let defuse = false;
|
|
||||||
if ( log !== undefined ) {
|
if ( log !== undefined ) {
|
||||||
log('uBO: setTimeout("%s", %s)', a, b);
|
log('uBO: setTimeout("%s", %s)', a, b);
|
||||||
} else if ( isNaN(delay) ) {
|
|
||||||
defuse = reNeedle.test(a) !== needleNot;
|
|
||||||
} else if ( needle === '' ) {
|
|
||||||
defuse = (b === delay) !== delayNot;
|
|
||||||
} else {
|
} else {
|
||||||
defuse = reNeedle.test(a) !== needleNot && (b === delay) !== delayNot;
|
let defuse;
|
||||||
|
if ( needle !== '' ) {
|
||||||
|
defuse = reNeedle.test(a) !== needleNot;
|
||||||
|
}
|
||||||
|
if ( defuse !== false && delay !== undefined ) {
|
||||||
|
defuse = (b === delay || isNaN(b) && isNaN(delay) ) !== delayNot;
|
||||||
}
|
}
|
||||||
if ( defuse ) {
|
if ( defuse ) {
|
||||||
args[0] = function(){};
|
args[0] = function(){};
|
||||||
}
|
}
|
||||||
|
}
|
||||||
return target.apply(thisArg, args);
|
return target.apply(thisArg, args);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
Loading…
Reference in New Issue
Block a user