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 3aaca6d3eff3d717553955c47a7b110c8fdbefcd..86db71acd2860a881a5b0778804fb2161f78a882 100644 |
--- a/chrome/browser/password_manager/native_backend_libsecret.cc |
+++ b/chrome/browser/password_manager/native_backend_libsecret.cc |
@@ -236,6 +236,14 @@ void LibsecretAttributesBuilder::Append(const std::string& name, int64 value) { |
Append(name, base::Int64ToString(value)); |
} |
+// Generates a profile-specific app string based on profile_id_. |
+std::string GetProfileSpecificAppString(LocalProfileId id) { |
+ // Originally, the application string was always just "chrome" and used only |
+ // so that we had *something* to search for since GNOME Keyring won't search |
+ // for nothing. Now we use it to distinguish passwords for different profiles. |
+ return base::StringPrintf("%s-%d", kLibsecretAppString, id); |
+} |
+ |
} // namespace |
bool LibsecretLoader::LibsecretIsAvailable() { |
@@ -280,8 +288,8 @@ password_manager::PasswordStoreChangeList NativeBackendLibsecret::AddLogin( |
// element, and signon_realm first, remove that, and then add the new entry. |
// 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, SEARCH_USE_SUBMIT, &forms); |
+ ScopedVector<autofill::PasswordForm> forms = |
+ AddUpdateLoginSearch(form, SEARCH_USE_SUBMIT); |
password_manager::PasswordStoreChangeList changes; |
if (forms.size() > 0) { |
if (forms.size() > 1) { |
@@ -313,8 +321,8 @@ bool NativeBackendLibsecret::UpdateLogin( |
DCHECK(changes); |
changes->clear(); |
- ScopedVector<autofill::PasswordForm> forms; |
- AddUpdateLoginSearch(form, SEARCH_IGNORE_SUBMIT, &forms); |
+ ScopedVector<autofill::PasswordForm> forms = |
+ AddUpdateLoginSearch(form, SEARCH_IGNORE_SUBMIT); |
bool removed = false; |
for (size_t i = 0; i < forms.size(); ++i) { |
@@ -375,10 +383,10 @@ bool NativeBackendLibsecret::GetLogins( |
return GetLoginsList(&form, ALL_LOGINS, forms); |
} |
-void NativeBackendLibsecret::AddUpdateLoginSearch( |
+ScopedVector<autofill::PasswordForm> |
+NativeBackendLibsecret::AddUpdateLoginSearch( |
const autofill::PasswordForm& lookup_form, |
- AddUpdateLoginSearchOptions options, |
- ScopedVector<autofill::PasswordForm>* forms) { |
+ AddUpdateLoginSearchOptions options) { |
LibsecretAttributesBuilder attrs; |
attrs.Append("origin_url", lookup_form.origin.spec()); |
attrs.Append("username_element", UTF16ToUTF8(lookup_form.username_element)); |
@@ -400,10 +408,10 @@ void NativeBackendLibsecret::AddUpdateLoginSearch( |
g_error_free(error); |
if (found) |
g_list_free(found); |
- return; |
+ return ScopedVector<autofill::PasswordForm>(); |
} |
- ConvertFormList(found, &lookup_form, forms); |
+ return ConvertFormList(found, &lookup_form); |
} |
bool NativeBackendLibsecret::RawAddLogin(const PasswordForm& form) { |
@@ -492,12 +500,8 @@ bool NativeBackendLibsecret::GetLoginsList( |
return false; |
} |
- return ConvertFormList(found, lookup_form, forms); |
-} |
- |
-bool NativeBackendLibsecret::GetAllLogins( |
- ScopedVector<autofill::PasswordForm>* forms) { |
- return GetLoginsList(nullptr, ALL_LOGINS, forms); |
+ *forms = ConvertFormList(found, lookup_form); |
+ return true; |
} |
bool NativeBackendLibsecret::GetLoginsBetween( |
@@ -505,8 +509,9 @@ bool NativeBackendLibsecret::GetLoginsBetween( |
base::Time get_end, |
TimestampToCompare date_to_compare, |
ScopedVector<autofill::PasswordForm>* forms) { |
+ forms->clear(); |
ScopedVector<autofill::PasswordForm> all_forms; |
- if (!GetAllLogins(&all_forms)) |
+ if (!GetLoginsList(nullptr, ALL_LOGINS, &all_forms)) |
return false; |
base::Time autofill::PasswordForm::*date_member = |
@@ -547,10 +552,10 @@ bool NativeBackendLibsecret::RemoveLoginsBetween( |
return ok; |
} |
-bool NativeBackendLibsecret::ConvertFormList( |
+ScopedVector<autofill::PasswordForm> NativeBackendLibsecret::ConvertFormList( |
GList* found, |
- const PasswordForm* lookup_form, |
- ScopedVector<autofill::PasswordForm>* forms) { |
+ const PasswordForm* lookup_form) { |
+ ScopedVector<autofill::PasswordForm> forms; |
password_manager::PSLDomainMatchMetric psl_domain_match_metric = |
password_manager::PSL_DOMAIN_MATCH_NONE; |
GError* error = nullptr; |
@@ -588,7 +593,7 @@ bool NativeBackendLibsecret::ConvertFormList( |
} else { |
VLOG(1) << "Unable to access password from list element!"; |
} |
- forms->push_back(form.release()); |
+ forms.push_back(form.release()); |
} else { |
VLOG(1) << "Could not initialize PasswordForm from attributes!"; |
} |
@@ -606,13 +611,5 @@ bool NativeBackendLibsecret::ConvertFormList( |
password_manager::PSL_DOMAIN_MATCH_COUNT); |
} |
g_list_free(found); |
- return true; |
-} |
- |
-std::string NativeBackendLibsecret::GetProfileSpecificAppString( |
- LocalProfileId id) { |
- // Originally, the application string was always just "chrome" and used only |
- // so that we had *something* to search for since GNOME Keyring won't search |
- // for nothing. Now we use it to distinguish passwords for different profiles. |
- return base::StringPrintf("%s-%d", kLibsecretAppString, id); |
+ return forms.Pass(); |
} |