From 76d8b97869e500d5cb07644ec8fb395a8a040b91 Mon Sep 17 00:00:00 2001 From: Raymond Hill Date: Tue, 10 Jun 2025 14:57:41 -0400 Subject: [PATCH] [mv3] Collect/apply highly generic cosmetic exceptions across lists Related issues: - https://github.com/uBlockOrigin/uBOL-home/issues/365 - https://github.com/uBlockOrigin/uAssets/issues/28770 - https://github.com/uBlockOrigin/uAssets/issues/28129 --- platform/mv3/make-rulesets.js | 20 +++++++++++--------- 1 file changed, 11 insertions(+), 9 deletions(-) diff --git a/platform/mv3/make-rulesets.js b/platform/mv3/make-rulesets.js index 8a9b0c712..3a5ed2824 100644 --- a/platform/mv3/make-rulesets.js +++ b/platform/mv3/make-rulesets.js @@ -854,18 +854,18 @@ async function processGenericHighCosmeticFilters( .filter(a => a.key === undefined) .map(a => a.selector) ); + // https://github.com/uBlockOrigin/uBOL-home/issues/365 if ( genericExceptionList ) { - const genericExceptionSet = new Set( - genericExceptionList - .filter(a => a.key === undefined) - .map(a => a.selector) - ); - for ( const selector of genericExceptionSet ) { - if ( genericSelectorSet.has(selector) === false ) { continue; } - genericSelectorSet.delete(selector); - log(`\tRemoving excepted highly generic filter ##${selector}`); + for ( const entry of genericExceptionList ) { + if ( entry.key !== undefined ) { continue; } + globalHighlyGenericExceptionSet.add(entry.selector); } } + for ( const selector of globalHighlyGenericExceptionSet ) { + if ( genericSelectorSet.has(selector) === false ) { continue; } + genericSelectorSet.delete(selector); + log(`\tRemoving excepted highly generic filter ##${selector}`); + } if ( genericSelectorSet.size === 0 ) { return 0; } const selectorLists = Array.from(genericSelectorSet).sort().join(',\n'); const originalScriptletMap = await loadAllSourceScriptlets(); @@ -888,6 +888,8 @@ async function processGenericHighCosmeticFilters( return genericSelectorSet.size; } +const globalHighlyGenericExceptionSet = new Set(); + /******************************************************************************/ // This merges selectors which are used by the same hostnames