Skip to content

Commit 15ebef5

Browse files
committed
Disable brave wallet on special cases
Resolves brave/brave-browser#29853
1 parent a62b2f3 commit 15ebef5

7 files changed

+67
-4
lines changed

browser/brave_wallet/brave_wallet_ethereum_chain_browsertest.cc

+11
Original file line numberDiff line numberDiff line change
@@ -11,8 +11,12 @@
1111
#include "base/test/thread_test_helper.h"
1212
#include "brave/browser/brave_wallet/brave_wallet_tab_helper.h"
1313
#include "brave/browser/brave_wallet/json_rpc_service_factory.h"
14+
#include "brave/browser/brave_wallet/keyring_service_factory.h"
15+
#include "brave/browser/profiles/brave_renderer_updater.h"
16+
#include "brave/browser/profiles/brave_renderer_updater_factory.h"
1417
#include "brave/components/brave_wallet/browser/brave_wallet_utils.h"
1518
#include "brave/components/brave_wallet/browser/json_rpc_service.h"
19+
#include "brave/components/brave_wallet/browser/keyring_service.h"
1620
#include "brave/components/brave_wallet/common/brave_wallet.mojom.h"
1721
#include "brave/components/brave_wallet/common/features.h"
1822
#include "brave/components/constants/brave_paths.h"
@@ -190,6 +194,13 @@ class BraveWalletEthereumChainTest : public InProcessBrowserTest {
190194
base::Unretained(this)));
191195

192196
ASSERT_TRUE(https_server_->Start());
197+
auto* keyring_service =
198+
brave_wallet::KeyringServiceFactory::GetServiceForContext(
199+
browser()->profile());
200+
// Create wallet since native wallet should not be injected otherwise
201+
keyring_service->CreateWallet("password", base::DoNothing());
202+
BraveRendererUpdaterFactory::GetForProfile(browser()->profile())
203+
->UpdateAllRenderersForTesting();
193204
}
194205

195206
void SetUpCommandLine(base::CommandLine* command_line) override {

browser/brave_wallet/brave_wallet_event_emitter_browsertest.cc

+6
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,8 @@
1111
#include "base/test/thread_test_helper.h"
1212
#include "brave/browser/brave_wallet/json_rpc_service_factory.h"
1313
#include "brave/browser/brave_wallet/keyring_service_factory.h"
14+
#include "brave/browser/profiles/brave_renderer_updater.h"
15+
#include "brave/browser/profiles/brave_renderer_updater_factory.h"
1416
#include "brave/components/brave_wallet/browser/brave_wallet_constants.h"
1517
#include "brave/components/brave_wallet/browser/brave_wallet_utils.h"
1618
#include "brave/components/brave_wallet/browser/json_rpc_service.h"
@@ -91,6 +93,10 @@ class BraveWalletEventEmitterTest : public InProcessBrowserTest {
9193

9294
keyring_service_ =
9395
KeyringServiceFactory::GetServiceForContext(browser()->profile());
96+
// Create wallet since native wallet should not be injected otherwise
97+
keyring_service_->CreateWallet("password", base::DoNothing());
98+
BraveRendererUpdaterFactory::GetForProfile(browser()->profile())
99+
->UpdateAllRenderersForTesting();
94100

95101
ASSERT_TRUE(https_server_->Start());
96102
}

browser/brave_wallet/brave_wallet_sign_message_browsertest.cc

+6
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,8 @@
1212
#include "brave/browser/brave_wallet/brave_wallet_service_factory.h"
1313
#include "brave/browser/brave_wallet/brave_wallet_tab_helper.h"
1414
#include "brave/browser/brave_wallet/keyring_service_factory.h"
15+
#include "brave/browser/profiles/brave_renderer_updater.h"
16+
#include "brave/browser/profiles/brave_renderer_updater_factory.h"
1517
#include "brave/components/brave_wallet/browser/brave_wallet_service.h"
1618
#include "brave/components/brave_wallet/browser/keyring_service.h"
1719
#include "brave/components/brave_wallet/common/features.h"
@@ -92,6 +94,10 @@ class BraveWalletSignMessageBrowserTest : public InProcessBrowserTest {
9294
browser()->profile());
9395
keyring_service_ =
9496
KeyringServiceFactory::GetServiceForContext(browser()->profile());
97+
// Create wallet since native wallet should not be injected otherwise
98+
keyring_service_->CreateWallet("password", base::DoNothing());
99+
BraveRendererUpdaterFactory::GetForProfile(browser()->profile())
100+
->UpdateAllRenderersForTesting();
95101
}
96102

