| Index: chrome/browser/password_manager/native_backend_libsecret.cc
|
| diff --git a/chrome/browser/password_manager/native_backend_libsecret.cc b/chrome/browser/password_manager/native_backend_libsecret.cc
|
| index 411bd541f0b0f1f484108e88925aef3efb15beff..17051f9ccbf82d1de69850dfb255c26b2c3ffcc0 100644
|
| --- a/chrome/browser/password_manager/native_backend_libsecret.cc
|
| +++ b/chrome/browser/password_manager/native_backend_libsecret.cc
|
| @@ -264,7 +264,7 @@ password_manager::PasswordStoreChangeList NativeBackendLibsecret::AddLogin(
|
| // We'd add the new one first, and then delete the original, but then the
|
| // delete might actually delete the newly-added entry!
|
| ScopedVector<autofill::PasswordForm> forms;
|
| - AddUpdateLoginSearch(form, &forms.get(), SEARCH_USE_SUBMIT);
|
| + AddUpdateLoginSearch(form, SEARCH_USE_SUBMIT, &forms);
|
| password_manager::PasswordStoreChangeList changes;
|
| if (forms.size() > 0) {
|
| if (forms.size() > 1) {
|
| @@ -297,7 +297,7 @@ bool NativeBackendLibsecret::UpdateLogin(
|
| changes->clear();
|
|
|
| ScopedVector<autofill::PasswordForm> forms;
|
| - AddUpdateLoginSearch(form, &forms.get(), SEARCH_IGNORE_SUBMIT);
|
| + AddUpdateLoginSearch(form, SEARCH_IGNORE_SUBMIT, &forms);
|
|
|
| bool removed = false;
|
| for (size_t i = 0; i < forms.size(); ++i) {
|
| @@ -352,15 +352,16 @@ bool NativeBackendLibsecret::RemoveLoginsSyncedBetween(
|
| return RemoveLoginsBetween(delete_begin, delete_end, SYNC_TIMESTAMP, changes);
|
| }
|
|
|
| -bool NativeBackendLibsecret::GetLogins(const PasswordForm& form,
|
| - PasswordFormList* forms) {
|
| - return GetLoginsList(forms, &form, ALL_LOGINS);
|
| +bool NativeBackendLibsecret::GetLogins(
|
| + const PasswordForm& form,
|
| + ScopedVector<autofill::PasswordForm>* forms) {
|
| + return GetLoginsList(&form, ALL_LOGINS, forms);
|
| }
|
|
|
| void NativeBackendLibsecret::AddUpdateLoginSearch(
|
| const autofill::PasswordForm& lookup_form,
|
| - PasswordFormList* forms,
|
| - AddUpdateLoginSearchOptions options) {
|
| + AddUpdateLoginSearchOptions options,
|
| + ScopedVector<autofill::PasswordForm>* forms) {
|
| LibsecretAttributesBuilder attrs;
|
| attrs.Append("origin_url", lookup_form.origin.spec());
|
| attrs.Append("username_element", UTF16ToUTF8(lookup_form.username_element));
|
| @@ -426,17 +427,20 @@ bool NativeBackendLibsecret::RawAddLogin(const PasswordForm& form) {
|
| return true;
|
| }
|
|
|
| -bool NativeBackendLibsecret::GetAutofillableLogins(PasswordFormList* forms) {
|
| - return GetLoginsList(forms, nullptr, AUTOFILLABLE_LOGINS);
|
| +bool NativeBackendLibsecret::GetAutofillableLogins(
|
| + ScopedVector<autofill::PasswordForm>* forms) {
|
| + return GetLoginsList(nullptr, AUTOFILLABLE_LOGINS, forms);
|
| }
|
|
|
| -bool NativeBackendLibsecret::GetBlacklistLogins(PasswordFormList* forms) {
|
| - return GetLoginsList(forms, nullptr, BLACKLISTED_LOGINS);
|
| +bool NativeBackendLibsecret::GetBlacklistLogins(
|
| + ScopedVector<autofill::PasswordForm>* forms) {
|
| + return GetLoginsList(nullptr, BLACKLISTED_LOGINS, forms);
|
| }
|
|
|
| -bool NativeBackendLibsecret::GetLoginsList(PasswordFormList* forms,
|
| - const PasswordForm* lookup_form,
|
| - GetLoginsListOptions options) {
|
| +bool NativeBackendLibsecret::GetLoginsList(
|
| + const PasswordForm* lookup_form,
|
| + GetLoginsListOptions options,
|
| + ScopedVector<autofill::PasswordForm>* forms) {
|
| LibsecretAttributesBuilder attrs;
|
| attrs.Append("application", app_string_);
|
| if (options != ALL_LOGINS)
|
| @@ -464,16 +468,17 @@ bool NativeBackendLibsecret::GetLoginsList(PasswordFormList* forms,
|
| return ConvertFormList(found, lookup_form, forms);
|
| }
|
|
|
| -bool NativeBackendLibsecret::GetAllLogins(PasswordFormList* forms) {
|
| - return GetLoginsList(forms, nullptr, ALL_LOGINS);
|
| +bool NativeBackendLibsecret::GetAllLogins(
|
| + ScopedVector<autofill::PasswordForm>* forms) {
|
| + return GetLoginsList(nullptr, ALL_LOGINS, forms);
|
| }
|
|
|
| bool NativeBackendLibsecret::GetLoginsBetween(
|
| base::Time get_begin,
|
| base::Time get_end,
|
| TimestampToCompare date_to_compare,
|
| - PasswordFormList* forms) {
|
| - PasswordFormList all_forms;
|
| + ScopedVector<autofill::PasswordForm>* forms) {
|
| + ScopedVector<autofill::PasswordForm> all_forms;
|
| if (!GetAllLogins(&all_forms))
|
| return false;
|
|
|
| @@ -481,12 +486,11 @@ bool NativeBackendLibsecret::GetLoginsBetween(
|
| date_to_compare == CREATION_TIMESTAMP
|
| ? &autofill::PasswordForm::date_created
|
| : &autofill::PasswordForm::date_synced;
|
| - for (size_t i = 0; i < all_forms.size(); ++i) {
|
| - if (get_begin <= all_forms[i]->*date_member &&
|
| - (get_end.is_null() || all_forms[i]->*date_member < get_end)) {
|
| - forms->push_back(all_forms[i]);
|
| - } else {
|
| - delete all_forms[i];
|
| + for (auto& saved_form : all_forms) {
|
| + if (get_begin <= saved_form->*date_member &&
|
| + (get_end.is_null() || saved_form->*date_member < get_end)) {
|
| + forms->push_back(saved_form);
|
| + saved_form = nullptr;
|
| }
|
| }
|
|
|
| @@ -501,7 +505,7 @@ bool NativeBackendLibsecret::RemoveLoginsBetween(
|
| DCHECK(changes);
|
| changes->clear();
|
| ScopedVector<autofill::PasswordForm> forms;
|
| - if (!GetLoginsBetween(get_begin, get_end, date_to_compare, &forms.get()))
|
| + if (!GetLoginsBetween(get_begin, get_end, date_to_compare, &forms))
|
| return false;
|
|
|
| bool ok = true;
|
| @@ -519,7 +523,7 @@ bool NativeBackendLibsecret::RemoveLoginsBetween(
|
| bool NativeBackendLibsecret::ConvertFormList(
|
| GList* found,
|
| const PasswordForm* lookup_form,
|
| - NativeBackendLibsecret::PasswordFormList* forms) {
|
| + ScopedVector<autofill::PasswordForm>* forms) {
|
| password_manager::PSLDomainMatchMetric psl_domain_match_metric =
|
| password_manager::PSL_DOMAIN_MATCH_NONE;
|
| GError* error = nullptr;
|
|
|