Index: components/autofill/core/browser/autofill_manager.cc |
diff --git a/components/autofill/core/browser/autofill_manager.cc b/components/autofill/core/browser/autofill_manager.cc |
index d599bce07603f84b97bd881bbe88c249078ea123..881cfcf2eca10ad672e5ee1ecdaf2c7fa27acd0b 100644 |
--- a/components/autofill/core/browser/autofill_manager.cc |
+++ b/components/autofill/core/browser/autofill_manager.cc |
@@ -217,16 +217,23 @@ AutofillManager::AutofillManager( |
AutofillDownloadManagerState enable_download_manager) |
: driver_(driver), |
client_(client), |
- payments_client_( |
- new payments::PaymentsClient(driver->GetURLRequestContext(), this)), |
+ payments_client_(base::MakeUnique<payments::PaymentsClient>( |
+ driver->GetURLRequestContext(), |
+ this)), |
app_locale_(app_locale), |
personal_data_(client->GetPersonalDataManager()), |
autocomplete_history_manager_( |
- new AutocompleteHistoryManager(driver, client)), |
+ base::MakeUnique<AutocompleteHistoryManager>(driver, client)), |
+ ukm_logger_(base::MakeUnique<AutofillMetrics::UkmLogger>( |
+ client->GetUkmService())), |
address_form_event_logger_( |
- new AutofillMetrics::FormEventLogger(false /* is_for_credit_card */)), |
+ base::MakeUnique<AutofillMetrics::FormEventLogger>( |
+ false /* is_for_credit_card */, |
+ ukm_logger_.get())), |
credit_card_form_event_logger_( |
- new AutofillMetrics::FormEventLogger(true /* is_for_credit_card */)), |
+ base::MakeUnique<AutofillMetrics::FormEventLogger>( |
+ true /* is_for_credit_card */, |
+ ukm_logger_.get())), |
has_logged_autofill_enabled_(false), |
has_logged_address_suggestions_count_(false), |
did_show_suggestions_(false), |
@@ -517,11 +524,18 @@ void AutofillManager::OnTextFieldDidChange(const FormData& form, |
AutofillMetrics::LogUserHappinessMetric(AutofillMetrics::USER_DID_TYPE); |
} |
+ DCHECK(ukm_logger_); |
+ if (ukm_logger_) |
+ ukm_logger_->LogUserHappinessMetric(AutofillMetrics::USER_DID_TYPE); |
+ |
if (autofill_field->is_autofilled) { |
autofill_field->is_autofilled = false; |
autofill_field->set_previously_autofilled(true); |
AutofillMetrics::LogUserHappinessMetric( |
AutofillMetrics::USER_DID_EDIT_AUTOFILLED_FIELD); |
+ if (ukm_logger_) |
+ ukm_logger_->LogUserHappinessMetric( |
+ AutofillMetrics::USER_DID_EDIT_AUTOFILLED_FIELD); |
if (!user_did_edit_autofilled_field_) { |
user_did_edit_autofilled_field_ = true; |
@@ -813,6 +827,9 @@ void AutofillManager::OnDidFillAutofillFormData(const FormData& form, |
UpdatePendingForm(form); |
AutofillMetrics::LogUserHappinessMetric(AutofillMetrics::USER_DID_AUTOFILL); |
+ DCHECK(ukm_logger_); |
+ if (ukm_logger_) |
+ ukm_logger_->LogUserHappinessMetric(AutofillMetrics::USER_DID_AUTOFILL); |
if (!user_did_autofill_) { |
user_did_autofill_ = true; |
AutofillMetrics::LogUserHappinessMetric( |
@@ -1088,6 +1105,9 @@ void AutofillManager::ShowUnmaskPrompt( |
AutofillClient::UnmaskCardReason reason, |
base::WeakPtr<CardUnmaskDelegate> delegate) { |
client_->ShowUnmaskPrompt(card, reason, delegate); |
+ DCHECK(ukm_logger_); |
+ if (ukm_logger_) |
+ ukm_logger_->LogUnmaskPromptEvent(AutofillMetrics::UNMASK_PROMPT_SHOWN); |
} |
void AutofillManager::OnUnmaskVerificationResult( |
@@ -1378,10 +1398,21 @@ void AutofillManager::UploadFormDataAsyncCallback( |
const TimeTicks& interaction_time, |
const TimeTicks& submission_time, |
bool observed_submission) { |
- submitted_form->LogQualityMetrics(load_time, interaction_time, |
- submission_time, |
- client_->GetRapporServiceImpl(), |
- did_show_suggestions_, observed_submission); |
+ AutofillMetrics::AutofillFormSubmittedState state = |
+ submitted_form->LogQualityMetrics( |
+ load_time, interaction_time, submission_time, |
+ client_->GetRapporServiceImpl(), did_show_suggestions_, |
+ observed_submission); |
+ if (state < AutofillMetrics::AUTOFILL_FORM_SUBMITTED_STATE_ENUM_SIZE) { |
+ DCHECK(ukm_logger_); |
+ if (ukm_logger_->url() != submitted_form->source_url()) { |
+ // TODO(csashi): Remove debug log. |
+ LOG(ERROR) << "source_url=" << submitted_form->source_url() |
+ << ", url=" << ukm_logger_->url(); |
+ ukm_logger_->set_url(submitted_form->source_url()); |
+ } |
+ AutofillMetrics::LogAutofillFormSubmittedState(state, ukm_logger_.get()); |
+ } |
if (submitted_form->ShouldBeCrowdsourced()) |
UploadFormData(*submitted_form, observed_submission); |
@@ -1416,10 +1447,11 @@ void AutofillManager::Reset() { |
ProcessPendingFormForUpload(); |
DCHECK(!pending_form_data_); |
form_structures_.clear(); |
- address_form_event_logger_.reset( |
- new AutofillMetrics::FormEventLogger(false /* is_for_credit_card */)); |
- credit_card_form_event_logger_.reset( |
- new AutofillMetrics::FormEventLogger(true /* is_for_credit_card */)); |
+ ukm_logger_.reset(new AutofillMetrics::UkmLogger(client_->GetUkmService())); |
+ address_form_event_logger_.reset(new AutofillMetrics::FormEventLogger( |
+ false /* is_for_credit_card */, ukm_logger_.get())); |
+ credit_card_form_event_logger_.reset(new AutofillMetrics::FormEventLogger( |
+ true /* is_for_credit_card */, ukm_logger_.get())); |
#if defined(OS_ANDROID) || defined(OS_IOS) |
autofill_assistant_.Reset(); |
#endif |
@@ -1443,16 +1475,23 @@ AutofillManager::AutofillManager(AutofillDriver* driver, |
PersonalDataManager* personal_data) |
: driver_(driver), |
client_(client), |
- payments_client_( |
- new payments::PaymentsClient(driver->GetURLRequestContext(), this)), |
+ payments_client_(base::MakeUnique<payments::PaymentsClient>( |
+ driver->GetURLRequestContext(), |
+ this)), |
app_locale_("en-US"), |
personal_data_(personal_data), |
autocomplete_history_manager_( |
- new AutocompleteHistoryManager(driver, client)), |
+ base::MakeUnique<AutocompleteHistoryManager>(driver, client)), |
+ ukm_logger_(base::MakeUnique<AutofillMetrics::UkmLogger>( |
+ client->GetUkmService())), |
address_form_event_logger_( |
- new AutofillMetrics::FormEventLogger(false /* is_for_credit_card */)), |
+ base::MakeUnique<AutofillMetrics::FormEventLogger>( |
+ false /* is_for_credit_card */, |
+ ukm_logger_.get())), |
credit_card_form_event_logger_( |
- new AutofillMetrics::FormEventLogger(true /* is_for_credit_card */)), |
+ base::MakeUnique<AutofillMetrics::FormEventLogger>( |
+ true /* is_for_credit_card */, |
+ ukm_logger_.get())), |
has_logged_autofill_enabled_(false), |
has_logged_address_suggestions_count_(false), |
did_show_suggestions_(false), |
@@ -1679,7 +1718,8 @@ void AutofillManager::FillOrPreviewDataModelForm( |
std::unique_ptr<FormStructure> AutofillManager::ValidateSubmittedForm( |
const FormData& form) { |
- std::unique_ptr<FormStructure> submitted_form(new FormStructure(form)); |
+ std::unique_ptr<FormStructure> submitted_form( |
+ base::MakeUnique<FormStructure>(form)); |
if (!ShouldUploadForm(*submitted_form)) |
return std::unique_ptr<FormStructure>(); |
@@ -1880,6 +1920,14 @@ void AutofillManager::ParseForms(const std::vector<FormData>& forms) { |
if (!queryable_forms.empty() || !non_queryable_forms.empty()) { |
AutofillMetrics::LogUserHappinessMetric(AutofillMetrics::FORMS_LOADED); |
+ |
+ // Log pending events, if any. |
+ ukm_logger_->LogUkm(); |
sebsg
2017/04/07 13:17:24
DCHECK(ukm_logger_)?
csashi
2017/04/09 19:17:26
I am creating ukm_logger_ in the constructor, so I
|
+ |
+ // If user submits a form, we set the key to the |submitted_form|'s |
+ // |source_url()|. |
+ ukm_logger_->set_url(forms[0].origin); |
+ ukm_logger_->LogUserHappinessMetric(AutofillMetrics::FORMS_LOADED); |
#if defined(OS_IOS) |
// Log this from same location as AutofillMetrics::FORMS_LOADED to ensure |
// that KeyboardAccessoryButtonsIOS and UserHappiness UMA metrics will be |