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

Unified Diff: components/password_manager/core/browser/credential_manager_pending_request_task.cc

Issue 2398863003: Don't filter the federated credentials in the account chooser. (Closed)
Patch Set: Created 4 years, 2 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
« no previous file with comments | « components/password_manager/content/browser/credential_manager_impl_unittest.cc ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: components/password_manager/core/browser/credential_manager_pending_request_task.cc
diff --git a/components/password_manager/core/browser/credential_manager_pending_request_task.cc b/components/password_manager/core/browser/credential_manager_pending_request_task.cc
index 172a51c817b8559413f111c1dc407f44dd6bcb90..d986c63075f604c7c184779941f01ade8cb4915a 100644
--- a/components/password_manager/core/browser/credential_manager_pending_request_task.cc
+++ b/components/password_manager/core/browser/credential_manager_pending_request_task.cc
@@ -51,17 +51,25 @@ bool IsBetterMatch(const autofill::PasswordForm& form1,
// Remove duplicates in |forms| before displaying them in the account chooser.
void FilterDuplicates(ScopedVector<autofill::PasswordForm>* forms) {
+ ScopedVector<autofill::PasswordForm> federated_forms;
std::map<base::string16, std::unique_ptr<autofill::PasswordForm>> credentials;
for (auto& form : *forms) {
- auto it = credentials.find(form->username_value);
- if (it == credentials.end() || IsBetterMatch(*form, *it->second)) {
- credentials[form->username_value] = base::WrapUnique(form);
+ if (!form->federation_origin.unique()) {
+ federated_forms.push_back(form);
form = nullptr;
+ } else {
+ auto it = credentials.find(form->username_value);
+ if (it == credentials.end() || IsBetterMatch(*form, *it->second)) {
+ credentials[form->username_value] = base::WrapUnique(form);
+ form = nullptr;
+ }
}
}
forms->clear();
for (auto& form_pair : credentials)
forms->push_back(std::move(form_pair.second));
+ forms->insert(forms->end(), federated_forms.begin(), federated_forms.end());
+ federated_forms.weak_clear();
}
} // namespace
« no previous file with comments | « components/password_manager/content/browser/credential_manager_impl_unittest.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698