From fcd465615abd6dcbca5f3a00aecd3dcc1ad2e65d Mon Sep 17 00:00:00 2001 From: Darnell Andries Date: Tue, 29 Nov 2022 14:52:49 -0800 Subject: [PATCH] Modify ethereum provider P3A metric for native wallets that are not set up --- .../brave_wallet/brave_wallet_p3a_unittest.cc | 20 +++++++++++++++++++ .../brave_wallet/browser/brave_wallet_p3a.cc | 12 +++++++++-- components/p3a/metric_names.h | 2 +- .../test/js_ethereum_provider_browsertest.cc | 6 ++---- 4 files changed, 33 insertions(+), 7 deletions(-) diff --git a/browser/brave_wallet/brave_wallet_p3a_unittest.cc b/browser/brave_wallet/brave_wallet_p3a_unittest.cc index d6467dc1a98..33375be1f33 100644 --- a/browser/brave_wallet/brave_wallet_p3a_unittest.cc +++ b/browser/brave_wallet/brave_wallet_p3a_unittest.cc @@ -197,4 +197,24 @@ TEST_F(BraveWalletP3AUnitTest, ActiveAccounts) { histogram_tester_->ExpectBucketCount(kSolActiveAccountHistogramName, 2, 1); } +TEST_F(BraveWalletP3AUnitTest, EthProvider) { + histogram_tester_->ExpectTotalCount(kEthProviderHistogramName, 0); + + wallet_p3a_->ReportEthereumProvider(mojom::EthereumProviderType::Native); + histogram_tester_->ExpectUniqueSample(kEthProviderHistogramName, 0, 1); + + keyring_service_->CreateWallet("testing123", base::DoNothing()); + WaitForResponse(); + + wallet_p3a_->ReportEthereumProvider(mojom::EthereumProviderType::Native); + histogram_tester_->ExpectBucketCount(kEthProviderHistogramName, 2, 1); + + keyring_service_->Reset(); + wallet_p3a_->ReportEthereumProvider(mojom::EthereumProviderType::Native); + histogram_tester_->ExpectBucketCount(kEthProviderHistogramName, 0, 2); + + wallet_p3a_->ReportEthereumProvider(mojom::EthereumProviderType::ThirdParty); + histogram_tester_->ExpectBucketCount(kEthProviderHistogramName, 1, 1); +} + } // namespace brave_wallet diff --git a/components/brave_wallet/browser/brave_wallet_p3a.cc b/components/brave_wallet/browser/brave_wallet_p3a.cc index f4ea187f858..0c4820dc865 100644 --- a/components/brave_wallet/browser/brave_wallet_p3a.cc +++ b/components/brave_wallet/browser/brave_wallet_p3a.cc @@ -27,7 +27,7 @@ const char kDefaultSolanaWalletHistogramName[] = const char kKeyringCreatedHistogramName[] = "Brave.Wallet.KeyringCreated"; const char kOnboardingConversionHistogramName[] = "Brave.Wallet.OnboardingConversion.2"; -const char kEthProviderHistogramName[] = "Brave.Wallet.EthProvider"; +const char kEthProviderHistogramName[] = "Brave.Wallet.EthProvider.2"; const char kEthTransactionSentHistogramName[] = "Brave.Wallet.EthTransactionSent"; const char kSolTransactionSentHistogramName[] = @@ -111,7 +111,15 @@ void BraveWalletP3A::Update() { void BraveWalletP3A::ReportEthereumProvider( mojom::EthereumProviderType provider_type) { - UMA_HISTOGRAM_ENUMERATION(kEthProviderHistogramName, provider_type); + mojom::EthereumProviderType answer = provider_type; + + if (provider_type == mojom::EthereumProviderType::Native && + !keyring_service_->IsKeyringCreated(mojom::kDefaultKeyringId)) { + // If native wallet is the current provider, but the wallet is not setup, + // report "none". + answer = mojom::EthereumProviderType::None; + } + UMA_HISTOGRAM_ENUMERATION(kEthProviderHistogramName, answer); } void BraveWalletP3A::ReportOnboardingAction( diff --git a/components/p3a/metric_names.h b/components/p3a/metric_names.h index 98e5f286192..6774d160a1f 100644 --- a/components/p3a/metric_names.h +++ b/components/p3a/metric_names.h @@ -84,7 +84,7 @@ constexpr inline auto kCollectedTypicalHistograms = "Brave.Wallet.ActiveEthAccounts", "Brave.Wallet.ActiveFilAccounts", "Brave.Wallet.ActiveSolAccounts", - "Brave.Wallet.EthProvider", + "Brave.Wallet.EthProvider.2", "Brave.Wallet.EthTransactionSent", "Brave.Wallet.FilTransactionSent", "Brave.Wallet.DefaultSolanaWalletSetting", diff --git a/renderer/test/js_ethereum_provider_browsertest.cc b/renderer/test/js_ethereum_provider_browsertest.cc index 38f252cdeb1..6a2a44fc028 100644 --- a/renderer/test/js_ethereum_provider_browsertest.cc +++ b/renderer/test/js_ethereum_provider_browsertest.cc @@ -128,14 +128,14 @@ IN_PROC_BROWSER_TEST_F(JSEthereumProviderBrowserTest, AttachOnReload) { std::string::npos); EXPECT_EQ(browser()->tab_strip_model()->GetTabCount(), 1); - histogram_tester_->ExpectBucketCount("Brave.Wallet.EthProvider", 0, 1); + histogram_tester_->ExpectBucketCount("Brave.Wallet.EthProvider.2", 0, 1); brave_wallet::SetDefaultEthereumWallet( browser()->profile()->GetPrefs(), brave_wallet::mojom::DefaultWallet::BraveWallet); ReloadAndWaitForLoadStop(); - histogram_tester_->ExpectBucketCount("Brave.Wallet.EthProvider", 2, 1); + histogram_tester_->ExpectBucketCount("Brave.Wallet.EthProvider.2", 0, 2); auto result = content::EvalJs(primary_main_frame(), command); EXPECT_EQ(result.error, ""); @@ -152,8 +152,6 @@ IN_PROC_BROWSER_TEST_F(JSEthereumProviderBrowserTest, AttachOnReload) { // overwrite successfully EXPECT_EQ(content::EvalJs(primary_main_frame(), overwrite).ExtractString(), "test"); - - histogram_tester_->ExpectBucketCount("Brave.Wallet.EthProvider", 2, 2); } IN_PROC_BROWSER_TEST_F(JSEthereumProviderBrowserTest,