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

Side by Side Diff: components/autofill/core/browser/autofill_metrics.cc

Issue 1874493002: [Autofill] Add user actions for checkout flow. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Nits 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 unified diff | Download patch
OLDNEW
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 <algorithm> 7 #include <algorithm>
8 8
9 #include "base/logging.h" 9 #include "base/logging.h"
10 #include "base/metrics/histogram_macros.h" 10 #include "base/metrics/histogram_macros.h"
11 #include "base/metrics/sparse_histogram.h" 11 #include "base/metrics/sparse_histogram.h"
12 #include "base/metrics/user_metrics.h"
12 #include "base/time/time.h" 13 #include "base/time/time.h"
13 #include "components/autofill/core/browser/autofill_type.h" 14 #include "components/autofill/core/browser/autofill_type.h"
14 #include "components/autofill/core/browser/form_structure.h" 15 #include "components/autofill/core/browser/form_structure.h"
15 #include "components/autofill/core/common/form_data.h" 16 #include "components/autofill/core/common/form_data.h"
16 17
17 namespace autofill { 18 namespace autofill {
18 19
19 namespace { 20 namespace {
20 21
21 enum FieldTypeGroupForMetrics { 22 enum FieldTypeGroupForMetrics {
(...skipping 621 matching lines...) Expand 10 before | Expand all | Expand 10 after
643 // static 644 // static
644 void AutofillMetrics::LogAddressSuggestionsCount(size_t num_suggestions) { 645 void AutofillMetrics::LogAddressSuggestionsCount(size_t num_suggestions) {
645 UMA_HISTOGRAM_COUNTS("Autofill.AddressSuggestionsCount", num_suggestions); 646 UMA_HISTOGRAM_COUNTS("Autofill.AddressSuggestionsCount", num_suggestions);
646 } 647 }
647 648
648 // static 649 // static
649 void AutofillMetrics::LogAutofillSuggestionAcceptedIndex(int index) { 650 void AutofillMetrics::LogAutofillSuggestionAcceptedIndex(int index) {
650 // A maximum of 50 is enforced to minimize the number of buckets generated. 651 // A maximum of 50 is enforced to minimize the number of buckets generated.
651 UMA_HISTOGRAM_SPARSE_SLOWLY("Autofill.SuggestionAcceptedIndex", 652 UMA_HISTOGRAM_SPARSE_SLOWLY("Autofill.SuggestionAcceptedIndex",
652 std::min(index, 50)); 653 std::min(index, 50));
654
655 base::RecordAction(base::UserMetricsAction("Autofill_SelectedSuggestion"));
653 } 656 }
654 657
655 // static 658 // static
656 void AutofillMetrics::LogAutocompleteSuggestionAcceptedIndex(int index) { 659 void AutofillMetrics::LogAutocompleteSuggestionAcceptedIndex(int index) {
657 // A maximum of 50 is enforced to minimize the number of buckets generated. 660 // A maximum of 50 is enforced to minimize the number of buckets generated.
658 UMA_HISTOGRAM_SPARSE_SLOWLY("Autofill.SuggestionAcceptedIndex.Autocomplete", 661 UMA_HISTOGRAM_SPARSE_SLOWLY("Autofill.SuggestionAcceptedIndex.Autocomplete",
659 std::min(index, 50)); 662 std::min(index, 50));
660 } 663 }
661 664
662 // static 665 // static
(...skipping 55 matching lines...) Expand 10 before | Expand all | Expand 10 after
718 logged_suggestion_filled_was_masked_server_card_(false) { 721 logged_suggestion_filled_was_masked_server_card_(false) {
719 } 722 }
720 723
721 void AutofillMetrics::FormEventLogger::OnDidInteractWithAutofillableForm() { 724 void AutofillMetrics::FormEventLogger::OnDidInteractWithAutofillableForm() {
722 if (!has_logged_interacted_) { 725 if (!has_logged_interacted_) {
723 has_logged_interacted_ = true; 726 has_logged_interacted_ = true;
724 Log(AutofillMetrics::FORM_EVENT_INTERACTED_ONCE); 727 Log(AutofillMetrics::FORM_EVENT_INTERACTED_ONCE);
725 } 728 }
726 } 729 }
727 730
731 void AutofillMetrics::FormEventLogger::OnDidPollSuggestions() {
732 if (is_for_credit_card_) {
733 base::RecordAction(
734 base::UserMetricsAction("Autofill_PolledCreditCardSuggestions"));
735 } else {
736 base::RecordAction(
737 base::UserMetricsAction("Autofill_PolledProfileSuggestions"));
738 }
739 }
740
728 void AutofillMetrics::FormEventLogger::OnDidShowSuggestions() { 741 void AutofillMetrics::FormEventLogger::OnDidShowSuggestions() {
729 Log(AutofillMetrics::FORM_EVENT_SUGGESTIONS_SHOWN); 742 Log(AutofillMetrics::FORM_EVENT_SUGGESTIONS_SHOWN);
730 if (!has_logged_suggestions_shown_) { 743 if (!has_logged_suggestions_shown_) {
731 has_logged_suggestions_shown_ = true; 744 has_logged_suggestions_shown_ = true;
732 Log(AutofillMetrics::FORM_EVENT_SUGGESTIONS_SHOWN_ONCE); 745 Log(AutofillMetrics::FORM_EVENT_SUGGESTIONS_SHOWN_ONCE);
733 } 746 }
747
748 if (is_for_credit_card_) {
749 base::RecordAction(
750 base::UserMetricsAction("Autofill_ShowedCreditCardSuggestions"));
751 } else {
752 base::RecordAction(
753 base::UserMetricsAction("Autofill_ShowedProfileSuggestions"));
754 }
734 } 755 }
735 756
736 void AutofillMetrics::FormEventLogger::OnDidSelectMaskedServerCardSuggestion() { 757 void AutofillMetrics::FormEventLogger::OnDidSelectMaskedServerCardSuggestion() {
737 DCHECK(is_for_credit_card_); 758 DCHECK(is_for_credit_card_);
738 Log(AutofillMetrics::FORM_EVENT_MASKED_SERVER_CARD_SUGGESTION_SELECTED); 759 Log(AutofillMetrics::FORM_EVENT_MASKED_SERVER_CARD_SUGGESTION_SELECTED);
739 if (!has_logged_masked_server_card_suggestion_selected_) { 760 if (!has_logged_masked_server_card_suggestion_selected_) {
740 has_logged_masked_server_card_suggestion_selected_ = true; 761 has_logged_masked_server_card_suggestion_selected_ = true;
741 Log(AutofillMetrics 762 Log(AutofillMetrics
742 ::FORM_EVENT_MASKED_SERVER_CARD_SUGGESTION_SELECTED_ONCE); 763 ::FORM_EVENT_MASKED_SERVER_CARD_SUGGESTION_SELECTED_ONCE);
743 } 764 }
(...skipping 18 matching lines...) Expand all
762 credit_card.record_type() == CreditCard::MASKED_SERVER_CARD; 783 credit_card.record_type() == CreditCard::MASKED_SERVER_CARD;
763 if (credit_card.record_type() == CreditCard::MASKED_SERVER_CARD) { 784 if (credit_card.record_type() == CreditCard::MASKED_SERVER_CARD) {
764 Log(AutofillMetrics 785 Log(AutofillMetrics
765 ::FORM_EVENT_MASKED_SERVER_CARD_SUGGESTION_FILLED_ONCE); 786 ::FORM_EVENT_MASKED_SERVER_CARD_SUGGESTION_FILLED_ONCE);
766 } else if (credit_card.record_type() == CreditCard::FULL_SERVER_CARD) { 787 } else if (credit_card.record_type() == CreditCard::FULL_SERVER_CARD) {
767 Log(AutofillMetrics::FORM_EVENT_SERVER_SUGGESTION_FILLED_ONCE); 788 Log(AutofillMetrics::FORM_EVENT_SERVER_SUGGESTION_FILLED_ONCE);
768 } else { 789 } else {
769 Log(AutofillMetrics::FORM_EVENT_LOCAL_SUGGESTION_FILLED_ONCE); 790 Log(AutofillMetrics::FORM_EVENT_LOCAL_SUGGESTION_FILLED_ONCE);
770 } 791 }
771 } 792 }
793
794 base::RecordAction(
795 base::UserMetricsAction("Autofill_FilledCreditCardSuggestion"));
772 } 796 }
773 797
774 void AutofillMetrics::FormEventLogger::OnDidFillSuggestion( 798 void AutofillMetrics::FormEventLogger::OnDidFillSuggestion(
775 const AutofillProfile& profile) { 799 const AutofillProfile& profile) {
776 DCHECK(!is_for_credit_card_); 800 DCHECK(!is_for_credit_card_);
777 if (profile.record_type() == AutofillProfile::SERVER_PROFILE) 801 if (profile.record_type() == AutofillProfile::SERVER_PROFILE)
778 Log(AutofillMetrics::FORM_EVENT_SERVER_SUGGESTION_FILLED); 802 Log(AutofillMetrics::FORM_EVENT_SERVER_SUGGESTION_FILLED);
779 else 803 else
780 Log(AutofillMetrics::FORM_EVENT_LOCAL_SUGGESTION_FILLED); 804 Log(AutofillMetrics::FORM_EVENT_LOCAL_SUGGESTION_FILLED);
781 805
782 if (!has_logged_suggestion_filled_) { 806 if (!has_logged_suggestion_filled_) {
783 has_logged_suggestion_filled_ = true; 807 has_logged_suggestion_filled_ = true;
784 logged_suggestion_filled_was_server_data_ = 808 logged_suggestion_filled_was_server_data_ =
785 profile.record_type() == AutofillProfile::SERVER_PROFILE; 809 profile.record_type() == AutofillProfile::SERVER_PROFILE;
786 Log(profile.record_type() == AutofillProfile::SERVER_PROFILE 810 Log(profile.record_type() == AutofillProfile::SERVER_PROFILE
787 ? AutofillMetrics::FORM_EVENT_SERVER_SUGGESTION_FILLED_ONCE 811 ? AutofillMetrics::FORM_EVENT_SERVER_SUGGESTION_FILLED_ONCE
788 : AutofillMetrics::FORM_EVENT_LOCAL_SUGGESTION_FILLED_ONCE); 812 : AutofillMetrics::FORM_EVENT_LOCAL_SUGGESTION_FILLED_ONCE);
789 } 813 }
814
815 base::RecordAction(
816 base::UserMetricsAction("Autofill_FilledProfileSuggestion"));
790 } 817 }
791 818
792 void AutofillMetrics::FormEventLogger::OnWillSubmitForm() { 819 void AutofillMetrics::FormEventLogger::OnWillSubmitForm() {
793 // Not logging this kind of form if we haven't logged a user interaction. 820 // Not logging this kind of form if we haven't logged a user interaction.
794 if (!has_logged_interacted_) 821 if (!has_logged_interacted_)
795 return; 822 return;
796 823
797 // Not logging twice. 824 // Not logging twice.
798 if (has_logged_will_submit_) 825 if (has_logged_will_submit_)
799 return; 826 return;
800 has_logged_will_submit_ = true; 827 has_logged_will_submit_ = true;
801 828
802 if (!has_logged_suggestion_filled_) { 829 if (!has_logged_suggestion_filled_) {
803 Log(AutofillMetrics::FORM_EVENT_NO_SUGGESTION_WILL_SUBMIT_ONCE); 830 Log(AutofillMetrics::FORM_EVENT_NO_SUGGESTION_WILL_SUBMIT_ONCE);
804 } else if (logged_suggestion_filled_was_masked_server_card_) { 831 } else if (logged_suggestion_filled_was_masked_server_card_) {
805 Log(AutofillMetrics:: 832 Log(AutofillMetrics::
806 FORM_EVENT_MASKED_SERVER_CARD_SUGGESTION_WILL_SUBMIT_ONCE); 833 FORM_EVENT_MASKED_SERVER_CARD_SUGGESTION_WILL_SUBMIT_ONCE);
807 } else if (logged_suggestion_filled_was_server_data_) { 834 } else if (logged_suggestion_filled_was_server_data_) {
808 Log(AutofillMetrics::FORM_EVENT_SERVER_SUGGESTION_WILL_SUBMIT_ONCE); 835 Log(AutofillMetrics::FORM_EVENT_SERVER_SUGGESTION_WILL_SUBMIT_ONCE);
809 } else { 836 } else {
810 Log(AutofillMetrics::FORM_EVENT_LOCAL_SUGGESTION_WILL_SUBMIT_ONCE); 837 Log(AutofillMetrics::FORM_EVENT_LOCAL_SUGGESTION_WILL_SUBMIT_ONCE);
811 } 838 }
839
840 base::RecordAction(base::UserMetricsAction("Autofill_OnWillSubmitForm"));
812 } 841 }
813 842
814 void AutofillMetrics::FormEventLogger::OnFormSubmitted() { 843 void AutofillMetrics::FormEventLogger::OnFormSubmitted() {
815 // Not logging this kind of form if we haven't logged a user interaction. 844 // Not logging this kind of form if we haven't logged a user interaction.
816 if (!has_logged_interacted_) 845 if (!has_logged_interacted_)
817 return; 846 return;
818 847
819 // Not logging twice. 848 // Not logging twice.
820 if (has_logged_submitted_) 849 if (has_logged_submitted_)
821 return; 850 return;
822 has_logged_submitted_ = true; 851 has_logged_submitted_ = true;
823 852
824 if (!has_logged_suggestion_filled_) { 853 if (!has_logged_suggestion_filled_) {
825 Log(AutofillMetrics::FORM_EVENT_NO_SUGGESTION_SUBMITTED_ONCE); 854 Log(AutofillMetrics::FORM_EVENT_NO_SUGGESTION_SUBMITTED_ONCE);
826 } else if (logged_suggestion_filled_was_masked_server_card_) { 855 } else if (logged_suggestion_filled_was_masked_server_card_) {
827 Log(AutofillMetrics 856 Log(AutofillMetrics
828 ::FORM_EVENT_MASKED_SERVER_CARD_SUGGESTION_SUBMITTED_ONCE); 857 ::FORM_EVENT_MASKED_SERVER_CARD_SUGGESTION_SUBMITTED_ONCE);
829 } else if (logged_suggestion_filled_was_server_data_) { 858 } else if (logged_suggestion_filled_was_server_data_) {
830 Log(AutofillMetrics::FORM_EVENT_SERVER_SUGGESTION_SUBMITTED_ONCE); 859 Log(AutofillMetrics::FORM_EVENT_SERVER_SUGGESTION_SUBMITTED_ONCE);
831 } else { 860 } else {
832 Log(AutofillMetrics::FORM_EVENT_LOCAL_SUGGESTION_SUBMITTED_ONCE); 861 Log(AutofillMetrics::FORM_EVENT_LOCAL_SUGGESTION_SUBMITTED_ONCE);
833 } 862 }
863
864 base::RecordAction(base::UserMetricsAction("Autofill_FormSubmitted"));
834 } 865 }
835 866
836 void AutofillMetrics::FormEventLogger::Log(FormEvent event) const { 867 void AutofillMetrics::FormEventLogger::Log(FormEvent event) const {
837 DCHECK_LT(event, NUM_FORM_EVENTS); 868 DCHECK_LT(event, NUM_FORM_EVENTS);
838 std::string name("Autofill.FormEvents."); 869 std::string name("Autofill.FormEvents.");
839 if (is_for_credit_card_) 870 if (is_for_credit_card_)
840 name += "CreditCard"; 871 name += "CreditCard";
841 else 872 else
842 name += "Address"; 873 name += "Address";
843 LogUMAHistogramEnumeration(name, event, NUM_FORM_EVENTS); 874 LogUMAHistogramEnumeration(name, event, NUM_FORM_EVENTS);
844 875
845 // Logging again in a different histogram for segmentation purposes. 876 // Logging again in a different histogram for segmentation purposes.
846 // TODO(waltercacau): Re-evaluate if we still need such fine grained 877 // TODO(waltercacau): Re-evaluate if we still need such fine grained
847 // segmentation. http://crbug.com/454018 878 // segmentation. http://crbug.com/454018
848 if (!is_server_data_available_ && !is_local_data_available_) 879 if (!is_server_data_available_ && !is_local_data_available_)
849 name += ".WithNoData"; 880 name += ".WithNoData";
850 else if (is_server_data_available_ && !is_local_data_available_) 881 else if (is_server_data_available_ && !is_local_data_available_)
851 name += ".WithOnlyServerData"; 882 name += ".WithOnlyServerData";
852 else if (!is_server_data_available_ && is_local_data_available_) 883 else if (!is_server_data_available_ && is_local_data_available_)
853 name += ".WithOnlyLocalData"; 884 name += ".WithOnlyLocalData";
854 else 885 else
855 name += ".WithBothServerAndLocalData"; 886 name += ".WithBothServerAndLocalData";
856 LogUMAHistogramEnumeration(name, event, NUM_FORM_EVENTS); 887 LogUMAHistogramEnumeration(name, event, NUM_FORM_EVENTS);
857 } 888 }
858 889
859 } // namespace autofill 890 } // namespace autofill
OLDNEW
« no previous file with comments | « components/autofill/core/browser/autofill_metrics.h ('k') | components/autofill/core/browser/autofill_metrics_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698