Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(349)

Unified Diff: components/autofill/content/renderer/password_autofill_agent.cc

Issue 2859243004: Add metrics for PasswordForm submission types (Closed)
Patch Set: addressed reviewer comments Created 3 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: components/autofill/content/renderer/password_autofill_agent.cc
diff --git a/components/autofill/content/renderer/password_autofill_agent.cc b/components/autofill/content/renderer/password_autofill_agent.cc
index 062823790691580d1b96b309733e65eb693cc7be..e73ef7c656ae558b3f756e921fac3fe9a79c704c 100644
--- a/components/autofill/content/renderer/password_autofill_agent.cc
+++ b/components/autofill/content/renderer/password_autofill_agent.cc
@@ -1032,17 +1032,25 @@ void PasswordAutofillAgent::OnDynamicFormsSeen() {
}
void PasswordAutofillAgent::AJAXSucceeded() {
- OnSameDocumentNavigationCompleted();
+ OnSameDocumentNavigationCompleted(false);
}
-void PasswordAutofillAgent::OnSameDocumentNavigationCompleted() {
+void PasswordAutofillAgent::OnSameDocumentNavigationCompleted(
+ bool is_inpage_navigation) {
if (!provisionally_saved_form_.IsPasswordValid())
return;
+ provisionally_saved_form_.SetSubmissionIndicatorEvent(
+ is_inpage_navigation
+ ? PasswordForm::SubmissionIndicatorEvent::SAME_DOCUMENT_NAVIGATION
+ : PasswordForm::SubmissionIndicatorEvent::XHR_SUCCEEDED);
+
// Prompt to save only if the form is now gone, either invisible or
// removed from the DOM.
blink::WebFrame* frame = render_frame()->GetWebFrame();
const auto& password_form = provisionally_saved_form_.password_form();
+ // TODO(crbug.com/720347): This method could be called often and checking form
+ // visibility could be expesive. Add performance metrics for this.
if (form_util::IsFormVisible(frame, provisionally_saved_form_.form_element(),
password_form.action, password_form.origin,
password_form.form_data) ||
@@ -1209,7 +1217,7 @@ void PasswordAutofillAgent::DidCommitProvisionalLoad(
bool is_new_navigation,
bool is_same_document_navigation) {
if (is_same_document_navigation) {
- OnSameDocumentNavigationCompleted();
+ OnSameDocumentNavigationCompleted(true);
} else {
checked_safe_browsing_reputation_ = false;
}
@@ -1221,6 +1229,8 @@ void PasswordAutofillAgent::FrameDetached() {
// for examples of sites that perform login using this technique.
if (render_frame()->GetWebFrame()->Parent() &&
provisionally_saved_form_.IsPasswordValid()) {
+ provisionally_saved_form_.SetSubmissionIndicatorEvent(
+ PasswordForm::SubmissionIndicatorEvent::FRAME_DETACHED);
GetPasswordManagerDriver()->InPageNavigation(
provisionally_saved_form_.password_form());
}
@@ -1280,6 +1290,8 @@ void PasswordAutofillAgent::WillSubmitForm(const blink::WebFormElement& form) {
submitted_form->password_value = saved_form.password_value;
submitted_form->new_password_value = saved_form.new_password_value;
submitted_form->username_value = saved_form.username_value;
+ submitted_form->submission_event =
+ PasswordForm::SubmissionIndicatorEvent::HTML_FORM_SUBMISSION;
}
// Some observers depend on sending this information now instead of when
@@ -1563,6 +1575,8 @@ void PasswordAutofillAgent::FindFocusedPasswordForm(
if (!password_form)
password_form.reset(new PasswordForm());
+ password_form->submission_event =
+ PasswordForm::SubmissionIndicatorEvent::MANUAL_SAVE;
callback.Run(*password_form);
}

Powered by Google App Engine
This is Rietveld 408576698