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 0ba11e98b6a3568be54c2acedc36dd93665ed8d2..1af190b939d091f5ec1dce2f5300427d7434d7ae 100644 |
--- a/chrome/browser/password_manager/password_manager.cc |
+++ b/chrome/browser/password_manager/password_manager.cc |
@@ -112,6 +112,10 @@ void PasswordManager::ProvisionallySavePassword(const PasswordForm& form) { |
if (manager->IsBlacklisted()) |
return; |
+ // Bail if we're missing any of the necessary form components. |
+ if (!manager->HasValidPasswordForm()) |
+ return; |
+ |
PasswordForm provisionally_saved_form(form); |
provisionally_saved_form.ssl_valid = form.origin.SchemeIsSecure() && |
!delegate_->DidLastPageLoadEncounterSSLErrors(); |
@@ -184,8 +188,6 @@ void PasswordManager::OnPasswordFormsRendered( |
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_->SubmitFailed(); |
provisional_save_manager_.reset(); |
return; |