Index: components/password_manager/core/browser/password_form_manager.cc |
diff --git a/components/password_manager/core/browser/password_form_manager.cc b/components/password_manager/core/browser/password_form_manager.cc |
index 1248b11787ab7207efe6975f35a0e3f638cf4103..2fb70adeab1680145ee2e0db2572b529c6c9c9a2 100644 |
--- a/components/password_manager/core/browser/password_form_manager.cc |
+++ b/components/password_manager/core/browser/password_form_manager.cc |
@@ -375,11 +375,12 @@ void PasswordFormManager::OnRequestDone( |
// the PasswordForm objects pointed to by the result vector, thus we keep |
// copies to a minimum here. |
+ bool autofill_result_filtered = false; |
int best_score = 0; |
// These credentials will be in the final result regardless of score. |
std::vector<PasswordForm> credentials_to_keep; |
for (size_t i = 0; i < logins_result.size(); i++) { |
- if (IgnoreResult(*logins_result[i])) { |
+ if (IgnoreResult(*logins_result[i], &autofill_result_filtered)) { |
delete logins_result[i]; |
continue; |
} |
@@ -439,6 +440,9 @@ void PasswordFormManager::OnRequestDone( |
// We're done matching now. |
state_ = POST_MATCHING_PHASE; |
+ UMA_HISTOGRAM_BOOLEAN("PasswordManager.AutofillResultsFiltered", |
+ autofill_result_filtered); |
+ |
if (best_score <= 0) { |
return; |
} |
@@ -507,7 +511,8 @@ void PasswordFormManager::OnGetPasswordStoreResults( |
OnRequestDone(results); |
} |
-bool PasswordFormManager::IgnoreResult(const PasswordForm& form) const { |
+bool PasswordFormManager::IgnoreResult(const PasswordForm& form, |
+ bool* autofill_result_filtered) const { |
// Do not autofill on sign-up or change password forms (until we have some |
// working change password functionality). |
if (!observed_form_.new_password_element.empty()) |
@@ -515,6 +520,11 @@ bool PasswordFormManager::IgnoreResult(const PasswordForm& form) const { |
// Don't match an invalid SSL form with one saved under secure circumstances. |
if (form.ssl_valid && !observed_form_.ssl_valid) |
return true; |
+ |
+ if (client_->ShouldFilterAutofillResult(form)) { |
+ *autofill_result_filtered = true; |
+ return true; |
+ } |
return false; |
} |