diff --git a/assets/resources/scriptlets.js b/assets/resources/scriptlets.js index 8cd1aa2e9..df6c449fe 100644 --- a/assets/resources/scriptlets.js +++ b/assets/resources/scriptlets.js @@ -158,7 +158,7 @@ function safeSelf() { }; if ( scriptletGlobals.bcSecret !== undefined ) { const bc = new self.BroadcastChannel(scriptletGlobals.bcSecret); - safe.logLevel = 1; + safe.logLevel = scriptletGlobals.logLevel || 1; safe.sendToLogger = (type, ...args) => { if ( args.length === 0 ) { return; } const text = `[${document.location.hostname || document.location.href}]${args.join(' ')}`; @@ -692,7 +692,10 @@ function replaceNodeTextFn( ? before.replace(rePattern, replacement) : replacement; node.textContent = after; - safe.uboLog(logPrefix, `Replace result:\n${after.trim()}`); + if ( safe.logLevel > 1 ) { + safe.uboLog(logPrefix, `Text before:\n${before.trim()}`); + } + safe.uboLog(logPrefix, `Text after:\n${after.trim()}`); return sedCount === 0 || (sedCount -= 1) !== 0; }; const handleMutations = mutations => { diff --git a/src/js/logger-ui.js b/src/js/logger-ui.js index 8c08676fa..288789220 100644 --- a/src/js/logger-ui.js +++ b/src/js/logger-ui.js @@ -21,7 +21,7 @@ 'use strict'; -import webext from './webext.js'; +import { broadcast } from './broadcast.js'; import { hostnameFromURI } from './uri-utils.js'; import { i18n, i18n$ } from './i18n.js'; import { dom, qs$, qsa$ } from './dom.js'; @@ -3043,20 +3043,7 @@ dom.on('#pause', 'click', pauseNetInspector); dom.on('#logLevel', 'click', ev => { const level = dom.cl.toggle(ev.currentTarget, 'active') ? 2 : 1; - webext.tabs.query({ - discarded: false, - url: [ 'http://*/*', 'https://*/*' ], - }).then(tabs => { - for ( const tab of tabs ) { - const { status } = tab; - if ( status !== 'loading' && status !== 'complete' ) { continue; } - webext.tabs.executeScript(tab.id, { - allFrames: true, - file: `/js/scriptlets/scriptlet-loglevel-${level}.js`, - matchAboutBlank: true, - }); - } - }); + broadcast({ what: 'loggerLevelChanged', level }); }); dom.on('#netInspector', 'copy', ev => { diff --git a/src/js/scriptlet-filtering.js b/src/js/scriptlet-filtering.js index 02ba07bb1..764e340a9 100644 --- a/src/js/scriptlet-filtering.js +++ b/src/js/scriptlet-filtering.js @@ -210,6 +210,7 @@ export class ScriptletFilteringEngineEx extends ScriptletFilteringEngine { this.warSecret = undefined; this.scriptletCache = new MRUCache(32); this.isDevBuild = undefined; + this.logLevel = 1; this.bc = onBroadcast(msg => { switch ( msg.what ) { case 'filteringBehaviorChanged': { @@ -226,8 +227,25 @@ export class ScriptletFilteringEngineEx extends ScriptletFilteringEngine { /* fall through */ case 'loggerEnabled': case 'loggerDisabled': - this.scriptletCache.reset(); - contentScriptRegisterer.reset(); + this.clearCache(); + break; + case 'loggerLevelChanged': + this.logLevel = msg.level; + vAPI.tabs.query({ + discarded: false, + url: [ 'http://*/*', 'https://*/*' ], + }).then(tabs => { + for ( const tab of tabs ) { + const { status } = tab; + if ( status !== 'loading' && status !== 'complete' ) { continue; } + vAPI.tabs.executeScript(tab.id, { + allFrames: true, + file: `/js/scriptlets/scriptlet-loglevel-${this.logLevel}.js`, + matchAboutBlank: true, + }); + } + }); + this.clearCache(); break; } }); @@ -247,6 +265,11 @@ export class ScriptletFilteringEngineEx extends ScriptletFilteringEngine { contentScriptRegisterer.reset(); } + clearCache() { + this.scriptletCache.reset(); + contentScriptRegisterer.reset(); + } + retrieve(request) { const { hostname } = request; @@ -289,6 +312,7 @@ export class ScriptletFilteringEngineEx extends ScriptletFilteringEngine { }; if ( logger.enabled ) { options.scriptletGlobals.bcSecret = bcSecret; + options.scriptletGlobals.logLevel = this.logLevel; } scriptletDetails = super.retrieve(request, options);