From 0e1800e68df8c5e82bd5cd93309b2c31064468c6 Mon Sep 17 00:00:00 2001 From: Raymond Hill Date: Tue, 10 Dec 2024 10:16:35 -0500 Subject: [PATCH] [mv3] Fix using Optimal as default mode when hosts permission allows it Related issue: https://github.com/uBlockOrigin/uBOL-home/discussions/161 --- platform/mv3/extension/js/background.js | 18 ++++++++++++------ platform/mv3/extension/js/mode-manager.js | 5 +++-- 2 files changed, 15 insertions(+), 8 deletions(-) diff --git a/platform/mv3/extension/js/background.js b/platform/mv3/extension/js/background.js index e250d1025..ce8c0ea93 100644 --- a/platform/mv3/extension/js/background.js +++ b/platform/mv3/extension/js/background.js @@ -93,7 +93,11 @@ async function hasGreatPowers(origin) { }); } -function hasOmnipotence() { +async function hasOmnipotence() { + const manifest = runtime.getManifest(); + const hasOmnipotence = Array.isArray(manifest.host_permissions) && + manifest.host_permissions.includes(''); + if ( hasOmnipotence ) { return true; } return browser.permissions.contains({ origins: [ '' ], }); @@ -436,13 +440,15 @@ async function start() { if ( afterLevel === MODE_OPTIMAL ) { updateDynamicRules(); registerInjectables(); + process.firstRun = false; } - } - const disableFirstRunPage = await adminRead('disableFirstRunPage'); - if ( disableFirstRunPage !== true ) { - runtime.openOptionsPage(); } else { - process.firstRun = false; + const disableFirstRunPage = await adminRead('disableFirstRunPage'); + if ( disableFirstRunPage !== true ) { + runtime.openOptionsPage(); + } else { + process.firstRun = false; + } } } diff --git a/platform/mv3/extension/js/mode-manager.js b/platform/mv3/extension/js/mode-manager.js index 3630925ca..a8af4bbb9 100644 --- a/platform/mv3/extension/js/mode-manager.js +++ b/platform/mv3/extension/js/mode-manager.js @@ -252,10 +252,11 @@ async function writeFilteringModeDetails(afterDetails) { localWrite('filteringModeDetails', data); sessionWrite('filteringModeDetails', data); readFilteringModeDetails.cache = unserializeModeDetails(data); - - Promise.all([ + return Promise.all([ getDefaultFilteringMode(), getTrustedSites(), + localWrite('filteringModeDetails', data), + sessionWrite('filteringModeDetails', data), ]).then(results => { broadcastMessage({ defaultFilteringMode: results[0],