Force select MetaMask when installed
No longer prompt about selecting a web3 provider
This commit is contained in:
@@ -870,9 +870,6 @@ By installing this extension, you are agreeing to the Google Widevine Terms of U
|
||||
This anonymous info only lets Brave estimate the overall usage of certain features.
|
||||
</message>
|
||||
<!-- Web3 detection -->
|
||||
<message name="IDS_BRAVE_CRYPTO_WALLETS_METAMASK_INFOBAR_TEXT" desc="Text that shows on the info bar when a Dapp is detected">
|
||||
Would you like to use Brave's Crypto Wallets or MetaMask for Dapps?
|
||||
</message>
|
||||
<message name="IDS_BRAVE_CRYPTO_WALLETS_LAZY_LOAD_TEXT" desc="Text that shows on the info bar when a Dapp is detected">
|
||||
Would you like to start Crypto Wallets for web3 support on this page?
|
||||
</message>
|
||||
@@ -881,12 +878,6 @@ By installing this extension, you are agreeing to the Google Widevine Terms of U
|
||||
</message>
|
||||
<message name="IDS_BRAVE_CRYPTO_WALLETS_SETUP_CRYPTO_WALLETS" desc="Setup Crypto Wallets">
|
||||
Setup Crypto Wallets
|
||||
</message>
|
||||
<message name="IDS_BRAVE_CRYPTO_WALLETS_USE_METAMASK" desc="Use MetaMask and don't use Crypto Wallets">
|
||||
Use MetaMask
|
||||
</message>
|
||||
<message name="IDS_BRAVE_CRYPTO_WALLETS_SETUP" desc="Use Crypto Wallets">
|
||||
SETUP
|
||||
</message>
|
||||
<message name="IDS_BRAVE_CRYPTO_WALLETS_START_AND_RELOAD" desc="Start Crypto Wallets and reload">
|
||||
Start Crypto Wallets and reload
|
||||
|
||||
@@ -16,7 +16,6 @@
|
||||
#include "brave/components/brave_shields/browser/brave_shields_web_contents_observer.h"
|
||||
#include "brave/components/brave_sync/brave_sync_prefs.h"
|
||||
#include "brave/components/brave_rewards/common/pref_names.h"
|
||||
#include "brave/components/brave_wallet/browser/buildflags/buildflags.h"
|
||||
#include "brave/components/brave_wayback_machine/buildflags.h"
|
||||
#include "brave/components/brave_webtorrent/browser/buildflags/buildflags.h"
|
||||
#include "brave/components/ipfs/browser/buildflags/buildflags.h"
|
||||
@@ -53,10 +52,6 @@
|
||||
#include "brave/browser/ipfs/ipfs_service.h"
|
||||
#endif
|
||||
|
||||
#if BUILDFLAG(BRAVE_WALLET_ENABLED)
|
||||
#include "brave/browser/brave_wallet/brave_wallet_utils.h"
|
||||
#endif
|
||||
|
||||
#if BUILDFLAG(GEMINI_ENABLED)
|
||||
#include "brave/components/gemini/browser/pref_names.h"
|
||||
#endif
|
||||
@@ -92,10 +87,6 @@ void RegisterProfilePrefsForMigration(
|
||||
|
||||
dark_mode::RegisterBraveDarkModePrefsForMigration(registry);
|
||||
|
||||
#if BUILDFLAG(BRAVE_WALLET_ENABLED)
|
||||
brave_wallet::RegisterBraveWalletProfilePrefsForMigration(registry);
|
||||
#endif
|
||||
|
||||
// Restore "Other Bookmarks" migration
|
||||
registry->RegisterBooleanPref(kOtherBookmarksMigrated, false);
|
||||
}
|
||||
|
||||
@@ -10,8 +10,6 @@ source_set("brave_wallet") {
|
||||
"brave_wallet_delegate_impl.h",
|
||||
"brave_wallet_service_factory.cc",
|
||||
"brave_wallet_service_factory.h",
|
||||
"brave_wallet_utils.cc",
|
||||
"brave_wallet_utils.h",
|
||||
]
|
||||
deps = [
|
||||
"//brave/browser/extensions",
|
||||
|
||||
@@ -1,72 +0,0 @@
|
||||
/* Copyright (c) 2020 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 http://mozilla.org/MPL/2.0/. */
|
||||
|
||||
#include "brave/browser/brave_wallet/brave_wallet_utils.h"
|
||||
|
||||
#include "brave/common/brave_wallet_constants.h"
|
||||
#include "brave/common/extensions/extension_constants.h"
|
||||
#include "brave/common/pref_names.h"
|
||||
#include "chrome/browser/profiles/profile.h"
|
||||
#include "components/prefs/pref_registry_simple.h"
|
||||
#include "components/pref_registry/pref_registry_syncable.h"
|
||||
#include "extensions/browser/extension_prefs.h"
|
||||
|
||||
namespace {
|
||||
|
||||
void MigrateBraveWalletPrefs_V0_V1(Profile* profile) {
|
||||
PrefService* prefs = profile->GetPrefs();
|
||||
bool wallet_was_enabled = true; // true was the default
|
||||
if (prefs->HasPrefPath(kBraveWalletEnabledDeprecated)) {
|
||||
wallet_was_enabled = prefs->GetBoolean(kBraveWalletEnabledDeprecated);
|
||||
}
|
||||
|
||||
bool has_crypto_wallets = extensions::ExtensionPrefs::Get(profile)->
|
||||
HasPrefForExtension(ethereum_remote_client_extension_id);
|
||||
bool has_metamask = extensions::ExtensionPrefs::Get(profile)->
|
||||
HasPrefForExtension(metamask_extension_id);
|
||||
|
||||
BraveWalletWeb3ProviderTypes provider =
|
||||
BraveWalletWeb3ProviderTypes::ASK;
|
||||
if (!wallet_was_enabled&& has_metamask) {
|
||||
// If Crypto Wallets was disabled and MetaMask is installed, set to MetaMask
|
||||
provider = BraveWalletWeb3ProviderTypes::METAMASK;
|
||||
} else if (!wallet_was_enabled && !has_metamask) {
|
||||
// If Crypto Wallets is diabled, and MetaMask not installed, set None
|
||||
provider = BraveWalletWeb3ProviderTypes::NONE;
|
||||
} else if (wallet_was_enabled && has_metamask) {
|
||||
// If Crypto Wallets is enabled, and MetaMask is installed, set
|
||||
// to Crypto Wallets
|
||||
provider = BraveWalletWeb3ProviderTypes::CRYPTO_WALLETS;
|
||||
} else if (has_crypto_wallets && wallet_was_enabled) {
|
||||
// If CryptoWallets is enabled and installed, but MetaMask is not
|
||||
// installed, set Crypto Wallets.
|
||||
provider = BraveWalletWeb3ProviderTypes::CRYPTO_WALLETS;
|
||||
} else if (!has_crypto_wallets && wallet_was_enabled) {
|
||||
// If CryptoWallets is enabled and not installed yet, and MetaMask is not
|
||||
// installed, set Ask
|
||||
provider = BraveWalletWeb3ProviderTypes::ASK;
|
||||
}
|
||||
prefs->SetInteger(kBraveWalletWeb3Provider, static_cast<int>(provider));
|
||||
prefs->ClearPref(kBraveWalletEnabledDeprecated);
|
||||
prefs->SetInteger(kBraveWalletPrefVersion, 1);
|
||||
}
|
||||
|
||||
} // namespace
|
||||
|
||||
namespace brave_wallet {
|
||||
|
||||
void RegisterBraveWalletProfilePrefsForMigration(
|
||||
user_prefs::PrefRegistrySyncable* registry) {
|
||||
registry->RegisterBooleanPref(kBraveWalletEnabledDeprecated, true);
|
||||
}
|
||||
|
||||
void MigrateBraveWalletPrefs(Profile* profile) {
|
||||
PrefService* prefs = profile->GetPrefs();
|
||||
if (prefs->GetInteger(kBraveWalletPrefVersion) == 0) {
|
||||
MigrateBraveWalletPrefs_V0_V1(profile);
|
||||
}
|
||||
}
|
||||
|
||||
} // namespace brave_wallet
|
||||
@@ -1,23 +0,0 @@
|
||||
/* Copyright (c) 2020 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 http://mozilla.org/MPL/2.0/. */
|
||||
|
||||
#ifndef BRAVE_BROWSER_BRAVE_WALLET_BRAVE_WALLET_UTILS_H_
|
||||
#define BRAVE_BROWSER_BRAVE_WALLET_BRAVE_WALLET_UTILS_H_
|
||||
|
||||
class Profile;
|
||||
|
||||
namespace user_prefs {
|
||||
class PrefRegistrySyncable;
|
||||
}
|
||||
|
||||
namespace brave_wallet {
|
||||
|
||||
void MigrateBraveWalletPrefs(Profile* profile);
|
||||
void RegisterBraveWalletProfilePrefsForMigration(
|
||||
user_prefs::PrefRegistrySyncable* registry);
|
||||
|
||||
} // namespace brave_wallet
|
||||
|
||||
#endif // BRAVE_BROWSER_BRAVE_WALLET_BRAVE_WALLET_UTILS_H_
|
||||
@@ -1,136 +0,0 @@
|
||||
/* Copyright (c) 2020 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 http://mozilla.org/MPL/2.0/. */
|
||||
|
||||
#include "brave/browser/brave_wallet/brave_wallet_utils.h"
|
||||
|
||||
#include <memory>
|
||||
#include <string>
|
||||
#include <utility>
|
||||
|
||||
#include "brave/common/brave_wallet_constants.h"
|
||||
#include "brave/common/pref_names.h"
|
||||
#include "brave/common/extensions/extension_constants.h"
|
||||
#include "chrome/browser/prefs/browser_prefs.h"
|
||||
#include "chrome/test/base/testing_profile.h"
|
||||
#include "components/sync_preferences/testing_pref_service_syncable.h"
|
||||
#include "content/public/test/browser_task_environment.h"
|
||||
#include "extensions/browser/extension_prefs.h"
|
||||
#include "extensions/browser/extension_registry.h"
|
||||
#include "extensions/common/extension_builder.h"
|
||||
#include "testing/gtest/include/gtest/gtest.h"
|
||||
|
||||
class BraveWalletUtilsUnitTest : public testing::Test {
|
||||
public:
|
||||
void SetUp() override {
|
||||
profile_ = CreateProfile();
|
||||
}
|
||||
|
||||
Profile* profile() {
|
||||
return profile_.get();
|
||||
}
|
||||
|
||||
void AddCryptoWallets() {
|
||||
AddExtension(ethereum_remote_client_extension_id,
|
||||
&crypto_wallets_extension);
|
||||
}
|
||||
|
||||
void AddMetaMask() {
|
||||
AddExtension(metamask_extension_id, &metamask_extension);
|
||||
}
|
||||
|
||||
private:
|
||||
void AddExtension(const std::string& extension_id,
|
||||
scoped_refptr<const extensions::Extension> *extension) {
|
||||
extensions::DictionaryBuilder manifest;
|
||||
manifest.Set("name", "ext")
|
||||
.Set("version", "0.1")
|
||||
.Set("manifest_version", 2);
|
||||
*extension = extensions::ExtensionBuilder()
|
||||
.SetManifest(manifest.Build())
|
||||
.SetID(extension_id)
|
||||
.Build();
|
||||
ASSERT_TRUE(extension->get());
|
||||
extensions::ExtensionPrefs::Get(profile())->UpdateExtensionPref(
|
||||
extension_id, "test", std::make_unique<base::Value>(""));
|
||||
extensions::ExtensionRegistry::Get(profile())->AddEnabled(extension->get());
|
||||
}
|
||||
|
||||
std::unique_ptr<TestingProfile> CreateProfile() {
|
||||
TestingProfile::Builder builder;
|
||||
auto prefs =
|
||||
std::make_unique<sync_preferences::TestingPrefServiceSyncable>();
|
||||
RegisterUserProfilePrefs(prefs->registry());
|
||||
builder.SetPrefService(std::move(prefs));
|
||||
return builder.Build();
|
||||
}
|
||||
|
||||
content::BrowserTaskEnvironment task_environment_;
|
||||
std::unique_ptr<TestingProfile> profile_;
|
||||
scoped_refptr<const extensions::Extension> metamask_extension;
|
||||
scoped_refptr<const extensions::Extension> crypto_wallets_extension;
|
||||
};
|
||||
|
||||
// If Crypto Wallets was disabled and MetaMask is installed, set to MetaMask
|
||||
TEST_F(BraveWalletUtilsUnitTest, TestPrefMigrationMMCryptoWalletsDisabled) {
|
||||
AddMetaMask();
|
||||
profile()->GetPrefs()->SetBoolean(kBraveWalletEnabledDeprecated, false);
|
||||
|
||||
brave_wallet::MigrateBraveWalletPrefs(profile());
|
||||
|
||||
auto provider = static_cast<BraveWalletWeb3ProviderTypes>(
|
||||
profile()->GetPrefs()->GetInteger(kBraveWalletWeb3Provider));
|
||||
ASSERT_EQ(provider, BraveWalletWeb3ProviderTypes::METAMASK);
|
||||
}
|
||||
|
||||
// If Crypto Wallets is diabled, and MetaMask not installed, set None
|
||||
TEST_F(BraveWalletUtilsUnitTest, TestPrefMigrationCryptoWalletsDisabled) {
|
||||
AddCryptoWallets();
|
||||
profile()->GetPrefs()->SetBoolean(kBraveWalletEnabledDeprecated, false);
|
||||
|
||||
brave_wallet::MigrateBraveWalletPrefs(profile());
|
||||
|
||||
auto provider = static_cast<BraveWalletWeb3ProviderTypes>(
|
||||
profile()->GetPrefs()->GetInteger(kBraveWalletWeb3Provider));
|
||||
ASSERT_EQ(provider, BraveWalletWeb3ProviderTypes::NONE);
|
||||
}
|
||||
|
||||
// If Crypto Wallets is enabled, and MetaMask is installed, set
|
||||
// to Crypto Wallets
|
||||
TEST_F(BraveWalletUtilsUnitTest, TestPrefMigrationCryptoWalletsAndMMInstalled) {
|
||||
profile()->GetPrefs()->SetBoolean(kBraveWalletEnabledDeprecated, true);
|
||||
AddCryptoWallets();
|
||||
AddMetaMask();
|
||||
|
||||
brave_wallet::MigrateBraveWalletPrefs(profile());
|
||||
|
||||
auto provider = static_cast<BraveWalletWeb3ProviderTypes>(
|
||||
profile()->GetPrefs()->GetInteger(kBraveWalletWeb3Provider));
|
||||
ASSERT_EQ(provider, BraveWalletWeb3ProviderTypes::CRYPTO_WALLETS);
|
||||
}
|
||||
|
||||
// If CryptoWallets is enabled and installed, but MetaMask is not
|
||||
// installed, set Crypto Wallets.
|
||||
TEST_F(BraveWalletUtilsUnitTest, TestPrefMigrationCryptoWalletsInstalled) {
|
||||
profile()->GetPrefs()->SetBoolean(kBraveWalletEnabledDeprecated, true);
|
||||
AddCryptoWallets();
|
||||
|
||||
brave_wallet::MigrateBraveWalletPrefs(profile());
|
||||
|
||||
auto provider = static_cast<BraveWalletWeb3ProviderTypes>(
|
||||
profile()->GetPrefs()->GetInteger(kBraveWalletWeb3Provider));
|
||||
ASSERT_EQ(provider, BraveWalletWeb3ProviderTypes::CRYPTO_WALLETS);
|
||||
}
|
||||
|
||||
// If CryptoWallets is enabled and not installed yet, and MetaMask is not
|
||||
// installed, set Ask
|
||||
TEST_F(BraveWalletUtilsUnitTest, TestPrefMigrationNothingInstalled) {
|
||||
profile()->GetPrefs()->SetBoolean(kBraveWalletEnabledDeprecated, true);
|
||||
|
||||
brave_wallet::MigrateBraveWalletPrefs(profile());
|
||||
|
||||
auto provider = static_cast<BraveWalletWeb3ProviderTypes>(
|
||||
profile()->GetPrefs()->GetInteger(kBraveWalletWeb3Provider));
|
||||
ASSERT_EQ(provider, BraveWalletWeb3ProviderTypes::ASK);
|
||||
}
|
||||
@@ -10,6 +10,7 @@
|
||||
|
||||
#include "base/json/json_writer.h"
|
||||
#include "base/values.h"
|
||||
#include "brave/browser/extensions/brave_wallet_util.h"
|
||||
#include "brave/browser/infobars/crypto_wallets_infobar_delegate.h"
|
||||
#include "brave/browser/profiles/profile_util.h"
|
||||
#include "brave/common/brave_wallet_constants.h"
|
||||
@@ -27,7 +28,6 @@
|
||||
#include "extensions/browser/extension_util.h"
|
||||
#include "brave/browser/brave_wallet/brave_wallet_service_factory.h"
|
||||
#include "brave/components/brave_wallet/browser/brave_wallet_service.h"
|
||||
#include "brave/browser/extensions/brave_wallet_util.h"
|
||||
#include "ui/base/l10n/l10n_util.h"
|
||||
|
||||
namespace {
|
||||
@@ -82,13 +82,9 @@ BraveWalletPromptToEnableWalletFunction::Run() {
|
||||
CryptoWalletsInfoBarDelegate::InfobarSubType subtype =
|
||||
CryptoWalletsInfoBarDelegate::InfobarSubType::GENERIC_SETUP;
|
||||
auto* service = GetBraveWalletService(browser_context());
|
||||
auto* registry = extensions::ExtensionRegistry::Get(profile);
|
||||
if (service->ShouldShowLazyLoadInfobar()) {
|
||||
subtype = CryptoWalletsInfoBarDelegate::InfobarSubType::
|
||||
LOAD_CRYPTO_WALLETS;
|
||||
} else if (registry->ready_extensions().Contains(metamask_extension_id)) {
|
||||
subtype = CryptoWalletsInfoBarDelegate::InfobarSubType::
|
||||
CRYPTO_WALLETS_METAMASK;
|
||||
}
|
||||
CryptoWalletsInfoBarDelegate::Create(infobar_service, subtype);
|
||||
}
|
||||
@@ -147,15 +143,22 @@ BraveWalletShouldPromptForSetupFunction::Run() {
|
||||
ExtensionFunction::ResponseAction
|
||||
BraveWalletShouldCheckForDappsFunction::Run() {
|
||||
Profile* profile = Profile::FromBrowserContext(browser_context());
|
||||
if (brave::IsTorProfile(profile)) {
|
||||
return RespondNow(OneArgument(
|
||||
std::make_unique<base::Value>(false)));
|
||||
}
|
||||
auto provider = static_cast<BraveWalletWeb3ProviderTypes>(
|
||||
profile->GetPrefs()->GetInteger(kBraveWalletWeb3Provider));
|
||||
bool dappDetection = !brave::IsTorProfile(profile);
|
||||
if (provider != BraveWalletWeb3ProviderTypes::ASK) {
|
||||
auto* service = GetBraveWalletService(browser_context());
|
||||
dappDetection = provider == BraveWalletWeb3ProviderTypes::ASK ||
|
||||
(provider == BraveWalletWeb3ProviderTypes::CRYPTO_WALLETS &&
|
||||
!service->IsCryptoWalletsReady());
|
||||
}
|
||||
auto* registry = extensions::ExtensionRegistry::Get(profile);
|
||||
bool has_metamask =
|
||||
registry->ready_extensions().Contains(metamask_extension_id);
|
||||
|
||||
auto* service = GetBraveWalletService(browser_context());
|
||||
bool dappDetection = (
|
||||
provider == BraveWalletWeb3ProviderTypes::ASK && !has_metamask) ||
|
||||
(provider == BraveWalletWeb3ProviderTypes::CRYPTO_WALLETS &&
|
||||
!service->IsCryptoWalletsReady());
|
||||
|
||||
return RespondNow(OneArgument(
|
||||
std::make_unique<base::Value>(dappDetection)));
|
||||
}
|
||||
|
||||
@@ -68,7 +68,7 @@ class BraveWalletAPIBrowserTest : public InProcessBrowserTest,
|
||||
ASSERT_TRUE(embedded_test_server()->Start());
|
||||
}
|
||||
|
||||
void AddFakeMetaMaskExtension() {
|
||||
void AddFakeMetaMaskExtension(bool is_update) {
|
||||
DictionaryBuilder manifest;
|
||||
manifest.Set("name", "ext")
|
||||
.Set("version", "0.1")
|
||||
@@ -78,9 +78,25 @@ class BraveWalletAPIBrowserTest : public InProcessBrowserTest,
|
||||
.SetID(metamask_extension_id)
|
||||
.Build();
|
||||
ASSERT_TRUE(extension_);
|
||||
ExtensionRegistry::Get(browser()->profile())->AddReady(extension_.get());
|
||||
if (!is_update) {
|
||||
ExtensionRegistry::Get(browser()->profile())->AddEnabled(
|
||||
extension_.get());
|
||||
}
|
||||
ExtensionRegistry::Get(browser()->profile())->TriggerOnInstalled(
|
||||
extension_.get(), is_update);
|
||||
if (!is_update) {
|
||||
ExtensionRegistry::Get(browser()->profile())->AddReady(extension_.get());
|
||||
}
|
||||
}
|
||||
|
||||
void RemoveFakeMetaMaskExtension() {
|
||||
ExtensionRegistry::Get(browser()->profile())->RemoveReady(
|
||||
metamask_extension_id);
|
||||
ExtensionRegistry::Get(browser()->profile())->RemoveEnabled(
|
||||
metamask_extension_id);
|
||||
ExtensionRegistry::Get(browser()->profile())->TriggerOnUninstalled(
|
||||
extension_.get(), extensions::UNINSTALL_REASON_FOR_TESTING);
|
||||
}
|
||||
|
||||
~BraveWalletAPIBrowserTest() override {
|
||||
}
|
||||
@@ -175,38 +191,40 @@ IN_PROC_BROWSER_TEST_F(BraveWalletAPIBrowserTest, DappDetectionTestAccept) {
|
||||
}
|
||||
|
||||
IN_PROC_BROWSER_TEST_F(BraveWalletAPIBrowserTest,
|
||||
DappDetectionWithMetaMaskTestAccept) {
|
||||
FakeInstallMetaMask) {
|
||||
WaitForBraveExtensionAdded();
|
||||
AddFakeMetaMaskExtension();
|
||||
InfoBarService* infobar_service =
|
||||
InfoBarService::FromWebContents(active_contents());
|
||||
AddInfoBarObserver(infobar_service);
|
||||
EXPECT_TRUE(
|
||||
NavigateToURLUntilLoadStop("a.com", "/dapp.html"));
|
||||
WaitForCryptoWalletsInfobarAdded();
|
||||
CryptoWalletsInfoBarAccept(ConfirmInfoBarDelegate::BUTTON_OK |
|
||||
ConfirmInfoBarDelegate::BUTTON_CANCEL);
|
||||
WaitForTabCount(2);
|
||||
RemoveInfoBarObserver(infobar_service);
|
||||
}
|
||||
|
||||
IN_PROC_BROWSER_TEST_F(BraveWalletAPIBrowserTest,
|
||||
DappDetectionWithMetaMaskTestCancel) {
|
||||
WaitForBraveExtensionAdded();
|
||||
AddFakeMetaMaskExtension();
|
||||
InfoBarService* infobar_service =
|
||||
InfoBarService::FromWebContents(active_contents());
|
||||
AddInfoBarObserver(infobar_service);
|
||||
EXPECT_TRUE(
|
||||
NavigateToURLUntilLoadStop("a.com", "/dapp.html"));
|
||||
WaitForCryptoWalletsInfobarAdded();
|
||||
CryptoWalletsInfoBarCancel(ConfirmInfoBarDelegate::BUTTON_OK |
|
||||
ConfirmInfoBarDelegate::BUTTON_CANCEL);
|
||||
AddFakeMetaMaskExtension(false);
|
||||
// Should auto select MetaMask
|
||||
auto provider = static_cast<BraveWalletWeb3ProviderTypes>(
|
||||
browser()->profile()->GetPrefs()->GetInteger(kBraveWalletWeb3Provider));
|
||||
ASSERT_EQ(provider, BraveWalletWeb3ProviderTypes::METAMASK);
|
||||
RemoveInfoBarObserver(infobar_service);
|
||||
}
|
||||
|
||||
IN_PROC_BROWSER_TEST_F(BraveWalletAPIBrowserTest,
|
||||
FakeUninstallMetaMask) {
|
||||
WaitForBraveExtensionAdded();
|
||||
AddFakeMetaMaskExtension(false);
|
||||
RemoveFakeMetaMaskExtension();
|
||||
// Should revert back to Ask
|
||||
auto provider = static_cast<BraveWalletWeb3ProviderTypes>(
|
||||
browser()->profile()->GetPrefs()->GetInteger(kBraveWalletWeb3Provider));
|
||||
ASSERT_EQ(provider, BraveWalletWeb3ProviderTypes::CRYPTO_WALLETS);
|
||||
}
|
||||
|
||||
IN_PROC_BROWSER_TEST_F(BraveWalletAPIBrowserTest,
|
||||
UpdatesDoNotChangeSettings) {
|
||||
WaitForBraveExtensionAdded();
|
||||
// User installs MetaMask
|
||||
AddFakeMetaMaskExtension(false);
|
||||
// Then if the user explicitly manually sets it to Crypto Wallets
|
||||
browser()->profile()->GetPrefs()->SetInteger(kBraveWalletWeb3Provider,
|
||||
static_cast<int>(BraveWalletWeb3ProviderTypes::CRYPTO_WALLETS));
|
||||
// Then the user updates MetaMask
|
||||
AddFakeMetaMaskExtension(true);
|
||||
// It should not toggle the setting
|
||||
auto provider = static_cast<BraveWalletWeb3ProviderTypes>(
|
||||
browser()->profile()->GetPrefs()->GetInteger(kBraveWalletWeb3Provider));
|
||||
ASSERT_EQ(provider, BraveWalletWeb3ProviderTypes::CRYPTO_WALLETS);
|
||||
}
|
||||
|
||||
} // namespace extensions
|
||||
|
||||
@@ -28,7 +28,6 @@
|
||||
#include "ui/base/l10n/l10n_util.h"
|
||||
#include "ui/views/vector_icons.h"
|
||||
|
||||
|
||||
// static
|
||||
void CryptoWalletsInfoBarDelegate::Create(InfoBarService* infobar_service,
|
||||
CryptoWalletsInfoBarDelegate::InfobarSubType subtype) {
|
||||
@@ -60,16 +59,11 @@ base::string16 CryptoWalletsInfoBarDelegate::GetMessageText() const {
|
||||
if (subtype_ == InfobarSubType::LOAD_CRYPTO_WALLETS) {
|
||||
return l10n_util::GetStringUTF16(IDS_BRAVE_CRYPTO_WALLETS_LAZY_LOAD_TEXT);
|
||||
}
|
||||
if (subtype_ == InfobarSubType::CRYPTO_WALLETS_METAMASK) {
|
||||
return l10n_util::GetStringUTF16(
|
||||
IDS_BRAVE_CRYPTO_WALLETS_METAMASK_INFOBAR_TEXT);
|
||||
}
|
||||
return l10n_util::GetStringUTF16(IDS_BRAVE_CRYPTO_WALLETS_INFOBAR_TEXT);
|
||||
}
|
||||
|
||||
int CryptoWalletsInfoBarDelegate::GetButtons() const {
|
||||
if (subtype_ == InfobarSubType::LOAD_CRYPTO_WALLETS ||
|
||||
subtype_ == InfobarSubType::CRYPTO_WALLETS_METAMASK) {
|
||||
if (subtype_ == InfobarSubType::LOAD_CRYPTO_WALLETS) {
|
||||
return BUTTON_OK | BUTTON_CANCEL;
|
||||
}
|
||||
return BUTTON_OK;
|
||||
@@ -85,13 +79,8 @@ base::string16 CryptoWalletsInfoBarDelegate::GetButtonLabel(
|
||||
IDS_BRAVE_CRYPTO_WALLETS_START_AND_RELOAD);
|
||||
}
|
||||
|
||||
if (button == BUTTON_CANCEL) {
|
||||
return l10n_util::GetStringUTF16(IDS_BRAVE_CRYPTO_WALLETS_USE_METAMASK);
|
||||
}
|
||||
|
||||
return subtype_ == InfobarSubType::CRYPTO_WALLETS_METAMASK ?
|
||||
l10n_util::GetStringUTF16(IDS_BRAVE_CRYPTO_WALLETS_SETUP_CRYPTO_WALLETS) :
|
||||
l10n_util::GetStringUTF16(IDS_BRAVE_CRYPTO_WALLETS_SETUP);
|
||||
return l10n_util::GetStringUTF16(
|
||||
IDS_BRAVE_CRYPTO_WALLETS_SETUP_CRYPTO_WALLETS);
|
||||
}
|
||||
|
||||
base::string16 CryptoWalletsInfoBarDelegate::GetLinkText() const {
|
||||
@@ -132,22 +121,11 @@ bool CryptoWalletsInfoBarDelegate::Accept() {
|
||||
}
|
||||
|
||||
bool CryptoWalletsInfoBarDelegate::Cancel() {
|
||||
if (subtype_ == InfobarSubType::LOAD_CRYPTO_WALLETS) {
|
||||
content::WebContents* web_contents =
|
||||
InfoBarService::WebContentsFromInfoBar(infobar());
|
||||
if (web_contents) {
|
||||
Browser* browser = chrome::FindBrowserWithWebContents(web_contents);
|
||||
brave::ShowExtensionSettings(browser);
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
content::WebContents* web_contents =
|
||||
InfoBarService::WebContentsFromInfoBar(infobar());
|
||||
InfoBarService::WebContentsFromInfoBar(infobar());
|
||||
if (web_contents) {
|
||||
user_prefs::UserPrefs::Get(web_contents->GetBrowserContext())->
|
||||
SetInteger(kBraveWalletWeb3Provider,
|
||||
static_cast<int>(BraveWalletWeb3ProviderTypes::METAMASK));
|
||||
Browser* browser = chrome::FindBrowserWithWebContents(web_contents);
|
||||
brave::ShowExtensionSettings(browser);
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
@@ -24,8 +24,7 @@ class CryptoWalletsInfoBarDelegate : public ConfirmInfoBarDelegate {
|
||||
public:
|
||||
enum class InfobarSubType {
|
||||
LOAD_CRYPTO_WALLETS,
|
||||
GENERIC_SETUP,
|
||||
CRYPTO_WALLETS_METAMASK
|
||||
GENERIC_SETUP
|
||||
};
|
||||
static void Create(InfoBarService* infobar_service, InfobarSubType subtype);
|
||||
|
||||
|
||||
@@ -7,7 +7,6 @@
|
||||
#include "brave/browser/brave_profile_prefs.h"
|
||||
#include "brave/browser/themes/brave_dark_mode_utils.h"
|
||||
#include "brave/components/brave_sync/brave_sync_prefs.h"
|
||||
#include "brave/components/brave_wallet/browser/buildflags/buildflags.h"
|
||||
#include "chrome/browser/profiles/profile.h"
|
||||
#include "components/gcm_driver/gcm_buildflags.h"
|
||||
#include "third_party/widevine/cdm/buildflags.h"
|
||||
@@ -20,12 +19,6 @@
|
||||
#include "../../../../../chrome/browser/prefs/browser_prefs.cc"
|
||||
#undef MigrateObsoleteProfilePrefs
|
||||
|
||||
#if BUILDFLAG(BRAVE_WALLET_ENABLED)
|
||||
#include "brave/common/extensions/extension_constants.h"
|
||||
#include "extensions/browser/extension_prefs.h"
|
||||
#include "brave/browser/brave_wallet/brave_wallet_utils.h"
|
||||
#endif
|
||||
|
||||
#if !BUILDFLAG(USE_GCM_FROM_PLATFORM)
|
||||
#include "brave/browser/gcm_driver/brave_gcm_utils.h"
|
||||
#endif
|
||||
@@ -49,9 +42,4 @@ void MigrateObsoleteProfilePrefs(Profile* profile) {
|
||||
|
||||
// Added 12/2019.
|
||||
dark_mode::MigrateBraveDarkModePrefs(profile);
|
||||
|
||||
#if BUILDFLAG(BRAVE_WALLET_ENABLED)
|
||||
// Added 1/2020
|
||||
brave_wallet::MigrateBraveWalletPrefs(profile);
|
||||
#endif
|
||||
}
|
||||
|
||||
@@ -253,32 +253,43 @@ void BraveWalletService::RemoveUnusedWeb3ProviderContentScripts() {
|
||||
PrefService* prefs = user_prefs::UserPrefs::Get(context_);
|
||||
auto* shared_user_script_manager =
|
||||
extensions::ExtensionSystem::Get(context_)->shared_user_script_manager();
|
||||
if (!shared_user_script_manager) {
|
||||
return;
|
||||
}
|
||||
auto* registry = extensions::ExtensionRegistry::Get(context_);
|
||||
auto* metamask_extension =
|
||||
registry->enabled_extensions().GetByID(metamask_extension_id);
|
||||
auto* erc_extension =
|
||||
registry->enabled_extensions().GetByID(
|
||||
ethereum_remote_client_extension_id);
|
||||
auto provider = static_cast<BraveWalletWeb3ProviderTypes>(
|
||||
prefs->GetInteger(kBraveWalletWeb3Provider));
|
||||
if (metamask_extension) {
|
||||
shared_user_script_manager->OnExtensionUnloaded(
|
||||
context_, metamask_extension,
|
||||
extensions::UnloadedExtensionReason::DISABLE);
|
||||
}
|
||||
|
||||
auto* erc_extension =
|
||||
registry->enabled_extensions().GetByID(
|
||||
ethereum_remote_client_extension_id);
|
||||
if (erc_extension) {
|
||||
shared_user_script_manager->OnExtensionUnloaded(
|
||||
context_, erc_extension,
|
||||
extensions::UnloadedExtensionReason::DISABLE);
|
||||
}
|
||||
auto* metamask_extension =
|
||||
registry->enabled_extensions().GetByID(metamask_extension_id);
|
||||
if (metamask_extension) {
|
||||
shared_user_script_manager->OnExtensionUnloaded(
|
||||
context_, metamask_extension,
|
||||
extensions::UnloadedExtensionReason::DISABLE);
|
||||
}
|
||||
|
||||
// If the user has not manually gone into settings and selected
|
||||
// they want to use Crypto Wallets. Then we prefer MetaMask.
|
||||
// MetaMask is the default if it is installed.
|
||||
// We can't have 2 web3 providers, we:
|
||||
// 1) Check if MetaMask content scripts are disabled, if so, enable them.
|
||||
// 2) Check if CryptoWallets content scripts are enabled, if so, disable them.
|
||||
if (provider == BraveWalletWeb3ProviderTypes::CRYPTO_WALLETS) {
|
||||
if (erc_extension) {
|
||||
shared_user_script_manager->OnExtensionLoaded(context_, erc_extension);
|
||||
}
|
||||
} else if (provider == BraveWalletWeb3ProviderTypes::METAMASK) {
|
||||
} else if (provider != BraveWalletWeb3ProviderTypes::NONE) {
|
||||
if (metamask_extension) {
|
||||
shared_user_script_manager->OnExtensionLoaded(
|
||||
context_, metamask_extension);
|
||||
shared_user_script_manager->OnExtensionLoaded(context_,
|
||||
metamask_extension);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -287,10 +298,49 @@ void BraveWalletService::OnPreferenceChanged() {
|
||||
RemoveUnusedWeb3ProviderContentScripts();
|
||||
}
|
||||
|
||||
void BraveWalletService::OnExtensionInstalled(
|
||||
content::BrowserContext* browser_context,
|
||||
const extensions::Extension* extension, bool is_update) {
|
||||
if (extension->id() == metamask_extension_id && !is_update) {
|
||||
PrefService* prefs = user_prefs::UserPrefs::Get(context_);
|
||||
prefs->SetInteger(kBraveWalletWeb3Provider,
|
||||
static_cast<int>(BraveWalletWeb3ProviderTypes::METAMASK));
|
||||
RemoveUnusedWeb3ProviderContentScripts();
|
||||
}
|
||||
}
|
||||
|
||||
void BraveWalletService::OnExtensionLoaded(
|
||||
content::BrowserContext* browser_context,
|
||||
const extensions::Extension* extension) {
|
||||
RemoveUnusedWeb3ProviderContentScripts();
|
||||
if (extension->id() == metamask_extension_id ||
|
||||
extension->id() == ethereum_remote_client_extension_id) {
|
||||
RemoveUnusedWeb3ProviderContentScripts();
|
||||
}
|
||||
}
|
||||
|
||||
void BraveWalletService::OnExtensionUnloaded(
|
||||
content::BrowserContext* browser_context,
|
||||
const extensions::Extension* extension,
|
||||
extensions::UnloadedExtensionReason reason) {
|
||||
if (extension->id() == metamask_extension_id ||
|
||||
extension->id() == ethereum_remote_client_extension_id) {
|
||||
RemoveUnusedWeb3ProviderContentScripts();
|
||||
}
|
||||
}
|
||||
|
||||
void BraveWalletService::OnExtensionUninstalled(
|
||||
content::BrowserContext* browser_context,
|
||||
const extensions::Extension* extension,
|
||||
extensions::UninstallReason reason) {
|
||||
if (extension->id() == metamask_extension_id) {
|
||||
PrefService* prefs = user_prefs::UserPrefs::Get(context_);
|
||||
auto provider = static_cast<BraveWalletWeb3ProviderTypes>(
|
||||
prefs->GetInteger(kBraveWalletWeb3Provider));
|
||||
if (provider == BraveWalletWeb3ProviderTypes::METAMASK)
|
||||
prefs->SetInteger(kBraveWalletWeb3Provider,
|
||||
static_cast<int>(BraveWalletWeb3ProviderTypes::CRYPTO_WALLETS));
|
||||
RemoveUnusedWeb3ProviderContentScripts();
|
||||
}
|
||||
}
|
||||
|
||||
bool BraveWalletService::IsCryptoWalletsSetup() const {
|
||||
|
||||
@@ -77,9 +77,16 @@ class BraveWalletService : public KeyedService,
|
||||
bool LoadRootSeedInfo(std::vector<uint8_t> key, std::string* seed);
|
||||
void RemoveUnusedWeb3ProviderContentScripts();
|
||||
void OnPreferenceChanged();
|
||||
// ExtensionRegistryObserver implementation.
|
||||
void OnExtensionInstalled(content::BrowserContext* browser_context,
|
||||
const extensions::Extension* extension, bool is_update) override;
|
||||
void OnExtensionLoaded(content::BrowserContext* browser_context,
|
||||
const extensions::Extension* extension) override;
|
||||
const extensions::Extension* extension) override;
|
||||
void OnExtensionUnloaded(content::BrowserContext* browser_context,
|
||||
const extensions::Extension* extension,
|
||||
extensions::UnloadedExtensionReason reason) override;
|
||||
void OnExtensionUninstalled(content::BrowserContext* browser_context,
|
||||
const extensions::Extension* extension,
|
||||
extensions::UninstallReason reason) override;
|
||||
|
||||
content::BrowserContext* context_;
|
||||
std::unique_ptr<PrefChangeRegistrar> pref_change_registrar_;
|
||||
|
||||
@@ -333,7 +333,6 @@ test("brave_unit_tests") {
|
||||
if (brave_wallet_enabled) {
|
||||
sources += [
|
||||
"//brave/browser/extensions/brave_wallet_unittest.cc",
|
||||
"//brave/browser/brave_wallet/brave_wallet_utils_unittest.cc",
|
||||
]
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user