97103
content::WebContents* web_contents() {

browser/brave_wallet/brave_wallet_tab_helper_browsertest.cc

+12
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,11 @@
1111
#include "base/test/thread_test_helper.h"
1212
#include "brave/browser/brave_wallet/brave_wallet_tab_helper.h"
1313
#include "brave/browser/brave_wallet/json_rpc_service_factory.h"
14+
#include "brave/browser/brave_wallet/keyring_service_factory.h"
15+
#include "brave/browser/profiles/brave_renderer_updater.h"
16+
#include "brave/browser/profiles/brave_renderer_updater_factory.h"
1417
#include "brave/browser/ui/webui/brave_wallet/wallet_common_ui.h"
18+
#include "brave/components/brave_wallet/browser/keyring_service.h"
1519
#include "brave/components/brave_wallet/common/features.h"
1620
#include "brave/components/constants/brave_paths.h"
1721
#include "brave/components/constants/webui_url_constants.h"
@@ -121,6 +125,14 @@ class BraveWalletTabHelperBrowserTest : public InProcessBrowserTest {
121125
&BraveWalletTabHelperBrowserTest::HandleChainRequest,
122126
base::Unretained(this)));
123127

128+
auto* keyring_service =
129+
brave_wallet::KeyringServiceFactory::GetServiceForContext(
130+
browser()->profile());
131+
// Create wallet since native wallet should not be injected otherwise
132+
keyring_service->CreateWallet("password", base::DoNothing());
133+
BraveRendererUpdaterFactory::GetForProfile(browser()->profile())
134+
->UpdateAllRenderersForTesting();
135+
124136
ASSERT_TRUE(https_server_->Start());
125137
}
126138

browser/brave_wallet/ethereum_provider_browsertest.cc

+2
Original file line numberDiff line numberDiff line change
@@ -77,6 +77,8 @@ class EthereumProviderBrowserTest : public InProcessBrowserTest {
7777

7878
keyring_service_ =
7979
KeyringServiceFactory::GetServiceForContext(browser()->profile());
80+
// Create wallet since native wallet should not be injected otherwise
81+
keyring_service_->CreateWallet("password", base::DoNothing());
8082
}
8183

