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 d088c8183bf00271ba8420ad94c50f025fb49ac9..3a519474535d53e740681693b168b3af78ee05f9 100644 |
| --- a/components/password_manager/core/browser/password_form_manager.cc |
| +++ b/components/password_manager/core/browser/password_form_manager.cc |
| @@ -96,6 +96,7 @@ PasswordFormManager::PasswordFormManager( |
| has_generated_password_(false), |
| password_manager_(password_manager), |
| preferred_match_(nullptr), |
| + is_ignorable_change_password_form_(false), |
| state_(PRE_MATCHING_PHASE), |
| client_(client), |
| manager_action_(kManagerActionNone), |
| @@ -111,6 +112,10 @@ PasswordFormManager::~PasswordFormManager() { |
| "PasswordManager.ActionsTakenV3", GetActionsTaken(), kMaxNumActionsTaken); |
| if (has_generated_password_ && submit_result_ == kSubmitResultNotSubmitted) |
| LogPasswordGenerationSubmissionEvent(PASSWORD_NOT_SUBMITTED); |
| + if (submit_result_ != kSubmitResultNotSubmitted) { |
| + UMA_HISTOGRAM_ENUMERATION("PasswordManager.SubmittedFormType", form_type_, |
| + kFormTypeMax); |
| + } |
| } |
| int PasswordFormManager::GetActionsTaken() const { |
| @@ -409,13 +414,38 @@ bool PasswordFormManager::HasCompletedMatching() const { |
| return state_ == POST_MATCHING_PHASE; |
| } |
| -bool PasswordFormManager::IsIgnorableChangePasswordForm( |
| - const PasswordForm& form) const { |
| +void PasswordFormManager::SetSubmittedForm(const autofill::PasswordForm& form) { |
| bool is_change_password_form = |
| !form.new_password_value.empty() && !form.password_value.empty(); |
| - return is_change_password_form && !form.username_marked_by_site && |
| - !DoesUsenameAndPasswordMatchCredentials( |
| - form.username_value, form.password_value, best_matches_); |
| + is_ignorable_change_password_form_ = |
| + is_change_password_form && !form.username_marked_by_site && |
| + !DoesUsenameAndPasswordMatchCredentials( |
| + form.username_value, form.password_value, best_matches_); |
| + bool is_signup_form = |
| + !form.new_password_value.empty() && form.password_value.empty(); |
| + bool no_username = form.username_element.empty(); |
| + |
| + if (form.layout == PasswordForm::Layout::LAYOUT_LOGIN_AND_SIGNUP) { |
| + form_type_ = kFormTypeLoginAndSignup; |
| + } else if (is_ignorable_change_password_form_) { |
| + if (no_username) |
| + form_type_ = kFormTypeChangePasswordNoUsername; |
| + else |
| + form_type_ = kFormTypeChangePasswordDisabled; |
| + } else if (is_change_password_form) { |
| + form_type_ = kFormTypeChangePasswordEnabled; |
| + } else if (is_signup_form) { |
| + if (no_username) |
| + form_type_ = kFormTypeSignupNoUsername; |
| + else |
| + form_type_ = kFormTypeSignup; |
| + } else if (no_username) { |
| + form_type_ = kFormTypeLoginNoUsername; |
| + } |
| +} |
| + |
| +bool PasswordFormManager::IsIgnorableChangePasswordForm() { |
| + return is_ignorable_change_password_form_; |
|
vabr (Chromium)
2015/03/31 10:08:17
Add a DCHECK that form_type_ has been set?
Garrett Casto
2015/04/01 22:34:48
Done.
|
| } |
| void PasswordFormManager::OnRequestDone( |