| Index: components/password_manager/core/browser/password_reuse_detection_manager.cc
|
| diff --git a/components/password_manager/core/browser/password_reuse_detection_manager.cc b/components/password_manager/core/browser/password_reuse_detection_manager.cc
|
| index dba2a52c52bbd5a46cc6ccd64100b6624d41b2b9..d4942acfa58cb15032005520d31f21c588b5a51b 100644
|
| --- a/components/password_manager/core/browser/password_reuse_detection_manager.cc
|
| +++ b/components/password_manager/core/browser/password_reuse_detection_manager.cc
|
| @@ -37,9 +37,14 @@ void PasswordReuseDetectionManager::DidNavigateMainFrame(
|
| const GURL& main_frame_url) {
|
| main_frame_url_ = main_frame_url;
|
| input_characters_.clear();
|
| + reuse_on_this_page_was_found_ = false;
|
| }
|
|
|
| void PasswordReuseDetectionManager::OnKeyPressed(const base::string16& text) {
|
| + // Do not check reuse if it was already found on this page.
|
| + if (reuse_on_this_page_was_found_)
|
| + return;
|
| +
|
| // Clear the buffer if last keystoke was more than kMaxInactivityTime ago.
|
| Time now = clock_->Now();
|
| if (!last_keystroke_time_.is_null() &&
|
| @@ -72,6 +77,7 @@ void PasswordReuseDetectionManager::OnReuseFound(
|
| const std::string& legitimate_domain,
|
| int saved_passwords,
|
| int number_matches) {
|
| + reuse_on_this_page_was_found_ = true;
|
| std::unique_ptr<BrowserSavePasswordProgressLogger> logger;
|
| if (password_manager_util::IsLoggingActive(client_)) {
|
| logger.reset(
|
| @@ -80,9 +86,14 @@ void PasswordReuseDetectionManager::OnReuseFound(
|
| legitimate_domain);
|
| }
|
|
|
| - metrics_util::LogPasswordReuse(
|
| - password.size(), saved_passwords, number_matches,
|
| - client_->GetPasswordManager()->IsPasswordFieldDetectedOnPage());
|
| + // PasswordManager could be nullptr in tests.
|
| + bool password_field_detected =
|
| + client_->GetPasswordManager()
|
| + ? client_->GetPasswordManager()->IsPasswordFieldDetectedOnPage()
|
| + : false;
|
| +
|
| + metrics_util::LogPasswordReuse(password.size(), saved_passwords,
|
| + number_matches, password_field_detected);
|
| #if defined(SAFE_BROWSING_DB_LOCAL)
|
| // TODO(jialiul): After CSD whitelist being added to Android, we should gate
|
| // this by either SAFE_BROWSING_DB_LOCAL or SAFE_BROWSING_DB_REMOTE.
|
|
|