8284
content::WebContents* web_contents() {

browser/profiles/brave_renderer_updater.cc

+26-4
Original file line numberDiff line numberDiff line change
@@ -9,8 +9,11 @@
99

1010
#include "base/functional/bind.h"
1111
#include "brave/browser/brave_wallet/brave_wallet_context_utils.h"
12+
#include "brave/browser/brave_wallet/keyring_service_factory.h"
13+
#include "brave/browser/ethereum_remote_client/ethereum_remote_client_constants.h"
1214
#include "brave/common/brave_renderer_configuration.mojom.h"
1315
#include "brave/components/brave_wallet/browser/brave_wallet_utils.h"
16+
#include "brave/components/brave_wallet/browser/keyring_service.h"
1417
#include "brave/components/brave_wallet/browser/pref_names.h"
1518
#include "brave/components/brave_wallet/common/brave_wallet.mojom.h"
1619
#include "brave/components/de_amp/browser/de_amp_util.h"
@@ -20,6 +23,7 @@
2023
#include "components/prefs/pref_service.h"
2124
#include "content/public/browser/browser_thread.h"
2225
#include "content/public/browser/render_process_host.h"
26+
#include "extensions/browser/extension_registry.h"
2327
#include "ipc/ipc_channel_proxy.h"
2428
#include "mojo/public/cpp/bindings/pending_receiver.h"
2529

@@ -47,6 +51,10 @@ BraveRendererUpdater::BraveRendererUpdater(Profile* profile)
4751

4852
BraveRendererUpdater::~BraveRendererUpdater() = default;
4953

54+
void BraveRendererUpdater::UpdateAllRenderersForTesting() {
55+
UpdateAllRenderers();
56+
}
57+
5058
void BraveRendererUpdater::InitializeRenderer(
5159
content::RenderProcessHost* render_process_host) {
5260
auto renderer_configuration = GetRendererConfiguration(render_process_host);
@@ -99,12 +107,25 @@ void BraveRendererUpdater::UpdateAllRenderers() {
99107
void BraveRendererUpdater::UpdateRenderer(
100108
mojo::AssociatedRemote<brave::mojom::BraveRendererConfiguration>*
101109
renderer_configuration) {
110+
extensions::ExtensionRegistry* registry =
111+
extensions::ExtensionRegistry::Get(profile_);
112+
bool has_installed_metamask =
113+
registry &&
114+
registry->enabled_extensions().Contains(metamask_extension_id);
115+
brave_wallet::KeyringService* keyring_service =
116+
brave_wallet::KeyringServiceFactory::GetServiceForContext(profile_);
117+
bool wallet_created =
118+
keyring_service &&
119+
keyring_service->IsKeyringCreated(brave_wallet::mojom::kDefaultKeyringId);
120+
bool should_ignore_brave_wallet = !wallet_created || has_installed_metamask;
121+
102122
auto default_ethereum_wallet =
103123
static_cast<brave_wallet::mojom::DefaultWallet>(
104124
brave_wallet_ethereum_provider_.GetValue());
105125
bool brave_use_native_ethereum_wallet =
106-
(default_ethereum_wallet ==
107-
brave_wallet::mojom::DefaultWallet::BraveWalletPreferExtension ||
126+
((default_ethereum_wallet ==
127+
brave_wallet::mojom::DefaultWallet::BraveWalletPreferExtension &&
128+
!should_ignore_brave_wallet) ||
108129
default_ethereum_wallet ==
109130
brave_wallet::mojom::DefaultWallet::BraveWallet) &&
110131
is_wallet_allowed_for_context_ && brave_wallet::IsDappsSupportEnabled();
@@ -115,8 +136,9 @@ void BraveRendererUpdater::UpdateRenderer(
115136
auto default_solana_wallet = static_cast<brave_wallet::mojom::DefaultWallet>(
116137
brave_wallet_solana_provider_.GetValue());
117138
bool brave_use_native_solana_wallet =
118-
(default_solana_wallet ==
119-
brave_wallet::mojom::DefaultWallet::BraveWalletPreferExtension ||
139+
((default_ethereum_wallet ==
140+
brave_wallet::mojom::DefaultWallet::BraveWalletPreferExtension &&
141+
!should_ignore_brave_wallet) ||
120142
default_solana_wallet ==
121143
brave_wallet::mojom::DefaultWallet::BraveWallet) &&
122144
is_wallet_allowed_for_context_ && brave_wallet::IsDappsSupportEnabled();

browser/profiles/brave_renderer_updater.h

+4
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,10 @@ class BraveRendererUpdater : public KeyedService {
3232
// Initialize a newly-started renderer process.
3333
void InitializeRenderer(content::RenderProcessHost* render_process_host);
3434

35+
// TODO(cypt4): Remove this method after adding subscribtion on
36+
// ExtensionRegistry and KeyringService
37+
void UpdateAllRenderersForTesting();
38+
3539
private:
3640
std::vector<mojo::AssociatedRemote<brave::mojom::BraveRendererConfiguration>>
3741
GetRendererConfigurations();

0 commit comments

Comments
 (0)