From 4d6e92d71949e14f88dcb518efe241d7571dc635 Mon Sep 17 00:00:00 2001 From: Jocelyn Liu Date: Fri, 3 Nov 2023 16:55:06 -0700 Subject: [PATCH] Reset wallet permissions when wallet is being reset --- browser/brave_wallet/BUILD.gn | 2 + .../brave_wallet_service_delegate_base.cc | 63 +++++++++++++++++++ .../brave_wallet_service_delegate_base.h | 51 +++++++++++++++ .../brave_wallet_service_delegate_impl.cc | 41 +----------- .../brave_wallet_service_delegate_impl.h | 13 +--- ...ve_wallet_service_delegate_impl_android.cc | 41 +----------- ...ave_wallet_service_delegate_impl_android.h | 13 +--- .../brave_wallet_service_unittest.cc | 34 +++++++++- ...rave_wallet_permission_context_unittest.cc | 38 +++++++++++ .../permissions/permission_manager_factory.h | 2 + .../browser/brave_wallet_service.cc | 1 + .../browser/brave_wallet_service.h | 4 ++ .../browser/brave_wallet_service_delegate.h | 1 + .../brave_wallet_permission_context.cc | 8 +++ .../brave_wallet_permission_context.h | 1 + 15 files changed, 210 insertions(+), 103 deletions(-) create mode 100644 browser/brave_wallet/brave_wallet_service_delegate_base.cc create mode 100644 browser/brave_wallet/brave_wallet_service_delegate_base.h diff --git a/browser/brave_wallet/BUILD.gn b/browser/brave_wallet/BUILD.gn index 15fd818b6b6e..6aeab60790d7 100644 --- a/browser/brave_wallet/BUILD.gn +++ b/browser/brave_wallet/BUILD.gn @@ -76,6 +76,8 @@ source_set("brave_wallet_delegate") { sources = [ "brave_wallet_provider_delegate_impl.cc", "brave_wallet_provider_delegate_impl.h", + "brave_wallet_service_delegate_base.cc", + "brave_wallet_service_delegate_base.h", "brave_wallet_service_delegate_helper.cc", ] deps = [ diff --git a/browser/brave_wallet/brave_wallet_service_delegate_base.cc b/browser/brave_wallet/brave_wallet_service_delegate_base.cc new file mode 100644 index 000000000000..da10e0c54cc0 --- /dev/null +++ b/browser/brave_wallet/brave_wallet_service_delegate_base.cc @@ -0,0 +1,63 @@ +/* Copyright (c) 2023 The Brave Authors. All rights reserved. + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this file, + * You can obtain one at https://mozilla.org/MPL/2.0/. */ + +#include "brave/browser/brave_wallet/brave_wallet_service_delegate_base.h" + +#include "brave/components/brave_wallet/browser/permission_utils.h" +#include "brave/components/permissions/contexts/brave_wallet_permission_context.h" +#include "content/public/browser/browser_context.h" + +namespace brave_wallet { + +BraveWalletServiceDelegateBase::BraveWalletServiceDelegateBase( + content::BrowserContext* context) + : context_(context) {} + +BraveWalletServiceDelegateBase::~BraveWalletServiceDelegateBase() = default; + +bool BraveWalletServiceDelegateBase::HasPermission(mojom::CoinType coin, + const url::Origin& origin, + const std::string& account) { + bool has_permission = false; + auto type = CoinTypeToPermissionType(coin); + if (!type) { + return false; + } + + bool success = permissions::BraveWalletPermissionContext::HasPermission( + *type, context_, origin, account, &has_permission); + return success && has_permission; +} + +bool BraveWalletServiceDelegateBase::ResetPermission( + mojom::CoinType coin, + const url::Origin& origin, + const std::string& account) { + auto type = CoinTypeToPermissionType(coin); + if (!type) { + return false; + } + + return permissions::BraveWalletPermissionContext::ResetPermission( + *type, context_, origin, account); +} + +bool BraveWalletServiceDelegateBase::IsPermissionDenied( + mojom::CoinType coin, + const url::Origin& origin) { + auto type = CoinTypeToPermissionType(coin); + if (!type) { + return false; + } + + return permissions::BraveWalletPermissionContext::IsPermissionDenied( + *type, context_, origin); +} + +void BraveWalletServiceDelegateBase::ResetAllPermissions() { + permissions::BraveWalletPermissionContext::ResetAllPermissions(context_); +} + +} // namespace brave_wallet diff --git a/browser/brave_wallet/brave_wallet_service_delegate_base.h b/browser/brave_wallet/brave_wallet_service_delegate_base.h new file mode 100644 index 000000000000..81e5e0ea15f9 --- /dev/null +++ b/browser/brave_wallet/brave_wallet_service_delegate_base.h @@ -0,0 +1,51 @@ +/* Copyright (c) 2023 The Brave Authors. All rights reserved. + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this file, + * You can obtain one at https://mozilla.org/MPL/2.0/. */ + +#ifndef BRAVE_BROWSER_BRAVE_WALLET_BRAVE_WALLET_SERVICE_DELEGATE_BASE_H_ +#define BRAVE_BROWSER_BRAVE_WALLET_BRAVE_WALLET_SERVICE_DELEGATE_BASE_H_ + +#include + +#include "base/memory/raw_ptr.h" +#include "brave/components/brave_wallet/browser/brave_wallet_service_delegate.h" +#include "brave/components/brave_wallet/common/brave_wallet.mojom.h" + +namespace content { +class BrowserContext; +} + +namespace url { +class Origin; +} + +namespace brave_wallet { + +// Shared BraveWalletServiceDelegate implementation between Desktop and Android. +class BraveWalletServiceDelegateBase : public BraveWalletServiceDelegate { + public: + explicit BraveWalletServiceDelegateBase(content::BrowserContext* context); + BraveWalletServiceDelegateBase(const BraveWalletServiceDelegateBase&) = + delete; + BraveWalletServiceDelegateBase& operator=( + const BraveWalletServiceDelegateBase&) = delete; + ~BraveWalletServiceDelegateBase() override; + + bool HasPermission(mojom::CoinType coin, + const url::Origin& origin, + const std::string& account) override; + bool ResetPermission(mojom::CoinType coin, + const url::Origin& origin, + const std::string& account) override; + bool IsPermissionDenied(mojom::CoinType coin, + const url::Origin& origin) override; + void ResetAllPermissions() override; + + protected: + raw_ptr context_ = nullptr; +}; + +} // namespace brave_wallet + +#endif // BRAVE_BROWSER_BRAVE_WALLET_BRAVE_WALLET_SERVICE_DELEGATE_BASE_H_ diff --git a/browser/brave_wallet/brave_wallet_service_delegate_impl.cc b/browser/brave_wallet/brave_wallet_service_delegate_impl.cc index 1c200262f110..40db38773961 100644 --- a/browser/brave_wallet/brave_wallet_service_delegate_impl.cc +++ b/browser/brave_wallet/brave_wallet_service_delegate_impl.cc @@ -51,7 +51,7 @@ void ClearWalletStoragePartition(content::BrowserContext* context, BraveWalletServiceDelegateImpl::BraveWalletServiceDelegateImpl( content::BrowserContext* context) - : context_(context), + : BraveWalletServiceDelegateBase(context), browser_tab_strip_tracker_(this, this), weak_ptr_factory_(this) { browser_tab_strip_tracker_.Init(); @@ -149,45 +149,6 @@ void BraveWalletServiceDelegateImpl::ContinueGetImportInfoFromExternalWallet( } } -bool BraveWalletServiceDelegateImpl::HasPermission(mojom::CoinType coin, - const url::Origin& origin, - const std::string& account) { - bool has_permission = false; - auto type = CoinTypeToPermissionType(coin); - if (!type) { - return false; - } - - bool success = permissions::BraveWalletPermissionContext::HasPermission( - *type, context_, origin, account, &has_permission); - return success && has_permission; -} - -bool BraveWalletServiceDelegateImpl::ResetPermission( - mojom::CoinType coin, - const url::Origin& origin, - const std::string& account) { - auto type = CoinTypeToPermissionType(coin); - if (!type) { - return false; - } - - return permissions::BraveWalletPermissionContext::ResetPermission( - *type, context_, origin, account); -} - -bool BraveWalletServiceDelegateImpl::IsPermissionDenied( - mojom::CoinType coin, - const url::Origin& origin) { - auto type = CoinTypeToPermissionType(coin); - if (!type) { - return false; - } - - return permissions::BraveWalletPermissionContext::IsPermissionDenied( - *type, context_, origin); -} - void BraveWalletServiceDelegateImpl::OnTabStripModelChanged( TabStripModel* tab_strip_model, const TabStripModelChange& change, diff --git a/browser/brave_wallet/brave_wallet_service_delegate_impl.h b/browser/brave_wallet/brave_wallet_service_delegate_impl.h index ba004e210cc3..37972ff0ebb2 100644 --- a/browser/brave_wallet/brave_wallet_service_delegate_impl.h +++ b/browser/brave_wallet/brave_wallet_service_delegate_impl.h @@ -13,6 +13,7 @@ #include "base/memory/raw_ptr.h" #include "base/memory/weak_ptr.h" #include "base/observer_list.h" +#include "brave/browser/brave_wallet/brave_wallet_service_delegate_base.h" #include "brave/browser/brave_wallet/external_wallets_importer.h" #include "brave/components/brave_wallet/browser/brave_wallet_service_delegate.h" #include "brave/components/brave_wallet/common/brave_wallet.mojom.h" @@ -27,7 +28,7 @@ class WebContents; namespace brave_wallet { -class BraveWalletServiceDelegateImpl : public BraveWalletServiceDelegate, +class BraveWalletServiceDelegateImpl : public BraveWalletServiceDelegateBase, public TabStripModelObserver, public BrowserTabStripTrackerDelegate { public: @@ -50,15 +51,6 @@ class BraveWalletServiceDelegateImpl : public BraveWalletServiceDelegate, const std::string& password, GetImportInfoCallback callback) override; - bool HasPermission(mojom::CoinType coin, - const url::Origin& origin, - const std::string& account) override; - bool ResetPermission(mojom::CoinType coin, - const url::Origin& origin, - const std::string& account) override; - bool IsPermissionDenied(mojom::CoinType coin, - const url::Origin& origin) override; - absl::optional GetActiveOrigin() override; void ClearWalletUIStoragePartition() override; @@ -92,7 +84,6 @@ class BraveWalletServiceDelegateImpl : public BraveWalletServiceDelegate, absl::optional GetActiveOriginInternal(); void FireActiveOriginChanged(); - raw_ptr context_ = nullptr; base::flat_map> importers_; diff --git a/browser/brave_wallet/brave_wallet_service_delegate_impl_android.cc b/browser/brave_wallet/brave_wallet_service_delegate_impl_android.cc index 2cfeb27e33d5..20eb9b7f2554 100644 --- a/browser/brave_wallet/brave_wallet_service_delegate_impl_android.cc +++ b/browser/brave_wallet/brave_wallet_service_delegate_impl_android.cc @@ -41,7 +41,7 @@ content::WebContents* GetActiveWebContents(content::BrowserContext* context) { BraveWalletServiceDelegateImpl::BraveWalletServiceDelegateImpl( content::BrowserContext* context) - : context_(context), weak_ptr_factory_(this) {} + : BraveWalletServiceDelegateBase(context), weak_ptr_factory_(this) {} BraveWalletServiceDelegateImpl::~BraveWalletServiceDelegateImpl() = default; @@ -57,45 +57,6 @@ bool BraveWalletServiceDelegateImpl::AddPermission(mojom::CoinType coin, *type, context_, origin, account); } -bool BraveWalletServiceDelegateImpl::HasPermission(mojom::CoinType coin, - const url::Origin& origin, - const std::string& account) { - bool has_permission = false; - auto type = CoinTypeToPermissionType(coin); - if (!type) { - return false; - } - - bool success = permissions::BraveWalletPermissionContext::HasPermission( - *type, context_, origin, account, &has_permission); - return success && has_permission; -} - -bool BraveWalletServiceDelegateImpl::ResetPermission( - mojom::CoinType coin, - const url::Origin& origin, - const std::string& account) { - auto type = CoinTypeToPermissionType(coin); - if (!type) { - return false; - } - - return permissions::BraveWalletPermissionContext::ResetPermission( - *type, context_, origin, account); -} - -bool BraveWalletServiceDelegateImpl::IsPermissionDenied( - mojom::CoinType coin, - const url::Origin& origin) { - auto type = CoinTypeToPermissionType(coin); - if (!type) { - return false; - } - - return permissions::BraveWalletPermissionContext::IsPermissionDenied( - *type, context_, origin); -} - void BraveWalletServiceDelegateImpl::GetWebSitesWithPermission( mojom::CoinType coin, GetWebSitesWithPermissionCallback callback) { diff --git a/browser/brave_wallet/brave_wallet_service_delegate_impl_android.h b/browser/brave_wallet/brave_wallet_service_delegate_impl_android.h index 08393fabfc89..34aaca988727 100644 --- a/browser/brave_wallet/brave_wallet_service_delegate_impl_android.h +++ b/browser/brave_wallet/brave_wallet_service_delegate_impl_android.h @@ -13,7 +13,7 @@ #include "base/memory/weak_ptr.h" #include "base/observer_list.h" -#include "brave/components/brave_wallet/browser/brave_wallet_service_delegate.h" +#include "brave/browser/brave_wallet/brave_wallet_service_delegate_base.h" #include "brave/components/brave_wallet/common/brave_wallet.mojom.h" namespace content { @@ -24,7 +24,7 @@ namespace brave_wallet { class ExternalWalletsImporter; -class BraveWalletServiceDelegateImpl : public BraveWalletServiceDelegate { +class BraveWalletServiceDelegateImpl : public BraveWalletServiceDelegateBase { public: explicit BraveWalletServiceDelegateImpl(content::BrowserContext* context); BraveWalletServiceDelegateImpl(const BraveWalletServiceDelegateImpl&) = @@ -36,14 +36,6 @@ class BraveWalletServiceDelegateImpl : public BraveWalletServiceDelegate { bool AddPermission(mojom::CoinType coin, const url::Origin& origin, const std::string& account) override; - bool HasPermission(mojom::CoinType coin, - const url::Origin& origin, - const std::string& account) override; - bool ResetPermission(mojom::CoinType coin, - const url::Origin& origin, - const std::string& account) override; - bool IsPermissionDenied(mojom::CoinType coin, - const url::Origin& origin) override; void GetWebSitesWithPermission( mojom::CoinType coin, GetWebSitesWithPermissionCallback callback) override; @@ -53,7 +45,6 @@ class BraveWalletServiceDelegateImpl : public BraveWalletServiceDelegate { absl::optional GetActiveOrigin() override; private: - raw_ptr context_ = nullptr; base::ObserverList observer_list_; base::WeakPtrFactory weak_ptr_factory_; diff --git a/browser/brave_wallet/brave_wallet_service_unittest.cc b/browser/brave_wallet/brave_wallet_service_unittest.cc index f925abcdb1a7..402c6e77cd8a 100644 --- a/browser/brave_wallet/brave_wallet_service_unittest.cc +++ b/browser/brave_wallet/brave_wallet_service_unittest.cc @@ -39,7 +39,10 @@ #include "brave/components/brave_wallet/common/features.h" #include "brave/components/brave_wallet/common/test_utils.h" #include "brave/components/constants/webui_url_constants.h" +#include "brave/components/permissions/brave_permission_manager.h" +#include "brave/components/permissions/contexts/brave_wallet_permission_context.h" #include "build/build_config.h" +#include "chrome/browser/permissions/permission_manager_factory.h" #include "chrome/browser/prefs/browser_prefs.h" #include "chrome/test/base/scoped_testing_local_state.h" #include "chrome/test/base/testing_browser_process.h" @@ -164,6 +167,8 @@ const char interface_not_supported_response[] = R"({ "result":"0x0000000000000000000000000000000000000000000000000000000000000000" })"; +constexpr char kBraveUrl[] = "https://brave.com"; + class MockDataRemovalObserver : public StoragePartition::DataRemovalObserver { public: explicit MockDataRemovalObserver(StoragePartition* partition) { @@ -337,6 +342,12 @@ class BraveWalletServiceUnitTest : public testing::Test { observer_ = std::make_unique(); service_->AddObserver(observer_->GetReceiver()); + profile_->SetPermissionControllerDelegate( + base::WrapUnique(static_cast( + PermissionManagerFactory::GetInstance() + ->BuildServiceInstanceForBrowserContext(profile_.get()) + .release()))); + auto* registry = BlockchainRegistry::GetInstance(); TokenListMap token_list_map; ASSERT_TRUE( @@ -417,6 +428,10 @@ class BraveWalletServiceUnitTest : public testing::Test { true, "", "", mojom::kFilecoinMainnet, mojom::CoinType::FIL); } + void TearDown() override { + profile_->SetPermissionControllerDelegate(nullptr); + } + mojom::BlockchainTokenPtr GetToken1() { return token1_.Clone(); } mojom::BlockchainTokenPtr GetToken2() { return token2_.Clone(); } mojom::BlockchainTokenPtr GetErc721Token() { return erc721_token_.Clone(); } @@ -714,7 +729,7 @@ class BraveWalletServiceUnitTest : public testing::Test { bool run_switch_network = false) { mojom::AddSuggestTokenRequestPtr request = mojom::AddSuggestTokenRequest::New( - MakeOriginInfo(url::Origin::Create(GURL("https://brave.com"))), + MakeOriginInfo(url::Origin::Create(GURL(kBraveUrl))), suggested_token.Clone()); base::RunLoop run_loop; service_->AddSuggestTokenRequest( @@ -2745,8 +2760,25 @@ TEST_F(BraveWalletServiceUnitTest, Reset) { base::Time(), base::Time::Max())); #endif + const std::string eth_addr = "0x407637cC04893DA7FA4A7C0B58884F82d69eD448"; + const std::string sol_addr = "BrG44HdsEhzapvs8bEqzvkq4egwevS3fRE6ze2ENo6S8"; + auto origin = url::Origin::Create(GURL(kBraveUrl)); + auto* delegate = service_->GetDelegateForTesting(); + ASSERT_TRUE(delegate); + + ASSERT_TRUE(permissions::BraveWalletPermissionContext::AddPermission( + blink::PermissionType::BRAVE_ETHEREUM, profile_.get(), origin, eth_addr)); + ASSERT_TRUE(permissions::BraveWalletPermissionContext::AddPermission( + blink::PermissionType::BRAVE_SOLANA, profile_.get(), origin, sol_addr)); + + ASSERT_TRUE(delegate->HasPermission(mojom::CoinType::ETH, origin, eth_addr)); + ASSERT_TRUE(delegate->HasPermission(mojom::CoinType::SOL, origin, sol_addr)); + service_->Reset(); + EXPECT_FALSE(delegate->HasPermission(mojom::CoinType::ETH, origin, eth_addr)); + EXPECT_FALSE(delegate->HasPermission(mojom::CoinType::SOL, origin, sol_addr)); + EXPECT_FALSE(GetPrefs()->HasPrefPath(kBraveWalletUserAssets)); EXPECT_FALSE(GetPrefs()->HasPrefPath(kDefaultBaseCurrency)); EXPECT_FALSE(GetPrefs()->HasPrefPath(kDefaultBaseCryptocurrency)); diff --git a/browser/permissions/brave_wallet_permission_context_unittest.cc b/browser/permissions/brave_wallet_permission_context_unittest.cc index 0e9f726f47a4..79eeec81b732 100644 --- a/browser/permissions/brave_wallet_permission_context_unittest.cc +++ b/browser/permissions/brave_wallet_permission_context_unittest.cc @@ -151,6 +151,44 @@ TEST_F(BraveWalletPermissionContextUnitTest, ResetPermission) { } } +TEST_F(BraveWalletPermissionContextUnitTest, ResetAllPermissions) { + url::Origin origin = url::Origin::Create(GURL("https://www.brave.com/")); + const struct { + const char* address; + blink::PermissionType type; + } cases[] = {{"0x407637cC04893DA7FA4A7C0B58884F82d69eD448", + blink::PermissionType::BRAVE_ETHEREUM}, + {"BrG44HdsEhzapvs8bEqzvkq4egwevS3fRE6ze2ENo6S8", + blink::PermissionType::BRAVE_SOLANA}}; + for (auto entry : cases) { + SCOPED_TRACE(entry.address); + bool success = permissions::BraveWalletPermissionContext::AddPermission( + entry.type, browser_context(), origin, entry.address); + EXPECT_TRUE(success); + + // Verify the permission is set + bool has_permission; + success = permissions::BraveWalletPermissionContext::HasPermission( + entry.type, browser_context(), origin, entry.address, &has_permission); + EXPECT_TRUE(success); + EXPECT_TRUE(has_permission); + } + + // Reset all permissions + permissions::BraveWalletPermissionContext::ResetAllPermissions( + browser_context()); + + // Verify permissions are reset + for (auto entry : cases) { + SCOPED_TRACE(entry.address); + bool has_permission; + bool success = permissions::BraveWalletPermissionContext::HasPermission( + entry.type, browser_context(), origin, entry.address, &has_permission); + EXPECT_TRUE(success); + EXPECT_FALSE(has_permission); + } +} + TEST_F(BraveWalletPermissionContextUnitTest, GetWebSitesWithPermission) { url::Origin origin = url::Origin::Create(GURL("https://www.brave.com/")); const struct { diff --git a/chromium_src/chrome/browser/permissions/permission_manager_factory.h b/chromium_src/chrome/browser/permissions/permission_manager_factory.h index e64a28651566..dcb67ab88bb2 100644 --- a/chromium_src/chrome/browser/permissions/permission_manager_factory.h +++ b/chromium_src/chrome/browser/permissions/permission_manager_factory.h @@ -11,6 +11,7 @@ namespace brave_wallet { class EthereumProviderImplUnitTest; class SolanaProviderImplUnitTest; +class BraveWalletServiceUnitTest; } // namespace brave_wallet namespace permissions { @@ -22,6 +23,7 @@ class BraveWalletPermissionContextUnitTest; content::BrowserContext* profile) const; \ friend brave_wallet::EthereumProviderImplUnitTest; \ friend brave_wallet::SolanaProviderImplUnitTest; \ + friend brave_wallet::BraveWalletServiceUnitTest; \ friend permissions::BraveWalletPermissionContextUnitTest; \ std::unique_ptr BuildServiceInstanceForBrowserContext diff --git a/components/brave_wallet/browser/brave_wallet_service.cc b/components/brave_wallet/browser/brave_wallet_service.cc index daa2a42ae7a8..9cc507bb3753 100644 --- a/components/brave_wallet/browser/brave_wallet_service.cc +++ b/components/brave_wallet/browser/brave_wallet_service.cc @@ -2211,6 +2211,7 @@ void BraveWalletService::OnNetworkChanged() { void BraveWalletService::Reset() { delegate_->ClearWalletUIStoragePartition(); + delegate_->ResetAllPermissions(); if (eth_allowance_manager_) { eth_allowance_manager_->Reset(); diff --git a/components/brave_wallet/browser/brave_wallet_service.h b/components/brave_wallet/browser/brave_wallet_service.h index 7f3f34121e59..6500ba16eff4 100644 --- a/components/brave_wallet/browser/brave_wallet_service.h +++ b/components/brave_wallet/browser/brave_wallet_service.h @@ -314,6 +314,10 @@ class BraveWalletService : public KeyedService, sign_all_txs_request_added_cb_for_testing_ = std::move(callback); } + BraveWalletServiceDelegate* GetDelegateForTesting() { + return delegate_.get(); + } + protected: // For tests BraveWalletService(); diff --git a/components/brave_wallet/browser/brave_wallet_service_delegate.h b/components/brave_wallet/browser/brave_wallet_service_delegate.h index 5a166a72b729..42c5c4ff1b9a 100644 --- a/components/brave_wallet/browser/brave_wallet_service_delegate.h +++ b/components/brave_wallet/browser/brave_wallet_service_delegate.h @@ -65,6 +65,7 @@ class BraveWalletServiceDelegate { const std::string& account); virtual bool IsPermissionDenied(mojom::CoinType coin, const url::Origin& origin); + virtual void ResetAllPermissions() {} virtual void GetWebSitesWithPermission( mojom::CoinType coin, GetWebSitesWithPermissionCallback callback); diff --git a/components/permissions/contexts/brave_wallet_permission_context.cc b/components/permissions/contexts/brave_wallet_permission_context.cc index 67728c989ebc..ad81393f6f6e 100644 --- a/components/permissions/contexts/brave_wallet_permission_context.cc +++ b/components/permissions/contexts/brave_wallet_permission_context.cc @@ -406,4 +406,12 @@ bool BraveWalletPermissionContext::ResetWebSitePermission( return true; } +void BraveWalletPermissionContext::ResetAllPermissions( + content::BrowserContext* context) { + HostContentSettingsMap* map = + PermissionsClient::Get()->GetSettingsMap(context); + map->ClearSettingsForOneType(ContentSettingsType::BRAVE_ETHEREUM); + map->ClearSettingsForOneType(ContentSettingsType::BRAVE_SOLANA); +} + } // namespace permissions diff --git a/components/permissions/contexts/brave_wallet_permission_context.h b/components/permissions/contexts/brave_wallet_permission_context.h index e776c06993ca..ec3e19f48cde 100644 --- a/components/permissions/contexts/brave_wallet_permission_context.h +++ b/components/permissions/contexts/brave_wallet_permission_context.h @@ -85,6 +85,7 @@ class BraveWalletPermissionContext : public PermissionContextBase { content::BrowserContext* context, const url::Origin& origin, const std::string& account); + static void ResetAllPermissions(content::BrowserContext* context); static std::vector GetWebSitesWithPermission( blink::PermissionType permission,