Populate the Primary Key in DisableAutoSignInForOriginsImpl()
This CL populates the password primary key in the change list
returned by
PasswordStoreDefault::DisableAutoSignInForOriginsImpl().
This was overlooked when first adding the support for primary keys.
Bug: 902349
Change-Id: I5dfe962861e0b7669722e02d13d07c9584556237
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/1693005
Reviewed-by: Vasilii Sukhanov <vasilii@chromium.org>
Commit-Queue: Mohamed Amir Yosef <mamir@chromium.org>
Cr-Commit-Position: refs/heads/master@{#675988}
diff --git a/components/password_manager/core/browser/login_database.cc b/components/password_manager/core/browser/login_database.cc
index 3c6b171f..b99abea2 100644
--- a/components/password_manager/core/browser/login_database.cc
+++ b/components/password_manager/core/browser/login_database.cc
@@ -1215,19 +1215,14 @@
return true;
}
-bool LoginDatabase::GetAutoSignInLogins(
- std::vector<std::unique_ptr<PasswordForm>>* forms) {
- DCHECK(forms);
+bool LoginDatabase::GetAutoSignInLogins(PrimaryKeyToFormMap* key_to_form_map) {
+ DCHECK(key_to_form_map);
DCHECK(!autosignin_statement_.empty());
- forms->clear();
+ key_to_form_map->clear();
sql::Statement s(
db_.GetCachedStatement(SQL_FROM_HERE, autosignin_statement_.c_str()));
- PrimaryKeyToFormMap key_to_form_map;
- FormRetrievalResult result = StatementToForms(&s, nullptr, &key_to_form_map);
- for (auto& pair : key_to_form_map) {
- forms->push_back(std::move(pair.second));
- }
+ FormRetrievalResult result = StatementToForms(&s, nullptr, key_to_form_map);
return result == FormRetrievalResult::kSuccess;
}
diff --git a/components/password_manager/core/browser/login_database.h b/components/password_manager/core/browser/login_database.h
index 5b07dcf..303210a 100644
--- a/components/password_manager/core/browser/login_database.h
+++ b/components/password_manager/core/browser/login_database.h
@@ -142,8 +142,8 @@
forms) WARN_UNUSED_RESULT;
// Gets the list of auto-sign-inable credentials.
- bool GetAutoSignInLogins(std::vector<std::unique_ptr<autofill::PasswordForm>>*
- forms) WARN_UNUSED_RESULT;
+ bool GetAutoSignInLogins(PrimaryKeyToFormMap* key_to_form_map)
+ WARN_UNUSED_RESULT;
// Deletes the login database file on disk, and creates a new, empty database.
// This can be used after migrating passwords to some other store, to ensure
diff --git a/components/password_manager/core/browser/login_database_unittest.cc b/components/password_manager/core/browser/login_database_unittest.cc
index 37762be..22609bf 100644
--- a/components/password_manager/core/browser/login_database_unittest.cc
+++ b/components/password_manager/core/browser/login_database_unittest.cc
@@ -1011,7 +1011,7 @@
}
TEST_F(LoginDatabaseTest, GetAutoSignInLogins) {
- std::vector<std::unique_ptr<PasswordForm>> result;
+ PrimaryKeyToFormMap key_to_form_map;
GURL origin("https://example.com");
EXPECT_TRUE(AddZeroClickableLogin(&db(), "foo1", origin));
@@ -1019,14 +1019,14 @@
EXPECT_TRUE(AddZeroClickableLogin(&db(), "foo3", origin));
EXPECT_TRUE(AddZeroClickableLogin(&db(), "foo4", origin));
- EXPECT_TRUE(db().GetAutoSignInLogins(&result));
- EXPECT_EQ(4U, result.size());
- for (const auto& form : result)
- EXPECT_FALSE(form->skip_zero_click);
+ EXPECT_TRUE(db().GetAutoSignInLogins(&key_to_form_map));
+ EXPECT_EQ(4U, key_to_form_map.size());
+ for (const auto& pair : key_to_form_map)
+ EXPECT_FALSE(pair.second->skip_zero_click);
EXPECT_TRUE(db().DisableAutoSignInForOrigin(origin));
- EXPECT_TRUE(db().GetAutoSignInLogins(&result));
- EXPECT_EQ(0U, result.size());
+ EXPECT_TRUE(db().GetAutoSignInLogins(&key_to_form_map));
+ EXPECT_EQ(0U, key_to_form_map.size());
}
TEST_F(LoginDatabaseTest, DisableAutoSignInForOrigin) {
diff --git a/components/password_manager/core/browser/password_store_default.cc b/components/password_manager/core/browser/password_store_default.cc
index 67266c62..b34eff7 100644
--- a/components/password_manager/core/browser/password_store_default.cc
+++ b/components/password_manager/core/browser/password_store_default.cc
@@ -124,15 +124,15 @@
PasswordStoreChangeList PasswordStoreDefault::DisableAutoSignInForOriginsImpl(
const base::Callback<bool(const GURL&)>& origin_filter) {
- std::vector<std::unique_ptr<PasswordForm>> forms;
+ PrimaryKeyToFormMap key_to_form_map;
PasswordStoreChangeList changes;
- if (!login_db_ || !login_db_->GetAutoSignInLogins(&forms))
+ if (!login_db_ || !login_db_->GetAutoSignInLogins(&key_to_form_map))
return changes;
std::set<GURL> origins_to_update;
- for (const auto& form : forms) {
- if (origin_filter.Run(form->origin))
- origins_to_update.insert(form->origin);
+ for (const auto& pair : key_to_form_map) {
+ if (origin_filter.Run(pair.second->origin))
+ origins_to_update.insert(pair.second->origin);
}
std::set<GURL> origins_updated;
@@ -141,10 +141,10 @@
origins_updated.insert(origin);
}
- for (const auto& form : forms) {
- if (origins_updated.count(form->origin)) {
- changes.push_back(
- PasswordStoreChange(PasswordStoreChange::UPDATE, *form));
+ for (const auto& pair : key_to_form_map) {
+ if (origins_updated.count(pair.second->origin)) {
+ changes.emplace_back(PasswordStoreChange::UPDATE, *pair.second,
+ /*primary_key=*/pair.first);
}
}