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

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

Issue 1656005: Fix password mgr heuristics for sites that keep the login form around after signin (Closed)
Patch Set: Responding to feedback Created 10 years, 8 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: chrome/browser/password_manager/password_manager.cc
diff --git a/chrome/browser/password_manager/password_manager.cc b/chrome/browser/password_manager/password_manager.cc
index fc6c58eb50d5cda6d1776a7ac3bbfe5dadd1c35c..8ee0ac85f9b8f22fac2ffb03035644b61e986cd9 100644
--- a/chrome/browser/password_manager/password_manager.cc
+++ b/chrome/browser/password_manager/password_manager.cc
@@ -116,7 +116,7 @@ void PasswordManager::DidStopLoading() {
}
}
-void PasswordManager::PasswordFormsSeen(
+void PasswordManager::PasswordFormsFound(
const std::vector<PasswordForm>& forms) {
if (!delegate_->GetProfileForPasswordManager())
return;
@@ -128,22 +128,28 @@ void PasswordManager::PasswordFormsSeen(
std::vector<PasswordForm>::const_iterator iter;
for (iter = forms.begin(); iter != forms.end(); iter++) {
- if (provisional_save_manager_.get() &&
- provisional_save_manager_->DoesManage(*iter)) {
- // The form trying to be saved has immediately re-appeared. Assume
- // login failure and abort this save. Fallback to pending login state
- // since the user may try again.
- pending_login_managers_.push_back(provisional_save_manager_.release());
+ bool ssl_valid = iter->origin.SchemeIsSecure() && !had_ssl_error;
+ PasswordFormManager* manager =
+ new PasswordFormManager(delegate_->GetProfileForPasswordManager(),
+ this, *iter, ssl_valid);
+ pending_login_managers_.push_back(manager);
+ manager->FetchMatchingLoginsFromWebDatabase();
+ }
+}
+
+void PasswordManager::PasswordFormsVisible(
+ const std::vector<PasswordForm>& visible_forms) {
+ if (!provisional_save_manager_.get())
+ return;
+ std::vector<PasswordForm>::const_iterator iter;
+ for (iter = visible_forms.begin(); iter != visible_forms.end(); iter++) {
+ if (provisional_save_manager_->DoesManage(*iter)) {
+ // The form trying to be saved has immediately re-appeared. Assume login
+ // failure and abort this save, by clearing provisional_save_manager_.
// Don't delete the login managers since the user may try again
// and we want to be able to save in that case.
+ provisional_save_manager_.release();
break;
- } else {
- bool ssl_valid = iter->origin.SchemeIsSecure() && !had_ssl_error;
- PasswordFormManager* manager =
- new PasswordFormManager(delegate_->GetProfileForPasswordManager(),
- this, *iter, ssl_valid);
- pending_login_managers_.push_back(manager);
- manager->FetchMatchingLoginsFromWebDatabase();
}
}
}
« no previous file with comments | « chrome/browser/password_manager/password_manager.h ('k') | chrome/browser/password_manager/password_manager_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698