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 5aa39bde5d87eff87ad68557d5ea3a3ea7ff9cc4..63359dbbc5576ee7560519e4dc25ff57d490b581 100644 |
--- a/chrome/browser/password_manager/password_store_mac.cc |
+++ b/chrome/browser/password_manager/password_store_mac.cc |
@@ -15,6 +15,7 @@ |
#include "base/logging.h" |
#include "base/mac/mac_logging.h" |
#include "base/mac/mac_util.h" |
+#include "base/memory/scoped_vector.h" |
#include "base/message_loop/message_loop.h" |
#include "base/stl_util.h" |
#include "base/strings/string_util.h" |
@@ -959,24 +960,12 @@ PasswordStoreChangeList PasswordStoreMac::RemoveLoginsCreatedBetweenImpl( |
base::Time delete_begin, |
base::Time delete_end) { |
PasswordStoreChangeList changes; |
- std::vector<PasswordForm*> forms; |
+ ScopedVector<PasswordForm> forms; |
if (login_metadata_db_->GetLoginsCreatedBetween(delete_begin, delete_end, |
- &forms)) { |
+ &forms.get())) { |
if (login_metadata_db_->RemoveLoginsCreatedBetween(delete_begin, |
delete_end)) { |
- // We can't delete from the Keychain by date because we may be sharing |
- // items with database entries that weren't in the delete range. Instead, |
- // we find all the Keychain items we own but aren't using any more and |
- // delete those. |
- std::vector<PasswordForm*> orphan_keychain_forms = |
- GetUnusedKeychainForms(); |
- // This is inefficient, since we have to re-look-up each keychain item |
- // one at a time to delete it even though the search step already had a |
- // list of Keychain item references. If this turns out to be noticeably |
- // slow we'll need to rearchitect to allow the search and deletion steps |
- // to share. |
- RemoveKeychainForms(orphan_keychain_forms); |
- STLDeleteElements(&orphan_keychain_forms); |
+ RemoveKeychainForms(forms.get()); |
for (std::vector<PasswordForm*>::const_iterator it = forms.begin(); |
it != forms.end(); ++it) { |
@@ -993,24 +982,12 @@ PasswordStoreChangeList PasswordStoreMac::RemoveLoginsSyncedBetweenImpl( |
base::Time delete_begin, |
base::Time delete_end) { |
PasswordStoreChangeList changes; |
- std::vector<PasswordForm*> forms; |
+ ScopedVector<PasswordForm> forms; |
if (login_metadata_db_->GetLoginsSyncedBetween( |
- delete_begin, delete_end, &forms)) { |
+ delete_begin, delete_end, &forms.get())) { |
if (login_metadata_db_->RemoveLoginsSyncedBetween(delete_begin, |
delete_end)) { |
- // We can't delete from the Keychain by date because we may be sharing |
- // items with database entries that weren't in the delete range. Instead, |
- // we find all the Keychain items we own but aren't using any more and |
- // delete those. |
- std::vector<PasswordForm*> orphan_keychain_forms = |
- GetUnusedKeychainForms(); |
- // This is inefficient, since we have to re-look-up each keychain item |
- // one at a time to delete it even though the search step already had a |
- // list of Keychain item references. If this turns out to be noticeably |
- // slow we'll need to rearchitect to allow the search and deletion steps |
- // to share. |
- RemoveKeychainForms(orphan_keychain_forms); |
- STLDeleteElements(&orphan_keychain_forms); |
+ RemoveKeychainForms(forms.get()); |
for (std::vector<PasswordForm*>::const_iterator it = forms.begin(); |
it != forms.end(); |
@@ -1146,27 +1123,6 @@ bool PasswordStoreMac::DatabaseHasFormMatchingKeychainForm( |
return has_match; |
} |
-std::vector<PasswordForm*> PasswordStoreMac::GetUnusedKeychainForms() { |
- std::vector<PasswordForm*> database_forms; |
- login_metadata_db_->GetAutofillableLogins(&database_forms); |
- |
- MacKeychainPasswordFormAdapter owned_keychain_adapter(keychain_.get()); |
- owned_keychain_adapter.SetFindsOnlyOwnedItems(true); |
- std::vector<PasswordForm*> owned_keychain_forms = |
- owned_keychain_adapter.GetAllPasswordFormPasswords(); |
- |
- // Run a merge; anything left in owned_keychain_forms when we are done no |
- // longer has a matching database entry. |
- std::vector<PasswordForm*> merged_forms; |
- internal_keychain_helpers::MergePasswordForms(&owned_keychain_forms, |
- &database_forms, |
- &merged_forms); |
- STLDeleteElements(&merged_forms); |
- STLDeleteElements(&database_forms); |
- |
- return owned_keychain_forms; |
-} |
- |
void PasswordStoreMac::RemoveDatabaseForms( |
const std::vector<PasswordForm*>& forms) { |
for (std::vector<PasswordForm*>::const_iterator i = forms.begin(); |