Chromium Code Reviews| 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 f018d34ad6bf8e13408ce774971bc3728eff15ce..6e67005eaa335f0a4bf4bd9fa54e2fafa51e4d00 100644 |
| --- a/components/password_manager/core/browser/password_form_manager.cc |
| +++ b/components/password_manager/core/browser/password_form_manager.cc |
| @@ -15,6 +15,7 @@ |
| #include "base/memory/ptr_util.h" |
| #include "base/metrics/field_trial.h" |
| #include "base/metrics/histogram_macros.h" |
| +#include "base/metrics/user_metrics.h" |
| #include "base/strings/string16.h" |
| #include "base/strings/string_split.h" |
| #include "base/strings/string_util.h" |
| @@ -349,7 +350,7 @@ void PasswordFormManager::Save() { |
| if ((user_action_ == kUserActionNone) && |
| DidPreferenceChange(best_matches_, pending_credentials_.username_value)) { |
| - user_action_ = kUserActionChoose; |
| + SetUserAction(kUserActionChoose); |
| } |
| base::Optional<PasswordForm> old_primary_key; |
| if (is_new_login_) { |
| @@ -573,7 +574,7 @@ void PasswordFormManager::ProcessFrame( |
| void PasswordFormManager::ProcessFrameInternal( |
| const base::WeakPtr<PasswordManagerDriver>& driver) { |
| DCHECK_EQ(PasswordForm::SCHEME_HTML, observed_form_.scheme); |
| - if (!driver || manager_action_ == kManagerActionBlacklisted) |
| + if (!driver) |
|
Ilya Sherman
2016/07/01 17:59:54
Hmm, I don't understand how this change connects t
vasilii
2016/07/04 20:10:40
I deprecated this value (it was never assigned to
|
| return; |
| // Allow generation for any non-blacklisted form. |
|
Ilya Sherman
2016/07/01 17:59:54
Note: If you're going to remove the blacklisted ma
vasilii
2016/07/04 20:10:40
Done.
|
| @@ -597,10 +598,12 @@ void PasswordFormManager::ProcessFrameInternal( |
| preferred_match_->action.GetWithEmptyPath() || |
| preferred_match_->is_public_suffix_match || |
| observed_form_.IsPossibleChangePasswordForm())); |
| - if (wait_for_username) |
| + if (wait_for_username) { |
| manager_action_ = kManagerActionNone; |
| - else |
| + } else { |
| manager_action_ = kManagerActionAutofilled; |
| + base::RecordAction(base::UserMetricsAction("PasswordManager_Autofilled")); |
| + } |
| if (ShouldShowInitialPasswordAccountSuggestions()) { |
| // This is for the fill-on-account-select experiment. Instead of autofilling |
| // found usernames and passwords on load, this instructs the renderer to |
| @@ -657,12 +660,10 @@ void PasswordFormManager::OnGetPasswordStoreResults( |
| if (provisionally_saved_form_) |
| CreatePendingCredentials(); |
| - if (manager_action_ != kManagerActionBlacklisted) { |
| - for (auto const& driver : drivers_) |
| - ProcessFrameInternal(driver); |
| - if (observed_form_.scheme != PasswordForm::SCHEME_HTML) |
| - ProcessLoginPrompt(); |
| - } |
| + for (auto const& driver : drivers_) |
| + ProcessFrameInternal(driver); |
| + if (observed_form_.scheme != PasswordForm::SCHEME_HTML) |
| + ProcessLoginPrompt(); |
|
Ilya Sherman
2016/07/01 17:59:54
Here, too. Please either mention in the CL descri
vasilii
2016/07/04 20:10:40
Done.
|
| } |
| void PasswordFormManager::OnGetSiteStatistics( |
| @@ -972,8 +973,8 @@ void PasswordFormManager::CreatePendingCredentials() { |
| // from Android apps store a copy with the current origin and signon |
| // realm. This ensures that on the next visit, a precise match is found. |
| is_new_login_ = true; |
| - user_action_ = password_overridden_ ? kUserActionOverridePassword |
| - : kUserActionChoosePslMatch; |
| + SetUserAction(password_overridden_ ? kUserActionOverridePassword |
| + : kUserActionChoosePslMatch); |
| // Since this credential will not overwrite a previously saved credential, |
| // username_value can be updated now. |
| @@ -1024,7 +1025,7 @@ void PasswordFormManager::CreatePendingCredentials() { |
| } else { // Not a PSL match. |
| is_new_login_ = false; |
| if (password_overridden_) |
| - user_action_ = kUserActionOverridePassword; |
| + SetUserAction(kUserActionOverridePassword); |
| } |
| } else if (other_possible_username_action_ == |
| ALLOW_OTHER_POSSIBLE_USERNAMES && |
| @@ -1235,7 +1236,7 @@ PasswordForm* PasswordFormManager::FindBestSavedMatch( |
| void PasswordFormManager::CreatePendingCredentialsForNewCredentials() { |
| // User typed in a new, unknown username. |
| - user_action_ = kUserActionOverrideUsernameAndPassword; |
| + SetUserAction(kUserActionOverrideUsernameAndPassword); |
| pending_credentials_ = observed_form_; |
| if (provisionally_saved_form_->was_parsed_using_autofill_predictions) |
| pending_credentials_.username_element = |
| @@ -1276,6 +1277,7 @@ void PasswordFormManager::LogSubmitPassed() { |
| metrics_util::PASSWORD_SUBMITTED); |
| } |
| } |
| + base::RecordAction(base::UserMetricsAction("PasswordManager_SubmitPassed")); |
| submit_result_ = kSubmitResultPassed; |
| } |
| @@ -1287,6 +1289,7 @@ void PasswordFormManager::LogSubmitFailed() { |
| metrics_util::LogPasswordGenerationAvailableSubmissionEvent( |
| metrics_util::PASSWORD_SUBMISSION_FAILED); |
| } |
| + base::RecordAction(base::UserMetricsAction("PasswordManager_SubmitFailed")); |
| submit_result_ = kSubmitResultFailed; |
| } |
| @@ -1329,6 +1332,22 @@ void PasswordFormManager::SendVotesOnSave() { |
| } |
| } |
| +void PasswordFormManager::SetUserAction(UserAction user_action) { |
| + if (user_action == kUserActionChoose) { |
| + base::RecordAction( |
| + base::UserMetricsAction("PasswordManager_ChooseNonDefault")); |
| + } else if (user_action == kUserActionChoosePslMatch) { |
| + base::RecordAction(base::UserMetricsAction("PasswordManager_ChoosePSL")); |
| + } else if (user_action == kUserActionOverridePassword) { |
| + base::RecordAction( |
| + base::UserMetricsAction("PasswordManager_OverridePassword")); |
| + } else if (user_action == kUserActionOverrideUsernameAndPassword) { |
| + base::RecordAction( |
| + base::UserMetricsAction("PasswordManager_OverrideUsernameAndPassword")); |
| + } |
|
Ilya Sherman
2016/07/01 17:59:54
nit: else NOTREACHED?
vasilii
2016/07/04 20:10:40
Done.
|
| + user_action_ = user_action; |
| +} |
| + |
| base::Optional<PasswordForm> PasswordFormManager::UpdatePendingAndGetOldKey( |
| std::vector<const PasswordForm*>* credentials_to_update) { |
| base::Optional<PasswordForm> old_primary_key; |