From 22b390eb003df4208097cd8eb98c01c81783e2fa Mon Sep 17 00:00:00 2001 From: Raymond Hill Date: Sun, 22 Sep 2019 07:51:20 -0400 Subject: [PATCH] Fix case of unreported `:style` filters in logger As reported by https://github.com/uBlock-user, adding the two following filters: example.com##div:style(width: 1016px !important) example.com##div:style(display: block !important) The logger would report only one of the filter when navigating to https://example.com/ --- src/js/scriptlets/cosmetic-logger.js | 17 ++++++++++++----- 1 file changed, 12 insertions(+), 5 deletions(-) diff --git a/src/js/scriptlets/cosmetic-logger.js b/src/js/scriptlets/cosmetic-logger.js index 9af938969..6115da315 100644 --- a/src/js/scriptlets/cosmetic-logger.js +++ b/src/js/scriptlets/cosmetic-logger.js @@ -130,13 +130,15 @@ const processDeclarativeStyle = function(out) { declarativeStyleStr = safeGroupSelectors(declarativeStyleDict.keys()); } if ( document.querySelector(declarativeStyleStr) === null ) { return; } - for ( const [ selector, style ] of declarativeStyleDict ) { + for ( const selector of declarativeStyleDict.keys() ) { if ( safeQuerySelector(selector) === null ) { continue; } - const raw = `##${selector}:style(${style})`; - out.push(raw); + for ( const style of declarativeStyleDict.get(selector) ) { + const raw = `##${selector}:style(${style})`; + out.push(raw); + loggedSelectors.add(raw); + } declarativeStyleDict.delete(selector); declarativeStyleStr = undefined; - loggedSelectors.add(raw); } }; @@ -227,8 +229,13 @@ const handlers = { for ( const entry of (changes.declarative || []) ) { for ( let selector of entry[0].split(',\n') ) { if ( entry[1] !== 'display:none!important;' ) { - declarativeStyleDict.set(selector, entry[1]); declarativeStyleStr = undefined; + const styles = declarativeStyleDict.get(selector); + if ( styles === undefined ) { + declarativeStyleDict.set(selector, [ entry[1] ]); + continue; + } + styles.push(entry[1]); continue; } if ( loggedSelectors.has(selector) ) { continue; }