| OLD | NEW |
| 1 // Copyright 2013 The Chromium Authors. All rights reserved. | 1 // Copyright 2013 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "components/autofill/core/browser/autofill_metrics.h" | 5 #include "components/autofill/core/browser/autofill_metrics.h" |
| 6 | 6 |
| 7 #include "base/logging.h" | 7 #include "base/logging.h" |
| 8 #include "base/metrics/histogram.h" | 8 #include "base/metrics/histogram.h" |
| 9 #include "base/time/time.h" | 9 #include "base/time/time.h" |
| 10 #include "components/autofill/core/browser/autofill_type.h" | 10 #include "components/autofill/core/browser/autofill_type.h" |
| (...skipping 140 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 151 default: | 151 default: |
| 152 NOTREACHED(); | 152 NOTREACHED(); |
| 153 group = AMBIGUOUS; | 153 group = AMBIGUOUS; |
| 154 } | 154 } |
| 155 | 155 |
| 156 // Interpolate the |metric| with the |group|, so that all metrics for a given | 156 // Interpolate the |metric| with the |group|, so that all metrics for a given |
| 157 // |group| are adjacent. | 157 // |group| are adjacent. |
| 158 return (group * num_possible_metrics) + metric; | 158 return (group * num_possible_metrics) + metric; |
| 159 } | 159 } |
| 160 | 160 |
| 161 // Returns the histogram prefix to use for reporting metrics for |dialog_type|. | |
| 162 std::string GetPrefixForDialogType(autofill::DialogType dialog_type) { | |
| 163 switch (dialog_type) { | |
| 164 case autofill::DIALOG_TYPE_AUTOCHECKOUT: | |
| 165 return "Autocheckout"; | |
| 166 | |
| 167 case autofill::DIALOG_TYPE_REQUEST_AUTOCOMPLETE: | |
| 168 return "RequestAutocomplete"; | |
| 169 } | |
| 170 | |
| 171 NOTREACHED(); | |
| 172 return "UnknownDialogType"; | |
| 173 } | |
| 174 | |
| 175 std::string WalletApiMetricToString( | 161 std::string WalletApiMetricToString( |
| 176 AutofillMetrics::WalletApiCallMetric metric) { | 162 AutofillMetrics::WalletApiCallMetric metric) { |
| 177 switch (metric) { | 163 switch (metric) { |
| 178 case AutofillMetrics::ACCEPT_LEGAL_DOCUMENTS: | 164 case AutofillMetrics::ACCEPT_LEGAL_DOCUMENTS: |
| 179 return "AcceptLegalDocuments"; | 165 return "AcceptLegalDocuments"; |
| 180 case AutofillMetrics::AUTHENTICATE_INSTRUMENT: | 166 case AutofillMetrics::AUTHENTICATE_INSTRUMENT: |
| 181 return "AuthenticateInstrument"; | 167 return "AuthenticateInstrument"; |
| 182 case AutofillMetrics::GET_FULL_WALLET: | 168 case AutofillMetrics::GET_FULL_WALLET: |
| 183 return "GetFullWallet"; | 169 return "GetFullWallet"; |
| 184 case AutofillMetrics::GET_WALLET_ITEMS: | 170 case AutofillMetrics::GET_WALLET_ITEMS: |
| (...skipping 139 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 324 } | 310 } |
| 325 | 311 |
| 326 void AutofillMetrics::LogCreditCardInfoBarMetric(InfoBarMetric metric) const { | 312 void AutofillMetrics::LogCreditCardInfoBarMetric(InfoBarMetric metric) const { |
| 327 DCHECK_LT(metric, NUM_INFO_BAR_METRICS); | 313 DCHECK_LT(metric, NUM_INFO_BAR_METRICS); |
| 328 | 314 |
| 329 UMA_HISTOGRAM_ENUMERATION("Autofill.CreditCardInfoBar", metric, | 315 UMA_HISTOGRAM_ENUMERATION("Autofill.CreditCardInfoBar", metric, |
| 330 NUM_INFO_BAR_METRICS); | 316 NUM_INFO_BAR_METRICS); |
| 331 } | 317 } |
| 332 | 318 |
| 333 void AutofillMetrics::LogDialogDismissalState( | 319 void AutofillMetrics::LogDialogDismissalState( |
| 334 autofill::DialogType dialog_type, | |
| 335 DialogDismissalState state) const { | 320 DialogDismissalState state) const { |
| 336 std::string name = GetPrefixForDialogType(dialog_type) + ".DismissalState"; | 321 UMA_HISTOGRAM_ENUMERATION("RequestAutocomplete.DismissalState", |
| 337 LogUMAHistogramEnumeration(name, state, NUM_DIALOG_DISMISSAL_STATES); | 322 state, NUM_DIALOG_DISMISSAL_STATES); |
| 338 } | 323 } |
| 339 | 324 |
| 340 void AutofillMetrics::LogDialogInitialUserState( | 325 void AutofillMetrics::LogDialogInitialUserState( |
| 341 autofill::DialogType dialog_type, | |
| 342 DialogInitialUserStateMetric user_type) const { | 326 DialogInitialUserStateMetric user_type) const { |
| 343 std::string name = GetPrefixForDialogType(dialog_type) + ".InitialUserState"; | 327 UMA_HISTOGRAM_ENUMERATION("RequestAutocomplete.InitialUserState", |
| 344 LogUMAHistogramEnumeration( | 328 user_type, NUM_DIALOG_INITIAL_USER_STATE_METRICS); |
| 345 name, user_type, NUM_DIALOG_INITIAL_USER_STATE_METRICS); | |
| 346 } | 329 } |
| 347 | 330 |
| 348 void AutofillMetrics::LogDialogLatencyToShow( | 331 void AutofillMetrics::LogDialogLatencyToShow( |
| 349 autofill::DialogType dialog_type, | |
| 350 const base::TimeDelta& duration) const { | 332 const base::TimeDelta& duration) const { |
| 351 std::string name = | 333 LogUMAHistogramTimes("RequestAutocomplete.UiLatencyToShow", duration); |
| 352 GetPrefixForDialogType(dialog_type) + ".UiLatencyToShow"; | |
| 353 LogUMAHistogramTimes(name, duration); | |
| 354 } | 334 } |
| 355 | 335 |
| 356 void AutofillMetrics::LogDialogPopupEvent(autofill::DialogType dialog_type, | 336 void AutofillMetrics::LogDialogPopupEvent(DialogPopupEvent event) const { |
| 357 DialogPopupEvent event) const { | 337 UMA_HISTOGRAM_ENUMERATION("RequestAutocomplete.PopupInDialog", |
| 358 std::string name = GetPrefixForDialogType(dialog_type) + ".PopupInDialog"; | 338 event, NUM_DIALOG_POPUP_EVENTS); |
| 359 LogUMAHistogramEnumeration(name, event, NUM_DIALOG_POPUP_EVENTS); | |
| 360 } | 339 } |
| 361 | 340 |
| 362 void AutofillMetrics::LogDialogSecurityMetric( | 341 void AutofillMetrics::LogDialogSecurityMetric( |
| 363 autofill::DialogType dialog_type, | |
| 364 DialogSecurityMetric metric) const { | 342 DialogSecurityMetric metric) const { |
| 365 std::string name = GetPrefixForDialogType(dialog_type) + ".Security"; | 343 UMA_HISTOGRAM_ENUMERATION("RequestAutocomplete.Security", |
| 366 LogUMAHistogramEnumeration(name, metric, NUM_DIALOG_SECURITY_METRICS); | 344 metric, NUM_DIALOG_SECURITY_METRICS); |
| 367 } | 345 } |
| 368 | 346 |
| 369 void AutofillMetrics::LogDialogUiDuration( | 347 void AutofillMetrics::LogDialogUiDuration( |
| 370 const base::TimeDelta& duration, | 348 const base::TimeDelta& duration, |
| 371 autofill::DialogType dialog_type, | |
| 372 DialogDismissalAction dismissal_action) const { | 349 DialogDismissalAction dismissal_action) const { |
| 373 std::string prefix = GetPrefixForDialogType(dialog_type); | |
| 374 | |
| 375 std::string suffix; | 350 std::string suffix; |
| 376 switch (dismissal_action) { | 351 switch (dismissal_action) { |
| 377 case DIALOG_ACCEPTED: | 352 case DIALOG_ACCEPTED: |
| 378 suffix = "Submit"; | 353 suffix = "Submit"; |
| 379 break; | 354 break; |
| 380 | 355 |
| 381 case DIALOG_CANCELED: | 356 case DIALOG_CANCELED: |
| 382 suffix = "Cancel"; | 357 suffix = "Cancel"; |
| 383 break; | 358 break; |
| 384 } | 359 } |
| 385 | 360 |
| 386 LogUMAHistogramLongTimes(prefix + ".UiDuration", duration); | 361 LogUMAHistogramLongTimes("RequestAutocomplete.UiDuration", duration); |
| 387 LogUMAHistogramLongTimes(prefix + ".UiDuration." + suffix, duration); | 362 LogUMAHistogramLongTimes("RequestAutocomplete.UiDuration." + suffix, |
| 363 duration); |
| 388 } | 364 } |
| 389 | 365 |
| 390 void AutofillMetrics::LogDialogUiEvent(autofill::DialogType dialog_type, | 366 void AutofillMetrics::LogDialogUiEvent(DialogUiEvent event) const { |
| 391 DialogUiEvent event) const { | 367 UMA_HISTOGRAM_ENUMERATION("RequestAutocomplete.UiEvents", event, |
| 392 std::string name = GetPrefixForDialogType(dialog_type) + ".UiEvents"; | 368 NUM_DIALOG_UI_EVENTS); |
| 393 LogUMAHistogramEnumeration(name, event, NUM_DIALOG_UI_EVENTS); | |
| 394 } | 369 } |
| 395 | 370 |
| 396 void AutofillMetrics::LogWalletErrorMetric(autofill::DialogType dialog_type, | 371 void AutofillMetrics::LogWalletErrorMetric(WalletErrorMetric metric) const { |
| 397 WalletErrorMetric metric) const { | 372 UMA_HISTOGRAM_ENUMERATION("RequestAutocomplete.WalletErrors", metric, |
| 398 std::string name = GetPrefixForDialogType(dialog_type) + ".WalletErrors"; | 373 NUM_WALLET_ERROR_METRICS); |
| 399 LogUMAHistogramEnumeration(name, metric, NUM_WALLET_ERROR_METRICS); | |
| 400 } | 374 } |
| 401 | 375 |
| 402 void AutofillMetrics::LogWalletApiCallDuration( | 376 void AutofillMetrics::LogWalletApiCallDuration( |
| 403 WalletApiCallMetric metric, | 377 WalletApiCallMetric metric, |
| 404 const base::TimeDelta& duration) const { | 378 const base::TimeDelta& duration) const { |
| 405 LogUMAHistogramTimes("Wallet.ApiCallDuration." + | 379 LogUMAHistogramTimes("Wallet.ApiCallDuration." + |
| 406 WalletApiMetricToString(metric), duration); | 380 WalletApiMetricToString(metric), duration); |
| 407 } | 381 } |
| 408 | 382 |
| 409 void AutofillMetrics::LogWalletRequiredActionMetric( | 383 void AutofillMetrics::LogWalletRequiredActionMetric( |
| 410 autofill::DialogType dialog_type, | |
| 411 WalletRequiredActionMetric required_action) const { | 384 WalletRequiredActionMetric required_action) const { |
| 412 std::string name = | 385 UMA_HISTOGRAM_ENUMERATION("RequestAutocomplete.WalletRequiredActions", |
| 413 GetPrefixForDialogType(dialog_type) + ".WalletRequiredActions"; | 386 required_action, NUM_WALLET_REQUIRED_ACTIONS); |
| 414 LogUMAHistogramEnumeration( | |
| 415 name, required_action, NUM_WALLET_REQUIRED_ACTIONS); | |
| 416 } | 387 } |
| 417 | 388 |
| 418 void AutofillMetrics::LogDeveloperEngagementMetric( | 389 void AutofillMetrics::LogDeveloperEngagementMetric( |
| 419 DeveloperEngagementMetric metric) const { | 390 DeveloperEngagementMetric metric) const { |
| 420 DCHECK_LT(metric, NUM_DEVELOPER_ENGAGEMENT_METRICS); | 391 DCHECK_LT(metric, NUM_DEVELOPER_ENGAGEMENT_METRICS); |
| 421 | 392 |
| 422 UMA_HISTOGRAM_ENUMERATION("Autofill.DeveloperEngagement", metric, | 393 UMA_HISTOGRAM_ENUMERATION("Autofill.DeveloperEngagement", metric, |
| 423 NUM_DEVELOPER_ENGAGEMENT_METRICS); | 394 NUM_DEVELOPER_ENGAGEMENT_METRICS); |
| 424 } | 395 } |
| 425 | 396 |
| (...skipping 107 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 533 const std::string& experiment_id) const { | 504 const std::string& experiment_id) const { |
| 534 LogServerExperimentId("Autofill.ServerExperimentId.Query", experiment_id); | 505 LogServerExperimentId("Autofill.ServerExperimentId.Query", experiment_id); |
| 535 } | 506 } |
| 536 | 507 |
| 537 void AutofillMetrics::LogServerExperimentIdForUpload( | 508 void AutofillMetrics::LogServerExperimentIdForUpload( |
| 538 const std::string& experiment_id) const { | 509 const std::string& experiment_id) const { |
| 539 LogServerExperimentId("Autofill.ServerExperimentId.Upload", experiment_id); | 510 LogServerExperimentId("Autofill.ServerExperimentId.Upload", experiment_id); |
| 540 } | 511 } |
| 541 | 512 |
| 542 } // namespace autofill | 513 } // namespace autofill |
| OLD | NEW |