Chromium Code Reviews| Index: chrome/browser/password_manager/password_store_mac.cc |
| diff --git a/chrome/browser/password_manager/password_store_mac.cc b/chrome/browser/password_manager/password_store_mac.cc |
| index 31c0d2b43d67d07a11c33b539ebc98d31deac799..51f2ad11a5a5969bb50358b868c5f5e579fe2ef8 100644 |
| --- a/chrome/browser/password_manager/password_store_mac.cc |
| +++ b/chrome/browser/password_manager/password_store_mac.cc |
| @@ -1062,11 +1062,11 @@ ScopedVector<autofill::PasswordForm> PasswordStoreMac::FillMatchingLogins( |
| chrome::ScopedSecKeychainSetUserInteractionAllowed user_interaction_allowed( |
| prompt_policy == ALLOW_PROMPT); |
| - if (!login_metadata_db_) |
| - return ScopedVector<autofill::PasswordForm>(); |
| - |
| ScopedVector<PasswordForm> database_forms; |
| - login_metadata_db_->GetLogins(form, &database_forms); |
| + if (!login_metadata_db_ || |
| + !login_metadata_db_->GetLogins(form, &database_forms)) { |
| + return ScopedVector<autofill::PasswordForm>(); |
| + } |
| // Let's gather all signon realms we want to match with keychain entries. |
| std::set<std::string> realm_set; |
| @@ -1125,6 +1125,7 @@ void PasswordStoreMac::GetAutofillableLoginsImpl( |
| bool PasswordStoreMac::FillAutofillableLogins( |
| ScopedVector<autofill::PasswordForm>* forms) { |
| DCHECK(thread_->message_loop() == base::MessageLoop::current()); |
| + forms->clear(); |
| ScopedVector<PasswordForm> database_forms; |
| if (!login_metadata_db_ || |
| @@ -1144,6 +1145,7 @@ bool PasswordStoreMac::FillAutofillableLogins( |
| bool PasswordStoreMac::FillBlacklistLogins( |
| ScopedVector<autofill::PasswordForm>* forms) { |
| + forms->clear(); |
|
engedy
2015/03/09 13:33:18
nit: Sorry, I was meaning to say after the DCHECK.
vabr (Chromium)
2015/03/09 17:44:15
Done.
I agree that preconditions-checking DCHECK s
|
| DCHECK(thread_->message_loop() == base::MessageLoop::current()); |
| return login_metadata_db_ && login_metadata_db_->GetBlacklistLogins(forms); |
| } |
| @@ -1161,7 +1163,8 @@ bool PasswordStoreMac::DatabaseHasFormMatchingKeychainForm( |
| DCHECK(login_metadata_db_); |
| bool has_match = false; |
| ScopedVector<autofill::PasswordForm> database_forms; |
| - login_metadata_db_->GetLogins(form, &database_forms); |
| + if (!login_metadata_db_->GetLogins(form, &database_forms)) |
| + return false; |
| for (const autofill::PasswordForm* db_form : database_forms) { |
| // Below we filter out forms with non-empty original_signon_realm, because |
| // those signal fuzzy matches, and we are only interested in exact ones. |
| @@ -1204,7 +1207,8 @@ void PasswordStoreMac::CleanOrphanedForms( |
| DCHECK(login_metadata_db_); |
| ScopedVector<autofill::PasswordForm> database_forms; |
| - login_metadata_db_->GetAutofillableLogins(&database_forms); |
| + if (!login_metadata_db_->GetAutofillableLogins(&database_forms)) |
| + return; |
| // Filter forms with corresponding Keychain entry out of |database_forms|. |
| ScopedVector<PasswordForm> forms_with_keychain_entry; |