[mv3] Convert domain= to to= for csp=/permissions= options

Related discussion:
https://github.com/uBlockOrigin/uBOL-home/issues/156#issuecomment-2694741399
This commit is contained in:
Raymond Hill 2025-03-03 11:45:54 -05:00
parent b29ac98094
commit 1dbd280ba3
No known key found for this signature in database
GPG Key ID: 25E1490B761470C2
4 changed files with 21 additions and 3 deletions

View File

@ -89,7 +89,7 @@
},
"incognito": "split",
"manifest_version": 2,
"minimum_chrome_version": "80.0",
"minimum_chrome_version": "85.0",
"name": "uBlock Origin",
"options_ui": {
"page": "dashboard.html",

View File

@ -17,7 +17,7 @@
"browser_specific_settings": {
"gecko": {
"id": "uBlock0@raymondhill.net",
"strict_min_version": "78.0"
"strict_min_version": "79.0"
},
"gecko_android": {
"strict_min_version": "79.0"

View File

@ -88,7 +88,7 @@
},
"incognito": "split",
"manifest_version": 2,
"minimum_opera_version": "67.0",
"minimum_opera_version": "79.0",
"name": "uBlock Origin",
"options_page": "dashboard.html",
"permissions": [

View File

@ -4565,6 +4565,7 @@ StaticNetFilteringEngine.prototype.dnrFromCompiled = function(op, context, ...ar
// Patch modifier filters
for ( const rule of ruleset ) {
if ( rule.__modifierType === undefined ) { continue; }
let patchDomainOption = false;
switch ( rule.__modifierType ) {
case 'csp':
rule.action.type = 'modifyHeaders';
@ -4576,6 +4577,7 @@ StaticNetFilteringEngine.prototype.dnrFromCompiled = function(op, context, ...ar
if ( rule.__modifierAction === ALLOW_REALM ) {
dnrAddRuleError(rule, `Unsupported csp exception: ${rule.__modifierValue}`);
}
patchDomainOption = true;
break;
case 'permissions':
rule.action.type = 'modifyHeaders';
@ -4587,6 +4589,7 @@ StaticNetFilteringEngine.prototype.dnrFromCompiled = function(op, context, ...ar
if ( rule.__modifierAction === ALLOW_REALM ) {
dnrAddRuleError(rule, `Unsupported permissions exception: ${rule.__modifierValue}`);
}
patchDomainOption = true;
break;
case 'redirect-rule': {
let token = rule.__modifierValue;
@ -4689,6 +4692,21 @@ StaticNetFilteringEngine.prototype.dnrFromCompiled = function(op, context, ...ar
dnrAddRuleError(rule, `Unsupported modifier ${rule.__modifierType}`);
break;
}
// Some modifiers only work on document resources
// Related issue: https://github.com/uBlockOrigin/uBOL-home/issues/156
if ( patchDomainOption ) {
const domains = rule.condition.initiatorDomains;
if ( Array.isArray(domains) && domains.length !== 0 ) {
rule.condition.requestDomains ||= [];
rule.condition.requestDomains.push(...domains);
}
const notDomains = rule.condition.excludedInitiatorDomains;
if ( Array.isArray(notDomains) && notDomains.length !== 0 ) {
rule.condition.excludedRequestDomains ||= [];
rule.condition.excludedRequestDomains.push(...notDomains);
}
}
}
return {