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

Unified Diff: chrome/browser/password_manager/password_form_manager.cc

Issue 434070: Fixed handling of preferred login info in password manager.... (Closed) Base URL: svn://chrome-svn/chrome/trunk/src/
Patch Set: Created 11 years, 1 month 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
« no previous file with comments | « chrome/browser/password_manager/password_form_manager.h ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: chrome/browser/password_manager/password_form_manager.cc
===================================================================
--- chrome/browser/password_manager/password_form_manager.cc (revision 33050)
+++ chrome/browser/password_manager/password_form_manager.cc (working copy)
@@ -120,7 +120,7 @@
}
// Save the pending_credentials_ entry marked as blacklisted.
- SaveAsNewLogin();
+ SaveAsNewLogin(false);
}
bool PasswordFormManager::IsNewLogin() {
@@ -161,7 +161,7 @@
DCHECK(!profile_->IsOffTheRecord());
if (IsNewLogin())
- SaveAsNewLogin();
+ SaveAsNewLogin(true);
else
UpdateLogin();
}
@@ -293,7 +293,7 @@
return false;
}
-void PasswordFormManager::SaveAsNewLogin() {
+void PasswordFormManager::SaveAsNewLogin(bool reset_preferred_login) {
DCHECK_EQ(state_, POST_MATCHING_PHASE);
DCHECK(IsNewLogin());
// The new_form is being used to sign in, so it is preferred.
@@ -312,8 +312,26 @@
pending_credentials_.date_created = Time::Now();
password_store->AddLogin(pending_credentials_);
+
+ if (reset_preferred_login) {
+ UpdatePreferredLoginState(password_store);
+ }
}
+void PasswordFormManager::UpdatePreferredLoginState(
+ PasswordStore* password_store) {
+ DCHECK(password_store);
+ PasswordFormMap::iterator iter;
+ for (iter = best_matches_.begin(); iter != best_matches_.end(); iter++) {
+ if (iter->second->username_value != pending_credentials_.username_value &&
+ iter->second->preferred) {
+ // This wasn't the selected login but it used to be preferred.
+ iter->second->preferred = false;
+ password_store->UpdateLogin(*iter->second);
+ }
+ }
+}
+
void PasswordFormManager::UpdateLogin() {
DCHECK_EQ(state_, POST_MATCHING_PHASE);
DCHECK(preferred_match_);
@@ -330,16 +348,8 @@
return;
}
- // Update all matches to reflect new preferred status.
- PasswordFormMap::iterator iter;
- for (iter = best_matches_.begin(); iter != best_matches_.end(); iter++) {
- if ((iter->second->username_value != pending_credentials_.username_value) &&
- iter->second->preferred) {
- // This wasn't the selected login but it used to be preferred.
- iter->second->preferred = false;
- password_store->UpdateLogin(*iter->second);
- }
- }
+ UpdatePreferredLoginState(password_store);
+
// Update the new preferred login.
// Note origin.spec().length > signon_realm.length implies the origin has a
// path, since signon_realm is a prefix of origin for HTML password forms.
« no previous file with comments | « chrome/browser/password_manager/password_form_manager.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698