Commit d705fd61 authored by Mohamed Amir Yosef's avatar Mohamed Amir Yosef Committed by Commit Bot

[Passwords] Remove passwords from the correct store in ...

... CompromisedCredentialsManager()

Bug: 1108422
Change-Id: I66ea95309a1c3242fe8e32591ae986d68dbe5ee2
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2372429
Commit-Queue: Mohamed Amir Yosef <mamir@chromium.org>
Reviewed-by: default avatarJan Wilken Dörrie <jdoerrie@chromium.org>
Cr-Commit-Position: refs/heads/master@{#801348}
parent 80e5f268
......@@ -242,8 +242,11 @@ bool CompromisedCredentialsManager::UpdateCompromisedCredentials(
if (forms.empty())
return false;
for (size_t i = 1; i < forms.size(); ++i)
profile_store_->RemoveLogin(forms[i]);
for (size_t i = 1; i < forms.size(); ++i) {
PasswordStore& store =
forms[i].IsUsingAccountStore() ? *account_store_ : *profile_store_;
store.RemoveLogin(forms[i]);
}
// Note: We Invoke EditPassword on the presenter rather than UpdateLogin() on
// the store, so that observers of the presenter get notified of this event.
......@@ -259,8 +262,12 @@ bool CompromisedCredentialsManager::RemoveCompromisedCredential(
// Erase all matching credentials from the store. Return whether any
// credentials were deleted.
const auto& saved_passwords = it->second.forms;
for (const autofill::PasswordForm& saved_password : saved_passwords)
profile_store_->RemoveLogin(saved_password);
for (const autofill::PasswordForm& saved_password : saved_passwords) {
PasswordStore& store = saved_password.IsUsingAccountStore()
? *account_store_
: *profile_store_;
store.RemoveLogin(saved_password);
}
return !saved_passwords.empty();
}
......
......@@ -642,4 +642,31 @@ TEST_F(CompromisedCredentialsManagerWithTwoStoresTest,
EXPECT_EQ(1U, profile_store().compromised_credentials().size());
EXPECT_EQ(2U, account_store().compromised_credentials().size());
}
TEST_F(CompromisedCredentialsManagerWithTwoStoresTest,
RemoveCompromisedCredential) {
// Add `kUsername1`,`kPassword1` to both stores.
profile_store().AddLogin(
MakeSavedPassword(kExampleCom, kUsername1, kPassword1));
account_store().AddLogin(
MakeSavedPassword(kExampleCom, kUsername1, kPassword1));
// Mark `kUsername1` and `kPassword1` to be compromised in both stores.
profile_store().AddCompromisedCredentials(
MakeCompromised(kExampleCom, kUsername1));
account_store().AddCompromisedCredentials(
MakeCompromised(kExampleCom, kUsername1));
RunUntilIdle();
// Now remove the compromised credentials
EXPECT_TRUE(provider().RemoveCompromisedCredential(
CredentialView(kExampleCom, GURL(), base::ASCIIToUTF16(kUsername1),
base::ASCIIToUTF16(kPassword1))));
RunUntilIdle();
// It should have been removed from both stores.
EXPECT_TRUE(profile_store().stored_passwords().at(kExampleCom).empty());
EXPECT_TRUE(account_store().stored_passwords().at(kExampleCom).empty());
}
} // namespace password_manager
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment