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

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

Issue 1918823005: Extend logging for password manager internals page (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Remove a full-stop from the message string Created 4 years, 8 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
« no previous file with comments | « no previous file | components/autofill/core/common/save_password_progress_logger.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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 e85a4c27e0c41bfd444e5631ac90675f141c9915..18b78142854c8661ac5ef72716d28619c6dd5b6e 100644
--- a/components/autofill/content/renderer/password_autofill_agent.cc
+++ b/components/autofill/content/renderer/password_autofill_agent.cc
@@ -7,6 +7,7 @@
#include <stddef.h>
#include <memory>
+#include <string>
#include <utility>
#include "base/bind.h"
@@ -433,7 +434,11 @@ bool FillUserNameAndPassword(
bool set_selection,
std::map<const blink::WebInputElement, blink::WebString>*
nonscript_modified_values,
- base::Callback<void(blink::WebInputElement*)> registration_callback) {
+ base::Callback<void(blink::WebInputElement*)> registration_callback,
+ RendererSavePasswordProgressLogger* logger) {
+ if (logger)
+ logger->LogMessage(Logger::STRING_FILL_USERNAME_AND_PASSWORD_METHOD);
+
// Don't fill username if password can't be set.
if (!IsElementAutocompletable(*password_element))
return false;
@@ -452,6 +457,8 @@ bool FillUserNameAndPassword(
exact_username_match)) {
username = fill_data.username_field.value;
password = fill_data.password_field.value;
+ if (logger)
+ logger->LogMessage(Logger::STRING_USERNAMES_MATCH);
} else {
// Scan additional logins for a match.
for (const auto& it : fill_data.additional_logins) {
@@ -461,6 +468,10 @@ bool FillUserNameAndPassword(
break;
}
}
+ if (logger) {
+ logger->LogBoolean(Logger::STRING_MATCH_IN_ADDITIONAL,
+ !(username.empty() && password.empty()));
+ }
// Check possible usernames.
if (username.empty() && password.empty()) {
@@ -487,10 +498,12 @@ bool FillUserNameAndPassword(
// Input matches the username, fill in required values.
if (!username_element->isNull() &&
IsElementAutocompletable(*username_element)) {
- // TODO(vabr): Why not setSuggestedValue? http://crbug.com/507714
+ // TODO(crbug.com/507714): Why not setSuggestedValue?
username_element->setValue(username, true);
(*nonscript_modified_values)[*username_element] = username;
username_element->setAutofilled(true);
+ if (logger)
+ logger->LogMessage(Logger::STRING_USERNAME_FILLED);
dvadym 2016/04/26 14:47:34 It seems that it would be helpful to log also name
vabr (Chromium) 2016/04/26 16:55:41 While I agree, this would need some more changes t
if (set_selection) {
form_util::PreviewSuggestion(username, current_username,
username_element);
@@ -509,6 +522,8 @@ bool FillUserNameAndPassword(
registration_callback.Run(password_element);
password_element->setAutofilled(true);
+ if (logger)
+ logger->LogMessage(Logger::STRING_PASSWORD_FILLED);
dvadym 2016/04/26 14:47:34 It seems that it would be helpful to log also name
vabr (Chromium) 2016/04/26 16:55:41 Ditto.
return true;
}
@@ -526,7 +541,8 @@ bool FillFormOnPasswordReceived(
blink::WebInputElement password_element,
std::map<const blink::WebInputElement, blink::WebString>*
nonscript_modified_values,
- base::Callback<void(blink::WebInputElement*)> registration_callback) {
+ base::Callback<void(blink::WebInputElement*)> registration_callback,
+ RendererSavePasswordProgressLogger* logger) {
// Do not fill if the password field is in a chain of iframes not having
// identical origin.
blink::WebFrame* cur_frame = password_element.document().frame();
@@ -594,13 +610,10 @@ bool FillFormOnPasswordReceived(
// Fill if we have an exact match for the username. Note that this sets
// username to autofilled.
- return FillUserNameAndPassword(&username_element,
- &password_element,
- fill_data,
- true /* exact_username_match */,
- false /* set_selection */,
- nonscript_modified_values,
- registration_callback);
+ return FillUserNameAndPassword(
+ &username_element, &password_element, fill_data,
+ true /* exact_username_match */, false /* set_selection */,
+ nonscript_modified_values, registration_callback, logger);
}
// Takes a |map| with pointers as keys and linked_ptr as values, and returns
@@ -694,11 +707,11 @@ bool PasswordAutofillAgent::TextFieldDidEndEditing(
// Do not set selection when ending an editing session, otherwise it can
// mess with focus.
- FillUserNameAndPassword(
- &username, &password, fill_data, true, false,
- &nonscript_modified_values_,
- base::Bind(&PasswordValueGatekeeper::RegisterElement,
- base::Unretained(&gatekeeper_)));
+ FillUserNameAndPassword(&username, &password, fill_data, true, false,
+ &nonscript_modified_values_,
+ base::Bind(&PasswordValueGatekeeper::RegisterElement,
+ base::Unretained(&gatekeeper_)),
+ nullptr);
return true;
}
@@ -1311,10 +1324,24 @@ void PasswordAutofillAgent::DidStartProvisionalLoad() {
void PasswordAutofillAgent::OnFillPasswordForm(
int key,
const PasswordFormFillData& form_data) {
+ std::unique_ptr<RendererSavePasswordProgressLogger> logger;
+ if (logging_state_active_) {
+ logger.reset(new RendererSavePasswordProgressLogger(this, routing_id()));
+ logger->LogMessage(Logger::STRING_ON_FILL_PASSWORD_FORM_METHOD);
+ }
+
bool ambiguous_or_empty_names =
DoesFormContainAmbiguousOrEmptyNames(form_data);
FormElementsList forms;
FindFormElements(render_frame(), form_data, ambiguous_or_empty_names, &forms);
+ if (logger) {
+ logger->LogBoolean(Logger::STRING_AMBIGUOUS_OR_EMPTY_NAMES,
+ ambiguous_or_empty_names);
+ logger->LogNumber(Logger::STRING_NUMBER_OF_POTENTIAL_FORMS_TO_FILL,
+ forms.size());
+ logger->LogBoolean(Logger::STRING_FORM_DATA_WAIT,
+ form_data.wait_for_username);
+ }
for (const auto& form : forms) {
base::string16 username_field_name;
base::string16 password_field_name =
@@ -1325,6 +1352,14 @@ void PasswordAutofillAgent::OnFillPasswordForm(
username_field_name =
FieldName(form_data.username_field, ambiguous_or_empty_names);
}
+ if (logger) {
+ logger->LogBoolean(Logger::STRING_CONTAINS_FILLABLE_USERNAME_FIELD,
+ form_contains_fillable_username_field);
+ logger->LogBoolean(Logger::STRING_USERNAME_FIELD_NAME_EMPTY,
+ username_field_name.empty());
+ logger->LogBoolean(Logger::STRING_PASSWORD_FIELD_NAME_EMPTY,
+ password_field_name.empty());
+ }
// Attach autocomplete listener to enable selecting alternate logins.
blink::WebInputElement username_element;
@@ -1362,12 +1397,11 @@ void PasswordAutofillAgent::OnFillPasswordForm(
// until the user types in a valid username.
if (!form_data.wait_for_username) {
FillFormOnPasswordReceived(
- form_data,
- username_element,
- password_element,
+ form_data, username_element, password_element,
&nonscript_modified_values_,
base::Bind(&PasswordValueGatekeeper::RegisterElement,
- base::Unretained(&gatekeeper_)));
+ base::Unretained(&gatekeeper_)),
+ logger.get());
}
PasswordInfo password_info;
« no previous file with comments | « no previous file | components/autofill/core/common/save_password_progress_logger.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698