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

Unified Diff: components/autofill/core/browser/autofill_manager.cc

Issue 2800853004: UKM that threads together multiple form interaction events. (Closed)
Patch Set: Uses size_t for local and server record type count. Created 3 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
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 a137044e6cee718c77b96572c36a7ba618f39f04..7b3c274be4d36f0b4d69e0e405417a0fe7955cd6 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),
@@ -493,7 +501,7 @@ void AutofillManager::ProcessPendingFormForUpload() {
if (!upload_form)
return;
- StartUploadProcess(std::move(upload_form), base::TimeTicks::Now(), false);
+ StartUploadProcess(std::move(upload_form), TimeTicks::Now(), false);
}
void AutofillManager::OnTextFieldDidChange(const FormData& form,
@@ -512,6 +520,9 @@ void AutofillManager::OnTextFieldDidChange(const FormData& form,
UpdatePendingForm(form);
+ if (!user_did_type_ || autofill_field->is_autofilled)
+ form_interactions_ukm_logger_->LogTextFieldDidChange(*autofill_field);
+
if (!user_did_type_) {
user_did_type_ = true;
AutofillMetrics::LogUserHappinessMetric(AutofillMetrics::USER_DID_TYPE);
@@ -1378,11 +1389,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 +1426,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 +1455,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),
@@ -1483,34 +1503,34 @@ bool AutofillManager::RefreshDataModels() {
// Updating the FormEventLoggers for addresses and credit cards.
{
- bool is_server_data_available = false;
- bool is_local_data_available = false;
+ size_t server_record_type_count = 0;
+ size_t local_record_type_count = 0;
for (CreditCard* credit_card : credit_cards) {
if (credit_card->record_type() == CreditCard::LOCAL_CARD)
- is_local_data_available = true;
+ local_record_type_count++;
else
- is_server_data_available = true;
+ server_record_type_count++;
}
- credit_card_form_event_logger_->set_is_server_data_available(
- is_server_data_available);
- credit_card_form_event_logger_->set_is_local_data_available(
- is_local_data_available);
+ credit_card_form_event_logger_->set_server_record_type_count(
+ server_record_type_count);
+ credit_card_form_event_logger_->set_local_record_type_count(
+ local_record_type_count);
credit_card_form_event_logger_->set_is_context_secure(
client_->IsContextSecure());
}
{
- bool is_server_data_available = false;
- bool is_local_data_available = false;
+ size_t server_record_type_count = 0;
+ size_t local_record_type_count = 0;
for (AutofillProfile* profile : profiles) {
if (profile->record_type() == AutofillProfile::LOCAL_PROFILE)
- is_local_data_available = true;
+ local_record_type_count++;
else if (profile->record_type() == AutofillProfile::SERVER_PROFILE)
- is_server_data_available = true;
+ server_record_type_count++;
}
- address_form_event_logger_->set_is_server_data_available(
- is_server_data_available);
- address_form_event_logger_->set_is_local_data_available(
- is_local_data_available);
+ address_form_event_logger_->set_server_record_type_count(
+ server_record_type_count);
+ address_form_event_logger_->set_local_record_type_count(
+ local_record_type_count);
}
if (profiles.empty() && credit_cards.empty())
@@ -1679,7 +1699,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>();
@@ -1855,7 +1876,7 @@ void AutofillManager::ParseForms(const std::vector<FormData>& forms) {
std::vector<FormStructure*> non_queryable_forms;
std::vector<FormStructure*> queryable_forms;
for (const FormData& form : forms) {
- const auto parse_form_start_time = base::TimeTicks::Now();
+ const auto parse_form_start_time = TimeTicks::Now();
FormStructure* form_structure = nullptr;
if (!ParseForm(form, &form_structure))
@@ -1869,7 +1890,7 @@ void AutofillManager::ParseForms(const std::vector<FormData>& forms) {
else
non_queryable_forms.push_back(form_structure);
- AutofillMetrics::LogParseFormTiming(base::TimeTicks::Now() -
+ AutofillMetrics::LogParseFormTiming(TimeTicks::Now() -
parse_form_start_time);
}
@@ -1880,6 +1901,9 @@ void AutofillManager::ParseForms(const std::vector<FormData>& forms) {
if (!queryable_forms.empty() || !non_queryable_forms.empty()) {
AutofillMetrics::LogUserHappinessMetric(AutofillMetrics::FORMS_LOADED);
+ // Setup the url for metrics that we will collect for this form.
+ form_interactions_ukm_logger_->OnFormsLoaded(forms[0].origin);
+
#if defined(OS_IOS)
// Log this from same location as AutofillMetrics::FORMS_LOADED to ensure
// that KeyboardAccessoryButtonsIOS and UserHappiness UMA metrics will be
« no previous file with comments | « components/autofill/core/browser/autofill_manager.h ('k') | components/autofill/core/browser/autofill_metrics.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698