From d52bc7bbc8a974a1ebdd770cc9ef409c29b78d7b Mon Sep 17 00:00:00 2001 From: Anton Paymyshev Date: Tue, 12 May 2026 20:47:37 +0700 Subject: [PATCH] [Wallet] Delay unlock with dev-wallet-password (#36340) --- components/brave_wallet/browser/keyring_service.cc | 5 ++++- .../brave_wallet/browser/keyring_service_unittest.cc | 10 ++++++++++ 2 files changed, 14 insertions(+), 1 deletion(-) diff --git a/components/brave_wallet/browser/keyring_service.cc b/components/brave_wallet/browser/keyring_service.cc index 476a60ec6c4..5491d4ac1ef 100644 --- a/components/brave_wallet/browser/keyring_service.cc +++ b/components/brave_wallet/browser/keyring_service.cc @@ -1096,7 +1096,10 @@ KeyringService::KeyringService(JsonRpcService* json_rpc_service, enabled_keyrings_ = GetEnabledKeyrings(); - MaybeUnlockWithCommandLine(); + // Delay unlock attempt until after initialization is done by caller. + base::SequencedTaskRunner::GetCurrentDefault()->PostTask( + FROM_HERE, base::BindOnce(&KeyringService::MaybeUnlockWithCommandLine, + weak_ptr_factory_.GetWeakPtr())); } KeyringService::~KeyringService() { diff --git a/components/brave_wallet/browser/keyring_service_unittest.cc b/components/brave_wallet/browser/keyring_service_unittest.cc index 560fdd54a1f..ddc26b18889 100644 --- a/components/brave_wallet/browser/keyring_service_unittest.cc +++ b/components/brave_wallet/browser/keyring_service_unittest.cc @@ -121,6 +121,13 @@ std::string GenerateBtcImportPayload(std::string_view private_key_hex) { return Base58EncodeWithCheck(buf); } +void WaitForPostedTask() { + base::RunLoop run_loop; + base::SingleThreadTaskRunner::GetCurrentDefault()->PostTask( + FROM_HERE, run_loop.QuitClosure()); + run_loop.Run(); +} + } // namespace class TestKeyringServiceObserver : public mojom::KeyringServiceObserver { @@ -4485,6 +4492,7 @@ TEST_F(KeyringServiceUnitTest, DevWalletPassword) { // Locked on start by default. { KeyringService service(json_rpc_service(), GetPrefs(), GetLocalState()); + WaitForPostedTask(); EXPECT_TRUE(service.IsLockedSync()); } @@ -4492,6 +4500,7 @@ TEST_F(KeyringServiceUnitTest, DevWalletPassword) { { cmdline->AppendSwitchASCII(switches::kDevWalletPassword, "some_password"); KeyringService service(json_rpc_service(), GetPrefs(), GetLocalState()); + WaitForPostedTask(); EXPECT_FALSE(service.IsLockedSync()); cmdline->RemoveSwitch(switches::kDevWalletPassword); } @@ -4500,6 +4509,7 @@ TEST_F(KeyringServiceUnitTest, DevWalletPassword) { { cmdline->AppendSwitchASCII(switches::kDevWalletPassword, "wrong_password"); KeyringService service(json_rpc_service(), GetPrefs(), GetLocalState()); + WaitForPostedTask(); EXPECT_TRUE(service.IsLockedSync()); cmdline->RemoveSwitch(switches::kDevWalletPassword); }