diff options
Diffstat (limited to 'platform/mv3/extension/js/background.js')
-rw-r--r-- | platform/mv3/extension/js/background.js | 68 |
1 files changed, 47 insertions, 21 deletions
diff --git a/platform/mv3/extension/js/background.js b/platform/mv3/extension/js/background.js index 5ceacc4..e65775e 100644 --- a/platform/mv3/extension/js/background.js +++ b/platform/mv3/extension/js/background.js @@ -19,47 +19,43 @@ Home: https://github.com/gorhill/uBlock */ -/* jshint esversion:11 */ - -'use strict'; - /******************************************************************************/ import { + adminRead, browser, dnr, - runtime, localRead, localWrite, + runtime, sessionRead, sessionWrite, - adminRead, } from './ext.js'; import { - getRulesetDetails, + broadcastMessage, + ubolLog, +} from './utils.js'; + +import { defaultRulesetsFromLanguage, enableRulesets, getEnabledRulesetsDetails, + getRulesetDetails, updateDynamicRules, } from './ruleset-manager.js'; import { - registerInjectables, -} from './scripting-manager.js'; - -import { - getFilteringMode, - setFilteringMode, getDefaultFilteringMode, - setDefaultFilteringMode, + getFilteringMode, getTrustedSites, + setDefaultFilteringMode, + setFilteringMode, setTrustedSites, syncWithBrowserPermissions, } from './mode-manager.js'; import { - broadcastMessage, - ubolLog, -} from './utils.js'; + registerInjectables, +} from './scripting-manager.js'; /******************************************************************************/ @@ -67,10 +63,13 @@ const rulesetConfig = { version: '', enabledRulesets: [ 'default' ], autoReload: true, + showBlockedCount: true, }; const UBOL_ORIGIN = runtime.getURL('').replace(/\/$/, ''); +const canShowBlockedCount = typeof dnr.setExtensionActionOptions === 'function'; + let firstRun = false; let wakeupRun = false; @@ -85,7 +84,12 @@ async function loadRulesetConfig() { if ( data ) { rulesetConfig.version = data.version; rulesetConfig.enabledRulesets = data.enabledRulesets; - rulesetConfig.autoReload = data.autoReload && true || false; + rulesetConfig.autoReload = typeof data.autoReload === 'boolean' + ? data.autoReload + : true; + rulesetConfig.showBlockedCount = typeof data.showBlockedCount === 'boolean' + ? data.showBlockedCount + : true; wakeupRun = true; return; } @@ -93,7 +97,12 @@ async function loadRulesetConfig() { if ( data ) { rulesetConfig.version = data.version; rulesetConfig.enabledRulesets = data.enabledRulesets; - rulesetConfig.autoReload = data.autoReload && true || false; + rulesetConfig.autoReload = typeof data.autoReload === 'boolean' + ? data.autoReload + : true; + rulesetConfig.showBlockedCount = typeof data.showBlockedCount === 'boolean' + ? data.showBlockedCount + : true; sessionWrite('rulesetConfig', rulesetConfig); return; } @@ -201,6 +210,8 @@ function onMessage(request, sender, callback) { maxNumberOfEnabledRulesets: dnr.MAX_NUMBER_OF_ENABLED_STATIC_RULESETS, rulesetDetails: Array.from(rulesetDetails.values()), autoReload: rulesetConfig.autoReload, + showBlockedCount: rulesetConfig.showBlockedCount, + canShowBlockedCount, firstRun, }); firstRun = false; @@ -216,6 +227,19 @@ function onMessage(request, sender, callback) { }); return true; + case 'setShowBlockedCount': + rulesetConfig.showBlockedCount = request.state && true || false; + if ( canShowBlockedCount ) { + dnr.setExtensionActionOptions({ + displayActionCountAsBadgeText: rulesetConfig.showBlockedCount, + }); + } + saveRulesetConfig().then(( ) => { + callback(); + broadcastMessage({ showBlockedCount: rulesetConfig.showBlockedCount }); + }); + return true; + case 'popupPanelData': { Promise.all([ getFilteringMode(request.hostname), @@ -329,8 +353,10 @@ async function start() { // https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions/API/declarativeNetRequest // Firefox API does not support `dnr.setExtensionActionOptions` - if ( wakeupRun === false && dnr.setExtensionActionOptions ) { - dnr.setExtensionActionOptions({ displayActionCountAsBadgeText: true }); + if ( wakeupRun === false && canShowBlockedCount ) { + dnr.setExtensionActionOptions({ + displayActionCountAsBadgeText: rulesetConfig.showBlockedCount, + }); } runtime.onMessage.addListener(onMessage); |