1
0
mirror of https://github.com/gorhill/uBlock.git synced 2024-09-14 23:12:28 +02:00

Remove obsolete code to translate |blob: filters into CSP filters

These filters are to be considered obsolete since they can't be
matched against network requests in the webRequest API.

They were probably meant to work when ABP was pre-webext, which
means they are quite probably obsolete and there is no longer
a point for uBO to conveniently translate them into CSP directives.
This commit is contained in:
Raymond Hill 2019-02-16 19:25:15 -05:00
parent e93062bcdf
commit d63592b11e
No known key found for this signature in database
GPG Key ID: 25E1490B761470C2

View File

@ -1593,96 +1593,6 @@ FilterParser.prototype.parseOptions = function(s) {
}
};
/******************************************************************************/
// https://github.com/gorhill/uBlock/issues/1943#issuecomment-243188946
// Convert websocket-related filter where possible to a format which
// can be handled using CSP injection.
FilterParser.prototype.translate = function() {
var dataTypeBit = this.bitFromType('data');
if ( this.cantWebsocket && this.reWebsocketAny.test(this.f) ) {
this.f = '*';
this.types = dataTypeBit;
this.dataType = 'csp';
this.dataStr = "connect-src https: http:";
// https://bugs.chromium.org/p/chromium/issues/detail?id=669086
// TODO: remove when most users are beyond Chromium v56
if (
vAPI.webextFlavor.soup.has('chromium') &&
vAPI.webextFlavor.major < 57
) {
this.dataStr += '; frame-src *';
}
return;
}
// Broad |data:-based filters.
if ( this.f === 'data:' ) {
switch ( this.types ) {
case 0:
this.f = '*';
this.types = dataTypeBit;
this.dataType = 'csp';
this.dataStr = "default-src 'self' * blob: 'unsafe-inline' 'unsafe-eval'";
break;
case this.bitFromType('script'):
this.f = '*';
this.types = dataTypeBit;
this.dataType = 'csp';
this.dataStr = "script-src 'self' * blob: 'unsafe-inline' 'unsafe-eval'";
break;
case this.bitFromType('sub_frame'):
this.f = '*';
this.types = dataTypeBit;
this.dataType = 'csp';
this.dataStr = "frame-src 'self' * blob:";
break;
case this.bitFromType('script') | this.bitFromType('sub_frame'):
this.f = '*';
this.types = dataTypeBit;
this.dataType = 'csp';
this.dataStr = "frame-src 'self' * blob:; script-src 'self' * blob: 'unsafe-inline' 'unsafe-eval';";
break;
default:
break;
}
}
// Broad |blob:-based filters.
if ( this.f === 'blob:' ) {
switch ( this.types ) {
case 0:
this.f = '*';
this.types = dataTypeBit;
this.dataType = 'csp';
this.dataStr = "default-src 'self' * data: 'unsafe-inline' 'unsafe-eval'";
break;
case this.bitFromType('script'):
this.f = '*';
this.types = dataTypeBit;
this.dataType = 'csp';
this.dataStr = "script-src 'self' * data: 'unsafe-inline' 'unsafe-eval'";
break;
case this.bitFromType('sub_frame'):
this.f = '*';
this.types = dataTypeBit;
this.dataType = 'csp';
this.dataStr = "frame-src 'self' * data:";
break;
case this.bitFromType('script') | this.bitFromType('sub_frame'):
this.f = '*';
this.types = dataTypeBit;
this.dataType = 'csp';
this.dataStr = "frame-src 'self' * data:; script-src 'self' * data: 'unsafe-inline' 'unsafe-eval';";
break;
default:
break;
}
}
};
/*******************************************************************************
anchor: bit vector
@ -1851,13 +1761,6 @@ FilterParser.prototype.parse = function(raw) {
this.f = this.reHasUppercase.test(s) ? s.toLowerCase() : s;
// Convenience:
// Convert special broad filters for non-webRequest aware types into
// `csp` filters wherever possible.
if ( this.anchor & 0x2 && this.party === 0 ) {
this.translate();
}
return this;
};