Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(266)

Unified Diff: components/password_manager/core/browser/password_form_manager.cc

Issue 1272613002: Remove credentials with empty username (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Implemented checker Created 5 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: components/password_manager/core/browser/password_form_manager.cc
diff --git a/components/password_manager/core/browser/password_form_manager.cc b/components/password_manager/core/browser/password_form_manager.cc
index 7dfd664f25c5bd1513d6ec0d8714855da07fc1f1..a68f1ec52edf2025a3084eba7b409e4a0a32f96f 100644
--- a/components/password_manager/core/browser/password_form_manager.cc
+++ b/components/password_manager/core/browser/password_form_manager.cc
@@ -289,9 +289,10 @@ void PasswordFormManager::Save() {
LogPasswordGenerationSubmissionEvent(PASSWORD_USED);
}
- if (IsNewLogin())
+ if (IsNewLogin()) {
SaveAsNewLogin(true);
- else
+ DeleteEmptyUsernameCredentials();
+ } else
UpdateLogin();
}
@@ -996,6 +997,22 @@ int PasswordFormManager::ScoreResult(const PasswordForm& candidate) const {
return score;
}
+void PasswordFormManager::DeleteEmptyUsernameCredentials() {
+ if (best_matches_.empty() || pending_credentials_.username_value.empty())
+ return;
+ PasswordStore* password_store = client_->GetPasswordStore();
+ if (!password_store) {
+ NOTREACHED();
+ return;
+ }
+ for (auto iter = best_matches_.begin(); iter != best_matches_.end(); ++iter) {
+ PasswordForm* form = iter->second;
+ if (!form->IsPublicSuffixMatch() && form->username_value.empty() &&
+ form->password_value == pending_credentials_.password_value)
+ password_store->RemoveLogin(*form);
+ }
+}
+
PasswordForm* PasswordFormManager::FindBestMatchForUpdatePassword(
const base::string16& password) const {
if (best_matches_.size() == 1) {

Powered by Google App Engine
This is Rietveld 408576698