Index: chrome/browser/password_manager/native_backend_gnome_x.cc |
diff --git a/chrome/browser/password_manager/native_backend_gnome_x.cc b/chrome/browser/password_manager/native_backend_gnome_x.cc |
index 32eaea83b1e295536420bc0aa84e3e6f0dd02236..9dcf47502caa52daebbc7d3dd4ffffdb6637cb0c 100644 |
--- a/chrome/browser/password_manager/native_backend_gnome_x.cc |
+++ b/chrome/browser/password_manager/native_backend_gnome_x.cc |
@@ -115,10 +115,10 @@ std::unique_ptr<PasswordForm> FormFromAttributes( |
// kept. PSL matched results get their signon_realm, origin, and action |
// rewritten to those of |lookup_form_|, with the original signon_realm saved |
// into the result's original_signon_realm data member. |
-ScopedVector<PasswordForm> ConvertFormList( |
+std::vector<std::unique_ptr<PasswordForm>> ConvertFormList( |
GList* found, |
const PasswordStore::FormDigest* lookup_form) { |
- ScopedVector<PasswordForm> forms; |
+ std::vector<std::unique_ptr<PasswordForm>> forms; |
password_manager::PSLDomainMatchMetric psl_domain_match_metric = |
password_manager::PSL_DOMAIN_MATCH_NONE; |
const bool allow_psl_match = |
@@ -233,7 +233,8 @@ class GKRMethod : public GnomeKeyringLoader { |
// Use after LoginSearch, GetLogins, GetLoginsList, GetAllLogins. Replaces the |
// content of |forms| with found logins. |
- GnomeKeyringResult WaitResult(ScopedVector<PasswordForm>* forms); |
+ GnomeKeyringResult WaitResult( |
+ std::vector<std::unique_ptr<PasswordForm>>* forms); |
private: |
struct GnomeKeyringAttributeListFreeDeleter { |
@@ -269,7 +270,7 @@ class GKRMethod : public GnomeKeyringLoader { |
base::WaitableEvent event_; |
GnomeKeyringResult result_; |
- ScopedVector<PasswordForm> forms_; |
+ std::vector<std::unique_ptr<PasswordForm>> forms_; |
// If the credential search is specified by a single form and needs to use |
// PSL matching, then the specifying form is stored in |lookup_form_|. If |
// PSL matching is used to find a result, then the results signon realm and |
@@ -415,7 +416,8 @@ GnomeKeyringResult GKRMethod::WaitResult() { |
return result_; |
} |
-GnomeKeyringResult GKRMethod::WaitResult(ScopedVector<PasswordForm>* forms) { |
+GnomeKeyringResult GKRMethod::WaitResult( |
+ std::vector<std::unique_ptr<PasswordForm>>* forms) { |
DCHECK_CURRENTLY_ON(BrowserThread::DB); |
event_.Wait(); |
*forms = std::move(forms_); |
@@ -514,7 +516,7 @@ password_manager::PasswordStoreChangeList NativeBackendGnome::AddLogin( |
base::Bind(&GKRMethod::LoginSearch, |
base::Unretained(&method), |
form, app_string_.c_str())); |
- ScopedVector<PasswordForm> forms; |
+ std::vector<std::unique_ptr<PasswordForm>> forms; |
GnomeKeyringResult result = method.WaitResult(&forms); |
if (result != GNOME_KEYRING_RESULT_OK && |
result != GNOME_KEYRING_RESULT_NO_MATCH) { |
@@ -529,7 +531,7 @@ password_manager::PasswordStoreChangeList NativeBackendGnome::AddLogin( |
LOG(WARNING) << "Adding login when there are " << forms.size() |
<< " matching logins already!"; |
} |
- for (const PasswordForm* old_form : forms) { |
+ for (const auto& old_form : forms) { |
if (!RemoveLogin(*old_form, &temp_changes)) |
return changes; |
} |
@@ -559,7 +561,7 @@ bool NativeBackendGnome::UpdateLogin( |
base::Bind(&GKRMethod::LoginSearch, |
base::Unretained(&method), |
form, app_string_.c_str())); |
- ScopedVector<PasswordForm> forms; |
+ std::vector<std::unique_ptr<PasswordForm>> forms; |
GnomeKeyringResult result = method.WaitResult(&forms); |
if (result == GNOME_KEYRING_RESULT_NO_MATCH) |
return true; |
@@ -572,7 +574,7 @@ bool NativeBackendGnome::UpdateLogin( |
return true; |
password_manager::PasswordStoreChangeList temp_changes; |
- for (const PasswordForm* keychain_form : forms) { |
+ for (const auto& keychain_form : forms) { |
// Remove all the obsolete forms. Note that RemoveLogin can remove any form |
// matching the unique key. Thus, it's important to call it the right number |
// of times. |
@@ -631,11 +633,11 @@ bool NativeBackendGnome::RemoveLoginsSyncedBetween( |
bool NativeBackendGnome::DisableAutoSignInForOrigins( |
const base::Callback<bool(const GURL&)>& origin_filter, |
password_manager::PasswordStoreChangeList* changes) { |
- ScopedVector<PasswordForm> forms; |
+ std::vector<std::unique_ptr<PasswordForm>> forms; |
if (!GetAllLogins(&forms)) |
return false; |
- for (auto* form : forms) { |
+ for (const std::unique_ptr<PasswordForm>& form : forms) { |
if (origin_filter.Run(form->origin) && !form->skip_zero_click) { |
form->skip_zero_click = true; |
if (!UpdateLogin(*form, changes)) |
@@ -646,8 +648,9 @@ bool NativeBackendGnome::DisableAutoSignInForOrigins( |
return true; |
} |
-bool NativeBackendGnome::GetLogins(const PasswordStore::FormDigest& form, |
- ScopedVector<PasswordForm>* forms) { |
+bool NativeBackendGnome::GetLogins( |
+ const PasswordStore::FormDigest& form, |
+ std::vector<std::unique_ptr<PasswordForm>>* forms) { |
DCHECK_CURRENTLY_ON(BrowserThread::DB); |
GKRMethod method; |
BrowserThread::PostTask(BrowserThread::UI, FROM_HERE, |
@@ -666,16 +669,18 @@ bool NativeBackendGnome::GetLogins(const PasswordStore::FormDigest& form, |
} |
bool NativeBackendGnome::GetAutofillableLogins( |
- ScopedVector<PasswordForm>* forms) { |
+ std::vector<std::unique_ptr<PasswordForm>>* forms) { |
return GetLoginsList(true, forms); |
} |
-bool NativeBackendGnome::GetBlacklistLogins(ScopedVector<PasswordForm>* forms) { |
+bool NativeBackendGnome::GetBlacklistLogins( |
+ std::vector<std::unique_ptr<PasswordForm>>* forms) { |
return GetLoginsList(false, forms); |
} |
-bool NativeBackendGnome::GetLoginsList(bool autofillable, |
- ScopedVector<PasswordForm>* forms) { |
+bool NativeBackendGnome::GetLoginsList( |
+ bool autofillable, |
+ std::vector<std::unique_ptr<PasswordForm>>* forms) { |
DCHECK_CURRENTLY_ON(BrowserThread::DB); |
uint32_t blacklisted_by_user = !autofillable; |
@@ -695,7 +700,7 @@ bool NativeBackendGnome::GetLoginsList(bool autofillable, |
} |
// Get rid of the forms with the same sync tags. |
- ScopedVector<autofill::PasswordForm> duplicates; |
+ std::vector<std::unique_ptr<PasswordForm>> duplicates; |
std::vector<std::vector<autofill::PasswordForm*>> tag_groups; |
password_manager_util::FindDuplicates(forms, &duplicates, &tag_groups); |
if (duplicates.empty()) |
@@ -713,7 +718,8 @@ bool NativeBackendGnome::GetLoginsList(bool autofillable, |
return true; |
} |
-bool NativeBackendGnome::GetAllLogins(ScopedVector<PasswordForm>* forms) { |
+bool NativeBackendGnome::GetAllLogins( |
+ std::vector<std::unique_ptr<PasswordForm>>* forms) { |
GKRMethod method; |
BrowserThread::PostTask(BrowserThread::UI, FROM_HERE, |
base::Bind(&GKRMethod::GetAllLogins, |
@@ -730,26 +736,26 @@ bool NativeBackendGnome::GetAllLogins(ScopedVector<PasswordForm>* forms) { |
return true; |
} |
-bool NativeBackendGnome::GetLoginsBetween(base::Time get_begin, |
- base::Time get_end, |
- TimestampToCompare date_to_compare, |
- ScopedVector<PasswordForm>* forms) { |
+bool NativeBackendGnome::GetLoginsBetween( |
+ base::Time get_begin, |
+ base::Time get_end, |
+ TimestampToCompare date_to_compare, |
+ std::vector<std::unique_ptr<PasswordForm>>* forms) { |
DCHECK_CURRENTLY_ON(BrowserThread::DB); |
forms->clear(); |
// We could walk the list and add items as we find them, but it is much |
// easier to build the list and then filter the results. |
- ScopedVector<PasswordForm> all_forms; |
+ std::vector<std::unique_ptr<PasswordForm>> all_forms; |
if (!GetAllLogins(&all_forms)) |
return false; |
base::Time PasswordForm::*date_member = date_to_compare == CREATION_TIMESTAMP |
? &PasswordForm::date_created |
: &PasswordForm::date_synced; |
- 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; |
+ for (std::unique_ptr<PasswordForm>& saved_form : all_forms) { |
+ if (get_begin <= saved_form.get()->*date_member && |
+ (get_end.is_null() || saved_form.get()->*date_member < get_end)) { |
+ forms->push_back(std::move(saved_form)); |
} |
} |
@@ -766,7 +772,7 @@ bool NativeBackendGnome::RemoveLoginsBetween( |
changes->clear(); |
// We could walk the list and delete items as we find them, but it is much |
// easier to build the list and use RemoveLogin() to delete them. |
- ScopedVector<PasswordForm> forms; |
+ std::vector<std::unique_ptr<PasswordForm>> forms; |
if (!GetLoginsBetween(get_begin, get_end, date_to_compare, &forms)) |
return false; |