Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(268)

Unified Diff: chrome/browser/password_manager/password_store_x.cc

Issue 825773003: PasswordStore: Use ScopedVector to express ownership of forms (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Use assignment instead of construction Created 5 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: chrome/browser/password_manager/password_store_x.cc
diff --git a/chrome/browser/password_manager/password_store_x.cc b/chrome/browser/password_manager/password_store_x.cc
index ab4df822608cfacf6c4fac497d4d9312d5432f8b..fa5c7b03516566ea274e52956d630697ca1e4c06 100644
--- a/chrome/browser/password_manager/password_store_x.cc
+++ b/chrome/browser/password_manager/password_store_x.cc
@@ -24,7 +24,6 @@ using content::BrowserThread;
using password_manager::PasswordStoreChange;
using password_manager::PasswordStoreChangeList;
using password_manager::PasswordStoreDefault;
-using std::vector;
namespace {
@@ -130,7 +129,8 @@ struct LoginLessThan {
};
} // anonymous namespace
-void PasswordStoreX::SortLoginsByOrigin(NativeBackend::PasswordFormList* list) {
+void PasswordStoreX::SortLoginsByOrigin(
+ std::vector<autofill::PasswordForm*>* list) {
// In login_database.cc, the query has ORDER BY origin_url. Simulate that.
std::sort(list->begin(), list->end(), LoginLessThan());
}
@@ -140,9 +140,9 @@ void PasswordStoreX::GetLoginsImpl(
AuthorizationPromptPolicy prompt_policy,
const ConsumerCallbackRunner& callback_runner) {
CheckMigration();
- std::vector<autofill::PasswordForm*> matched_forms;
+ ScopedVector<autofill::PasswordForm> matched_forms;
if (use_native_backend() && backend_->GetLogins(form, &matched_forms)) {
- SortLoginsByOrigin(&matched_forms);
+ SortLoginsByOrigin(&matched_forms.get());
// The native backend may succeed and return no data even while locked, if
// the query did not match anything stored. So we continue to allow fallback
// until we perform a write operation, or until a read returns actual data.
@@ -154,13 +154,15 @@ void PasswordStoreX::GetLoginsImpl(
return;
}
// The consumer will be left hanging unless we reply.
- callback_runner.Run(matched_forms);
+ callback_runner.Run(matched_forms.Pass());
}
void PasswordStoreX::GetAutofillableLoginsImpl(GetLoginsRequest* request) {
CheckMigration();
+ ScopedVector<autofill::PasswordForm> obtained_forms;
if (use_native_backend() &&
- backend_->GetAutofillableLogins(request->result())) {
+ backend_->GetAutofillableLogins(&obtained_forms)) {
+ request->result()->swap(obtained_forms.get());
SortLoginsByOrigin(request->result());
// See GetLoginsImpl() for why we disallow fallback conditionally here.
if (request->result()->size() > 0)
@@ -175,8 +177,9 @@ void PasswordStoreX::GetAutofillableLoginsImpl(GetLoginsRequest* request) {
void PasswordStoreX::GetBlacklistLoginsImpl(GetLoginsRequest* request) {
CheckMigration();
- if (use_native_backend() &&
- backend_->GetBlacklistLogins(request->result())) {
+ ScopedVector<autofill::PasswordForm> obtained_forms;
+ if (use_native_backend() && backend_->GetBlacklistLogins(&obtained_forms)) {
+ request->result()->swap(obtained_forms.get());
SortLoginsByOrigin(request->result());
// See GetLoginsImpl() for why we disallow fallback conditionally here.
if (request->result()->size() > 0)
@@ -189,7 +192,8 @@ void PasswordStoreX::GetBlacklistLoginsImpl(GetLoginsRequest* request) {
ForwardLoginsResult(request);
}
-bool PasswordStoreX::FillAutofillableLogins(vector<PasswordForm*>* forms) {
+bool PasswordStoreX::FillAutofillableLogins(
+ ScopedVector<autofill::PasswordForm>* forms) {
CheckMigration();
if (use_native_backend() && backend_->GetAutofillableLogins(forms)) {
// See GetLoginsImpl() for why we disallow fallback conditionally here.
@@ -202,7 +206,8 @@ bool PasswordStoreX::FillAutofillableLogins(vector<PasswordForm*>* forms) {
return false;
}
-bool PasswordStoreX::FillBlacklistLogins(vector<PasswordForm*>* forms) {
+bool PasswordStoreX::FillBlacklistLogins(
+ ScopedVector<autofill::PasswordForm>* forms) {
CheckMigration();
if (use_native_backend() && backend_->GetBlacklistLogins(forms)) {
// See GetLoginsImpl() for why we disallow fallback conditionally here.
@@ -250,7 +255,7 @@ bool PasswordStoreX::allow_default_store() {
ssize_t PasswordStoreX::MigrateLogins() {
DCHECK(backend_.get());
- vector<PasswordForm*> forms;
+ ScopedVector<autofill::PasswordForm> forms;
bool ok = PasswordStoreDefault::FillAutofillableLogins(&forms) &&
PasswordStoreDefault::FillBlacklistLogins(&forms);
if (ok) {
@@ -283,6 +288,5 @@ ssize_t PasswordStoreX::MigrateLogins() {
}
}
ssize_t result = ok ? forms.size() : -1;
- STLDeleteElements(&forms);
return result;
}
« no previous file with comments | « chrome/browser/password_manager/password_store_x.h ('k') | chrome/browser/password_manager/password_store_x_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698