diff --git a/browser/ui/webui/brave_web_ui_controller_factory.cc b/browser/ui/webui/brave_web_ui_controller_factory.cc index 90e0bbd0587..b26f8560949 100644 --- a/browser/ui/webui/brave_web_ui_controller_factory.cc +++ b/browser/ui/webui/brave_web_ui_controller_factory.cc @@ -71,8 +71,8 @@ #endif #if BUILDFLAG(ENABLE_BRAVE_WALLET) -#if !BUILDFLAG(IS_ANDROID) #include "brave/browser/brave_wallet/brave_wallet_context_utils.h" +#if !BUILDFLAG(IS_ANDROID) #include "brave/browser/ui/webui/brave_wallet/wallet_page_ui.h" #include "brave/components/brave_wallet/browser/brave_wallet_utils.h" #include "brave/components/brave_wallet/common/brave_wallet.mojom.h" @@ -268,11 +268,18 @@ WebUI::TypeID BraveWebUIControllerFactory::GetWebUIType( return WebUI::kNoWebUI; } #endif // BUILDFLAG(ENABLE_BRAVE_REWARDS) -#if BUILDFLAG(IS_ANDROID) && BUILDFLAG(ENABLE_BRAVE_WALLET) +#if BUILDFLAG(ENABLE_BRAVE_WALLET) +#if BUILDFLAG(IS_ANDROID) if (ShouldBlockWalletWebUI(browser_context, url)) { return WebUI::kNoWebUI; } -#endif // BUILDFLAG(IS_ANDROID) && BUILDFLAG(ENABLE_BRAVE_WALLET) +#else + if ((url.host() == kWalletPageHost || url.host() == kWalletPanelHost) && + !brave_wallet::IsAllowedForContext(browser_context)) { + return WebUI::kNoWebUI; + } +#endif // BUILDFLAG(IS_ANDROID) +#endif // BUILDFLAG(ENABLE_BRAVE_WALLET) #if BUILDFLAG(ENABLE_PLAYLIST_WEBUI) if (base::FeatureList::IsEnabled(playlist::features::kPlaylist)) { if (playlist::PlaylistUI::ShouldBlockPlaylistWebUI(browser_context, url)) { diff --git a/components/brave_origin/brave_origin_policy_manager.cc b/components/brave_origin/brave_origin_policy_manager.cc index fc72f031fde..5cda8ec41e1 100644 --- a/components/brave_origin/brave_origin_policy_manager.cc +++ b/components/brave_origin/brave_origin_policy_manager.cc @@ -172,13 +172,26 @@ void BraveOriginPolicyManager::SetPurchased(bool purchased) { return; } is_purchased_ = purchased; + // Persist purchase state so policies can be applied immediately on next + // startup, before the async SKU credential check completes. + if (local_state_) { + local_state_->SetBoolean(kOriginPurchaseValidated, purchased); + } if (initialized_) { observers_.Notify(&brave_policy::BravePolicyObserver::OnBravePoliciesReady); } } bool BraveOriginPolicyManager::IsPurchased() const { - return is_purchased_; + if (is_purchased_) { + return true; + } + // Fall back to persisted pref so policies are applied immediately on startup, + // before the async purchase verification completes. + if (local_state_) { + return local_state_->GetBoolean(kOriginPurchaseValidated); + } + return false; } void BraveOriginPolicyManager::Shutdown() { diff --git a/components/brave_origin/brave_origin_policy_manager_unittest.cc b/components/brave_origin/brave_origin_policy_manager_unittest.cc index f6ed8ea6272..d966b4a8ea0 100644 --- a/components/brave_origin/brave_origin_policy_manager_unittest.cc +++ b/components/brave_origin/brave_origin_policy_manager_unittest.cc @@ -35,6 +35,8 @@ class BraveOriginPolicyManagerTest : public testing::Test { void SetUp() override { pref_service_.registry()->RegisterDictionaryPref(kBraveOriginPolicies); + pref_service_.registry()->RegisterBooleanPref(kOriginPurchaseValidated, + false); } void TearDown() override { diff --git a/components/brave_origin/brave_origin_service_unittest.cc b/components/brave_origin/brave_origin_service_unittest.cc index 9568234522c..ec1e3bae788 100644 --- a/components/brave_origin/brave_origin_service_unittest.cc +++ b/components/brave_origin/brave_origin_service_unittest.cc @@ -53,6 +53,8 @@ class BraveOriginServiceTest : public testing::Test { // Register the BraveOrigin policies dictionary pref in local_state local_state_.registry()->RegisterDictionaryPref(kBraveOriginPolicies); + local_state_.registry()->RegisterBooleanPref(kOriginPurchaseValidated, + false); // Register test browser preferences in local_state // These are needed because BraveOriginService::SetBrowserPolicyValue() @@ -512,6 +514,8 @@ class BraveOriginServiceWithSkusTest : public testing::Test { feature_list_.InitAndEnableFeature(features::kBraveOrigin); local_state_.registry()->RegisterDictionaryPref(kBraveOriginPolicies); + local_state_.registry()->RegisterBooleanPref(kOriginPurchaseValidated, + false); local_state_.registry()->RegisterBooleanPref(kTestBrowserPref, false); profile_prefs_.registry()->RegisterBooleanPref(kTestProfilePref, true); @@ -692,6 +696,8 @@ class BraveOriginServiceDisabledTest : public testing::Test { // Register the BraveOrigin policies dictionary pref in local_state local_state_.registry()->RegisterDictionaryPref(kBraveOriginPolicies); + local_state_.registry()->RegisterBooleanPref(kOriginPurchaseValidated, + false); // Register test preferences (needed for pref service not to crash) local_state_.registry()->RegisterBooleanPref(kTestBrowserPref, false); diff --git a/components/brave_origin/brave_origin_settings_handler_impl_unittest.cc b/components/brave_origin/brave_origin_settings_handler_impl_unittest.cc index e941fc17906..9bbde67eaec 100644 --- a/components/brave_origin/brave_origin_settings_handler_impl_unittest.cc +++ b/components/brave_origin/brave_origin_settings_handler_impl_unittest.cc @@ -51,6 +51,8 @@ class BraveOriginHandlerTest : public testing::Test { // Register the BraveOrigin policies dictionary pref in local_state local_state_.registry()->RegisterDictionaryPref(kBraveOriginPolicies); + local_state_.registry()->RegisterBooleanPref(kOriginPurchaseValidated, + false); // Register test browser preferences in local_state local_state_.registry()->RegisterBooleanPref(kTestBrowserPrefName, false); @@ -324,6 +326,8 @@ class BraveOriginHandlerWithSkusTest : public testing::Test { feature_list_.InitAndEnableFeature(features::kBraveOrigin); local_state_.registry()->RegisterDictionaryPref(kBraveOriginPolicies); + local_state_.registry()->RegisterBooleanPref(kOriginPurchaseValidated, + false); local_state_.registry()->RegisterBooleanPref(kTestBrowserPrefName, false); profile_prefs_.registry()->RegisterBooleanPref(kTestProfilePrefName, true); @@ -441,6 +445,8 @@ class BraveOriginHandlerDisabledTest : public testing::Test { // Register the BraveOrigin policies dictionary pref in local_state local_state_.registry()->RegisterDictionaryPref(kBraveOriginPolicies); + local_state_.registry()->RegisterBooleanPref(kOriginPurchaseValidated, + false); // Register test preferences (needed for pref service not to crash) local_state_.registry()->RegisterBooleanPref(kTestBrowserPrefName, false); diff --git a/components/brave_origin/brave_origin_utils_unittest.cc b/components/brave_origin/brave_origin_utils_unittest.cc index 228ea866e52..5215bc08ba2 100644 --- a/components/brave_origin/brave_origin_utils_unittest.cc +++ b/components/brave_origin/brave_origin_utils_unittest.cc @@ -48,6 +48,8 @@ TEST_F(BraveOriginUtilsTest, scoped_feature_list_.InitAndEnableFeature(features::kBraveOrigin); pref_service_.registry()->RegisterDictionaryPref(kBraveOriginPolicies); + pref_service_.registry()->RegisterBooleanPref(kOriginPurchaseValidated, + false); auto* manager = BraveOriginPolicyManager::GetInstance(); manager->Init(BraveOriginPolicyMap(), BraveOriginPolicyMap(), &pref_service_); @@ -59,6 +61,8 @@ TEST_F(BraveOriginUtilsTest, IsBraveOriginPurchased_FeatureEnabled_Purchased) { scoped_feature_list_.InitAndEnableFeature(features::kBraveOrigin); pref_service_.registry()->RegisterDictionaryPref(kBraveOriginPolicies); + pref_service_.registry()->RegisterBooleanPref(kOriginPurchaseValidated, + false); auto* manager = BraveOriginPolicyManager::GetInstance(); manager->Init(BraveOriginPolicyMap(), BraveOriginPolicyMap(), &pref_service_); manager->SetPurchased(true);