| 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..0260cf00fec3fdcb8d4bcd138e6c99f128aa98ec 100644
|
| --- a/components/autofill/core/browser/autofill_manager.cc
|
| +++ b/components/autofill/core/browser/autofill_manager.cc
|
| @@ -217,16 +217,24 @@ 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)),
|
| + form_interactions_ukm_logger_(
|
| + base::MakeUnique<AutofillMetrics::FormInteractionsUkmLogger>(
|
| + client->GetUkmService())),
|
| address_form_event_logger_(
|
| - new AutofillMetrics::FormEventLogger(false /* is_for_credit_card */)),
|
| + base::MakeUnique<AutofillMetrics::FormEventLogger>(
|
| + false /* is_for_credit_card */,
|
| + form_interactions_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 */,
|
| + form_interactions_ukm_logger_.get())),
|
| has_logged_autofill_enabled_(false),
|
| has_logged_address_suggestions_count_(false),
|
| did_show_suggestions_(false),
|
| @@ -515,6 +523,8 @@ void AutofillManager::OnTextFieldDidChange(const FormData& form,
|
| if (!user_did_type_) {
|
| user_did_type_ = true;
|
| AutofillMetrics::LogUserHappinessMetric(AutofillMetrics::USER_DID_TYPE);
|
| + form_interactions_ukm_logger_->LogUserHappinessMetric(
|
| + AutofillMetrics::USER_DID_TYPE);
|
| }
|
|
|
| if (autofill_field->is_autofilled) {
|
| @@ -522,6 +532,8 @@ void AutofillManager::OnTextFieldDidChange(const FormData& form,
|
| autofill_field->set_previously_autofilled(true);
|
| AutofillMetrics::LogUserHappinessMetric(
|
| AutofillMetrics::USER_DID_EDIT_AUTOFILLED_FIELD);
|
| + form_interactions_ukm_logger_->LogUserHappinessMetric(
|
| + AutofillMetrics::USER_DID_EDIT_AUTOFILLED_FIELD);
|
|
|
| if (!user_did_edit_autofilled_field_) {
|
| user_did_edit_autofilled_field_ = true;
|
| @@ -813,6 +825,8 @@ void AutofillManager::OnDidFillAutofillFormData(const FormData& form,
|
| UpdatePendingForm(form);
|
|
|
| AutofillMetrics::LogUserHappinessMetric(AutofillMetrics::USER_DID_AUTOFILL);
|
| + form_interactions_ukm_logger_->LogUserHappinessMetric(
|
| + AutofillMetrics::USER_DID_AUTOFILL);
|
| if (!user_did_autofill_) {
|
| user_did_autofill_ = true;
|
| AutofillMetrics::LogUserHappinessMetric(
|
| @@ -1088,6 +1102,8 @@ void AutofillManager::ShowUnmaskPrompt(
|
| AutofillClient::UnmaskCardReason reason,
|
| base::WeakPtr<CardUnmaskDelegate> delegate) {
|
| client_->ShowUnmaskPrompt(card, reason, delegate);
|
| + form_interactions_ukm_logger_->LogUnmaskPromptEvent(
|
| + AutofillMetrics::UNMASK_PROMPT_SHOWN);
|
| }
|
|
|
| void AutofillManager::OnUnmaskVerificationResult(
|
| @@ -1378,11 +1394,10 @@ 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);
|
| -
|
| + submitted_form->LogQualityMetrics(
|
| + load_time, interaction_time, submission_time,
|
| + client_->GetRapporServiceImpl(), form_interactions_ukm_logger_.get(),
|
| + did_show_suggestions_, observed_submission);
|
| if (submitted_form->ShouldBeCrowdsourced())
|
| UploadFormData(*submitted_form, observed_submission);
|
| }
|
| @@ -1416,10 +1431,12 @@ 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 */));
|
| + form_interactions_ukm_logger_.reset(
|
| + new AutofillMetrics::FormInteractionsUkmLogger(client_->GetUkmService()));
|
| + address_form_event_logger_.reset(new AutofillMetrics::FormEventLogger(
|
| + false /* is_for_credit_card */, form_interactions_ukm_logger_.get()));
|
| + credit_card_form_event_logger_.reset(new AutofillMetrics::FormEventLogger(
|
| + true /* is_for_credit_card */, form_interactions_ukm_logger_.get()));
|
| #if defined(OS_ANDROID) || defined(OS_IOS)
|
| autofill_assistant_.Reset();
|
| #endif
|
| @@ -1443,16 +1460,24 @@ 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)),
|
| + form_interactions_ukm_logger_(
|
| + base::MakeUnique<AutofillMetrics::FormInteractionsUkmLogger>(
|
| + client->GetUkmService())),
|
| address_form_event_logger_(
|
| - new AutofillMetrics::FormEventLogger(false /* is_for_credit_card */)),
|
| + base::MakeUnique<AutofillMetrics::FormEventLogger>(
|
| + false /* is_for_credit_card */,
|
| + form_interactions_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 */,
|
| + form_interactions_ukm_logger_.get())),
|
| has_logged_autofill_enabled_(false),
|
| has_logged_address_suggestions_count_(false),
|
| did_show_suggestions_(false),
|
| @@ -1679,7 +1704,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 +1906,14 @@ void AutofillManager::ParseForms(const std::vector<FormData>& forms) {
|
|
|
| if (!queryable_forms.empty() || !non_queryable_forms.empty()) {
|
| AutofillMetrics::LogUserHappinessMetric(AutofillMetrics::FORMS_LOADED);
|
| +
|
| + // Submit pending events, if any.
|
| + form_interactions_ukm_logger_->SubmitUkm();
|
| +
|
| + // Setup the url for metrics that we will collect for this form.
|
| + form_interactions_ukm_logger_->set_url(forms[0].origin);
|
| + form_interactions_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
|
|
|