diff --git a/platform/mv3/extension/js/mode-manager.js b/platform/mv3/extension/js/mode-manager.js index 9014ffd8f..01f973962 100644 --- a/platform/mv3/extension/js/mode-manager.js +++ b/platform/mv3/extension/js/mode-manager.js @@ -21,6 +21,7 @@ import { broadcastMessage, + hasBroadHostPermissions, hostnamesFromMatches, isDescendantHostnameOfIter, toBroaderHostname, @@ -255,12 +256,14 @@ async function writeFilteringModeDetails(afterDetails) { return Promise.all([ getDefaultFilteringMode(), getTrustedSites(), + hasBroadHostPermissions(), localWrite('filteringModeDetails', data), sessionWrite('filteringModeDetails', data), ]).then(results => { broadcastMessage({ defaultFilteringMode: results[0], trustedSites: Array.from(results[1]), + hasOmnipotence: results[2], }); }); } diff --git a/platform/mv3/extension/js/settings.js b/platform/mv3/extension/js/settings.js index 6e7610875..4c9352f6e 100644 --- a/platform/mv3/extension/js/settings.js +++ b/platform/mv3/extension/js/settings.js @@ -69,7 +69,7 @@ function renderWidgets() { { const input = qs$('#strictBlockMode input[type="checkbox"]'); - const canStrictBlock = cachedRulesetData.defaultFilteringMode > 1; + const canStrictBlock = cachedRulesetData.hasOmnipotence; input.checked = canStrictBlock && cachedRulesetData.strictBlockMode; dom.attr(input, 'disabled', canStrictBlock ? null : ''); } @@ -235,6 +235,13 @@ listen.onmessage = ev => { } } + if ( message.hasOmnipotence !== undefined ) { + if ( message.hasOmnipotence !== local.hasOmnipotence ) { + local.hasOmnipotence = message.hasOmnipotence; + render = true; + } + } + if ( message.defaultFilteringMode !== undefined ) { if ( message.defaultFilteringMode !== local.defaultFilteringMode ) { local.defaultFilteringMode = message.defaultFilteringMode;