Skip to content

Commit

Permalink
Convert new setTimeout-if scriptlet to blacklist approach
Browse files Browse the repository at this point in the history
As per feedback from filter list maintainers, the
whitelist approach has been deemed to confusing.

The scriptlet has been renamed `no-setTimeout-if`
alias `nostif` to reflect the blacklist approach.

`setInterval-if` has been Similarly changed to
`no-setInterval-if` alias `nosiif`.
  • Loading branch information
gorhill committed Sep 15, 2019
1 parent df49616 commit 9367a60
Show file tree
Hide file tree
Showing 2 changed files with 23 additions and 27 deletions.
28 changes: 12 additions & 16 deletions assets/resources/scriptlets.js
Original file line number Diff line number Diff line change
Expand Up @@ -582,8 +582,8 @@
})();


/// setInterval-if.js
/// alias siif.js
/// no-setInterval-if.js
/// alias nosiif.js
(function() {
let needle = '{{1}}';
const needleNot = needle.charAt(0) === '!';
Expand Down Expand Up @@ -611,14 +611,12 @@
let defuse = false;
if ( log !== undefined ) {
log('uBO: setInterval("%s", %s)', a, b);
} else if ( needle === '' && needleNot || isNaN(delay) && delayNot ) {
defuse = true;
} else if ( isNaN(delay) ) {
defuse = reNeedle.test(a) === needleNot;
defuse = reNeedle.test(a) !== needleNot;
} else if ( needle === '' ) {
defuse = (b === delay) === delayNot;
} else if ( reNeedle.test(a) === needleNot || (b === delay) === delayNot ) {
defuse = true;
defuse = (b === delay) !== delayNot;
} else {
defuse = reNeedle.test(a) !== needleNot && (b === delay) !== delayNot;
}
if ( defuse ) {
args[0] = function(){};
Expand Down Expand Up @@ -655,8 +653,8 @@
})();


/// setTimeout-if.js
/// alias stif.js
/// no-setTimeout-if.js
/// alias nostif.js
(function() {
let needle = '{{1}}';
const needleNot = needle.charAt(0) === '!';
Expand Down Expand Up @@ -684,14 +682,12 @@
let defuse = false;
if ( log !== undefined ) {
log('uBO: setTimeout("%s", %s)', a, b);
} else if ( needle === '' && needleNot || isNaN(delay) && delayNot ) {
defuse = true;
} else if ( isNaN(delay) ) {
defuse = reNeedle.test(a) === needleNot;
defuse = reNeedle.test(a) !== needleNot;
} else if ( needle === '' ) {
defuse = (b === delay) === delayNot;
} else if ( reNeedle.test(a) === needleNot || (b === delay) === delayNot ) {
defuse = true;
defuse = (b === delay) !== delayNot;
} else {
defuse = reNeedle.test(a) !== needleNot && (b === delay) !== delayNot;
}
if ( defuse ) {
args[0] = function(){};
Expand Down
22 changes: 11 additions & 11 deletions docs/tests/scriptlet-injection-filters-1.html
Original file line number Diff line number Diff line change
Expand Up @@ -162,21 +162,21 @@ <h3>Results</h3>
const hostname = self.location.hostname;
const fragment = document.createDocumentFragment();
const filters = [
[ [ '!bad' ], 'GGGG' ],
[ [ 'good' ], 'GGGG' ],
[ [ '', '!33' ], 'GRRG' ],
[ [ '', '66' ], 'GRRG' ],
[ [ '!bad', '!33' ], 'GGRG' ],
[ [ 'good', '66' ], 'GGRG' ],
[ [ '!bad', '33' ], 'GGGR' ],
[ [ 'good', '!66' ], 'GGGR' ],
[ [ 'bad', '!33' ], 'GRRR' ],
[ [ '!good', '66' ], 'GRRR' ],
[ [ 'bad' ], 'GGGG' ],
[ [ '!good' ], 'GGGG' ],
[ [ '', '33' ], 'GRRG' ],
[ [ '', '!66' ], 'GRRG' ],
[ [ 'bad', '33' ], 'GRGG' ],
[ [ '!good', '!66' ], 'GRGG' ],
[ [ 'bad', '!33' ], 'RGGG' ],
[ [ '!good', '66' ], 'RGGG' ],
[ [ '!bad', '33' ], 'RRRG' ],
[ [ 'good', '!66' ], 'RRRG' ],
];
for ( const [ args, result ] of filters ) {
const tr = document.createElement('tr');
let td = document.createElement('td');
td.textContent = `${hostname}##+js(stif, ${args.join(', ')})`;
td.textContent = `${hostname}##+js(nostif, ${args.join(', ')})`;
tr.appendChild(td);
td = document.createElement('td');
for ( let i = 0; i < result.length; i++ ) {
Expand Down

0 comments on commit 9367a60

Please sign in to comment.