9
9
10
10
#include " base/functional/bind.h"
11
11
#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"
12
14
#include " brave/common/brave_renderer_configuration.mojom.h"
13
15
#include " brave/components/brave_wallet/browser/brave_wallet_utils.h"
16
+ #include " brave/components/brave_wallet/browser/keyring_service.h"
14
17
#include " brave/components/brave_wallet/browser/pref_names.h"
15
18
#include " brave/components/brave_wallet/common/brave_wallet.mojom.h"
16
19
#include " brave/components/de_amp/browser/de_amp_util.h"
20
23
#include " components/prefs/pref_service.h"
21
24
#include " content/public/browser/browser_thread.h"
22
25
#include " content/public/browser/render_process_host.h"
26
+ #include " extensions/buildflags/buildflags.h"
23
27
#include " ipc/ipc_channel_proxy.h"
24
28
#include " mojo/public/cpp/bindings/pending_receiver.h"
25
29
30
+ #if BUILDFLAG(ENABLE_EXTENSIONS)
31
+ #include " extensions/browser/extension_registry.h"
32
+ #endif
33
+
26
34
BraveRendererUpdater::BraveRendererUpdater (Profile* profile)
27
35
: profile_(profile), is_wallet_allowed_for_context_(false ) {
28
36
PrefService* pref_service = profile->GetPrefs ();
@@ -99,12 +107,32 @@ void BraveRendererUpdater::UpdateAllRenderers() {
99
107
void BraveRendererUpdater::UpdateRenderer (
100
108
mojo::AssociatedRemote<brave::mojom::BraveRendererConfiguration>*
101
109
renderer_configuration) {
110
+ #if BUILDFLAG(ENABLE_EXTENSIONS)
111
+ extensions::ExtensionRegistry* registry =
112
+ extensions::ExtensionRegistry::Get (profile_);
113
+ bool has_installed_metamask =
114
+ registry &&
115
+ registry->enabled_extensions ().Contains (metamask_extension_id);
116
+ #else
117
+ bool has_installed_metamask = false ;
118
+ #endif
119
+
120
+ brave_wallet::KeyringService* keyring_service =
121
+ brave_wallet::KeyringServiceFactory::GetServiceForContext (profile_);
122
+ bool wallet_created =
123
+ keyring_service &&
124
+ keyring_service->IsKeyringCreated (brave_wallet::mojom::kDefaultKeyringId );
125
+ bool should_ignore_brave_wallet_for_eth =
126
+ !wallet_created || has_installed_metamask;
127
+ bool should_ignore_brave_wallet_for_sol = !wallet_created;
128
+
102
129
auto default_ethereum_wallet =
103
130
static_cast <brave_wallet::mojom::DefaultWallet>(
104
131
brave_wallet_ethereum_provider_.GetValue ());
105
132
bool brave_use_native_ethereum_wallet =
106
- (default_ethereum_wallet ==
107
- brave_wallet::mojom::DefaultWallet::BraveWalletPreferExtension ||
133
+ ((default_ethereum_wallet ==
134
+ brave_wallet::mojom::DefaultWallet::BraveWalletPreferExtension &&
135
+ !should_ignore_brave_wallet_for_eth) ||
108
136
default_ethereum_wallet ==
109
137
brave_wallet::mojom::DefaultWallet::BraveWallet) &&
110
138
is_wallet_allowed_for_context_ && brave_wallet::IsDappsSupportEnabled ();
@@ -115,8 +143,9 @@ void BraveRendererUpdater::UpdateRenderer(
115
143
auto default_solana_wallet = static_cast <brave_wallet::mojom::DefaultWallet>(
116
144
brave_wallet_solana_provider_.GetValue ());
117
145
bool brave_use_native_solana_wallet =
118
- (default_solana_wallet ==
119
- brave_wallet::mojom::DefaultWallet::BraveWalletPreferExtension ||
146
+ ((default_solana_wallet ==
147
+ brave_wallet::mojom::DefaultWallet::BraveWalletPreferExtension &&
148
+ !should_ignore_brave_wallet_for_sol) ||
120
149
default_solana_wallet ==
121
150
brave_wallet::mojom::DefaultWallet::BraveWallet) &&
122
151
is_wallet_allowed_for_context_ && brave_wallet::IsDappsSupportEnabled ();
0 commit comments