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( |