From 58f5c53fbbf3e8173a84bd49ff38846f739f9346 Mon Sep 17 00:00:00 2001 From: Raymond Hill Date: Mon, 5 May 2025 08:04:21 -0400 Subject: [PATCH] [mv3] Fix strict-block exceptions caused duplicate rule ids Related issue: https://github.com/uBlockOrigin/uBOL-home/issues/304 --- platform/mv3/extension/js/ruleset-manager.js | 18 +++++++++++++----- 1 file changed, 13 insertions(+), 5 deletions(-) diff --git a/platform/mv3/extension/js/ruleset-manager.js b/platform/mv3/extension/js/ruleset-manager.js index 1b52ca4a5..0bcf23fb4 100644 --- a/platform/mv3/extension/js/ruleset-manager.js +++ b/platform/mv3/extension/js/ruleset-manager.js @@ -49,10 +49,18 @@ let sessionRegexCount = 0; const isStrictBlockRule = rule => { if ( rule.priority !== STRICTBLOCK_PRIORITY ) { return false; } - if ( rule.action.type !== 'redirect' ) { return false; } - const substitution = rule.action.redirect.regexSubstitution; - return substitution !== undefined && - substitution.includes('/strictblock.'); + if ( rule.condition?.resourceTypes === undefined ) { return false; } + if ( rule.condition.resourceTypes.length !== 1 ) { return false; } + if ( rule.condition.resourceTypes[0] !== 'main_frame' ) { return false; } + if ( rule.action.type === 'redirect' ) { + const substitution = rule.action.redirect.regexSubstitution; + return substitution !== undefined && + substitution.includes('/strictblock.'); + } + if ( rule.action.type === 'allow' ) { + return Array.isArray(rule.condition?.requestDomains); + } + return false; }; /******************************************************************************/ @@ -365,7 +373,7 @@ async function updateStrictBlockRules(currentRules, addRules, removeRuleIds) { const allExcluded = permanentlyExcluded.concat(temporarilyExcluded); if ( allExcluded.length === 0 ) { return; } - addRules.push({ + addRules.unshift({ action: { type: 'allow' }, condition: { requestDomains: allExcluded,