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

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

Issue 1392623002: [Autofill] Add metric for profile action on form submitted (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 5 years, 2 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 <vector> 7 #include <vector>
8 8
9 #include "base/memory/scoped_ptr.h" 9 #include "base/memory/scoped_ptr.h"
10 #include "base/prefs/pref_service.h" 10 #include "base/prefs/pref_service.h"
(...skipping 3035 matching lines...) Expand 10 before | Expand all | Expand 10 after
3046 "Autofill.FillDuration.FromLoad.WithoutAutofill", 12, 1); 3046 "Autofill.FillDuration.FromLoad.WithoutAutofill", 12, 1);
3047 histogram_tester.ExpectTotalCount( 3047 histogram_tester.ExpectTotalCount(
3048 "Autofill.FillDuration.FromInteraction.WithAutofill", 0); 3048 "Autofill.FillDuration.FromInteraction.WithAutofill", 0);
3049 histogram_tester.ExpectTotalCount( 3049 histogram_tester.ExpectTotalCount(
3050 "Autofill.FillDuration.FromInteraction.WithoutAutofill", 0); 3050 "Autofill.FillDuration.FromInteraction.WithoutAutofill", 0);
3051 3051
3052 autofill_manager_->Reset(); 3052 autofill_manager_->Reset();
3053 } 3053 }
3054 } 3054 }
3055 3055
3056 // Verify that we correctly log metrics for profile creation on form submission. 3056 // Verify that we correctly log metrics for profile action on form submission.
3057 TEST_F(AutofillMetricsTest, AutomaticProfileCreation) { 3057 TEST_F(AutofillMetricsTest, ProfileActionOnFormSubmitted) {
3058 base::HistogramTester histogram_tester; 3058 base::HistogramTester histogram_tester;
3059 3059
3060 // Load a fillable form. 3060 // Load a fillable form.
3061 FormData form; 3061 FormData form;
3062 form.name = ASCIIToUTF16("TestForm"); 3062 form.name = ASCIIToUTF16("TestForm");
3063 form.origin = GURL("http://example.com/form.html"); 3063 form.origin = GURL("http://example.com/form.html");
3064 form.action = GURL("http://example.com/submit.html"); 3064 form.action = GURL("http://example.com/submit.html");
3065 3065
3066 // Create the form's fields. 3066 // Create the form's fields.
3067 FormFieldData field; 3067 FormFieldData field;
3068 test::CreateTestFormField("Name", "name", "", "text", &field); 3068 test::CreateTestFormField("Name", "name", "", "text", &field);
3069 form.fields.push_back(field); 3069 form.fields.push_back(field);
3070 test::CreateTestFormField("Email", "email", "", "text", &field); 3070 test::CreateTestFormField("Email", "email", "", "text", &field);
3071 form.fields.push_back(field); 3071 form.fields.push_back(field);
3072 test::CreateTestFormField("Phone", "phone", "", "text", &field); 3072 test::CreateTestFormField("Phone", "phone", "", "text", &field);
3073 form.fields.push_back(field); 3073 form.fields.push_back(field);
3074 test::CreateTestFormField("Address", "address", "", "text", &field); 3074 test::CreateTestFormField("Address", "address", "", "text", &field);
3075 form.fields.push_back(field); 3075 form.fields.push_back(field);
3076 test::CreateTestFormField("City", "city", "", "text", &field); 3076 test::CreateTestFormField("City", "city", "", "text", &field);
3077 form.fields.push_back(field); 3077 form.fields.push_back(field);
3078 test::CreateTestFormField("Country", "country", "", "text", &field); 3078 test::CreateTestFormField("Country", "country", "", "text", &field);
3079 form.fields.push_back(field); 3079 form.fields.push_back(field);
3080 test::CreateTestFormField("State", "state", "", "text", &field); 3080 test::CreateTestFormField("State", "state", "", "text", &field);
3081 form.fields.push_back(field); 3081 form.fields.push_back(field);
3082 test::CreateTestFormField("Zip", "zip", "", "text", &field); 3082 test::CreateTestFormField("Zip", "zip", "", "text", &field);
3083 form.fields.push_back(field); 3083 form.fields.push_back(field);
3084 test::CreateTestFormField("Organization", "organization", "", "text", &field);
3085 form.fields.push_back(field);
3084 3086
3085 std::vector<FormData> forms(1, form); 3087 std::vector<FormData> forms(1, form);
3086 3088
3087 // Fill second form. 3089 // Fill second form.
3088 FormData second_form = form; 3090 FormData second_form = form;
3089 std::vector<FormData> second_forms(1, second_form); 3091 std::vector<FormData> second_forms(1, second_form);
3090 3092
3091 // Fill a third form. 3093 // Fill a third form.
3092 FormData third_form = form; 3094 FormData third_form = form;
3093 std::vector<FormData> third_forms(1, third_form); 3095 std::vector<FormData> third_forms(1, third_form);
3094 3096
3097 // Fill a fourth form.
3098 FormData fourth_form = form;
3099 std::vector<FormData> fourth_forms(1, fourth_form);
3100
3095 // Fill the field values for the first form submission. 3101 // Fill the field values for the first form submission.
3096 form.fields[0].value = ASCIIToUTF16("Albert Canuck"); 3102 form.fields[0].value = ASCIIToUTF16("Albert Canuck");
3097 form.fields[1].value = ASCIIToUTF16("can@gmail.com"); 3103 form.fields[1].value = ASCIIToUTF16("can@gmail.com");
3098 form.fields[2].value = ASCIIToUTF16("12345678901"); 3104 form.fields[2].value = ASCIIToUTF16("12345678901");
3099 form.fields[3].value = ASCIIToUTF16("1234 McGill street."); 3105 form.fields[3].value = ASCIIToUTF16("1234 McGill street.");
3100 form.fields[4].value = ASCIIToUTF16("Montreal"); 3106 form.fields[4].value = ASCIIToUTF16("Montreal");
3101 form.fields[5].value = ASCIIToUTF16("Canada"); 3107 form.fields[5].value = ASCIIToUTF16("Canada");
3102 form.fields[6].value = ASCIIToUTF16("Quebec"); 3108 form.fields[6].value = ASCIIToUTF16("Quebec");
3103 form.fields[7].value = ASCIIToUTF16("A1A 1A1"); 3109 form.fields[7].value = ASCIIToUTF16("A1A 1A1");
3104 3110
3105 // Fill the field values for the second form submission (same as first form). 3111 // Fill the field values for the second form submission (same as first form).
3106 second_form.fields = form.fields; 3112 second_form.fields = form.fields;
3107 3113
3108 // Fill the field values for the third form submission. 3114 // Fill the field values for the third form submission.
3109 third_form.fields[0].value = ASCIIToUTF16("Jean-Paul Canuck"); 3115 third_form.fields[0].value = ASCIIToUTF16("Jean-Paul Canuck");
3110 third_form.fields[1].value = ASCIIToUTF16("can2@gmail.com"); 3116 third_form.fields[1].value = ASCIIToUTF16("can2@gmail.com");
3111 third_form.fields[2].value = ASCIIToUTF16("12345678901"); 3117 third_form.fields[2].value = ASCIIToUTF16("");
3112 third_form.fields[3].value = ASCIIToUTF16("1234 McGill street."); 3118 third_form.fields[3].value = ASCIIToUTF16("1234 McGill street.");
3113 third_form.fields[4].value = ASCIIToUTF16("Montreal"); 3119 third_form.fields[4].value = ASCIIToUTF16("Montreal");
3114 third_form.fields[5].value = ASCIIToUTF16("Canada"); 3120 third_form.fields[5].value = ASCIIToUTF16("Canada");
3115 third_form.fields[6].value = ASCIIToUTF16("Quebec"); 3121 third_form.fields[6].value = ASCIIToUTF16("Quebec");
3116 third_form.fields[7].value = ASCIIToUTF16("A1A 1A1"); 3122 third_form.fields[7].value = ASCIIToUTF16("A1A 1A1");
3117 3123
3118 // Expect to log true for the metric since a new profile is submitted. 3124 // Fill the field values for the fourth form submission (same as third form
3125 // plus phone info).
3126 fourth_form.fields = third_form.fields;
3127 fourth_form.fields[2].value = ASCIIToUTF16("12345678901");
3128
3129 // Expect to log NEW_PROFILE_CREATED for the metric since a new profile is
3130 // submitted.
3119 autofill_manager_->OnFormsSeen(forms, TimeTicks::FromInternalValue(1)); 3131 autofill_manager_->OnFormsSeen(forms, TimeTicks::FromInternalValue(1));
3120 autofill_manager_->SubmitForm(form, TimeTicks::FromInternalValue(17)); 3132 autofill_manager_->SubmitForm(form, TimeTicks::FromInternalValue(17));
3121 histogram_tester.ExpectBucketCount("Autofill.AutomaticProfileCreation", 3133 histogram_tester.ExpectBucketCount("Autofill.ProfileActionOnFormSubmitted",
3122 true, 1); 3134 AutofillMetrics::NEW_PROFILE_CREATED, 1);
3123 histogram_tester.ExpectBucketCount("Autofill.AutomaticProfileCreation", 3135 histogram_tester.ExpectBucketCount("Autofill.ProfileActionOnFormSubmitted",
3124 false, 0); 3136 AutofillMetrics::EXISTING_PROFILE_USED, 0);
3137 histogram_tester.ExpectBucketCount("Autofill.ProfileActionOnFormSubmitted",
3138 AutofillMetrics::EXISTING_PROFILE_UPDATED,
3139 0);
3125 3140
3126 // Expect to log false for the metric since the same profile is submitted. 3141 // Expect to log EXISTING_PROFILE_USED for the metric since the same profile
3142 // is submitted.
3127 autofill_manager_->OnFormsSeen(second_forms, TimeTicks::FromInternalValue(1)); 3143 autofill_manager_->OnFormsSeen(second_forms, TimeTicks::FromInternalValue(1));
3128 autofill_manager_->SubmitForm(second_form, TimeTicks::FromInternalValue(17)); 3144 autofill_manager_->SubmitForm(second_form, TimeTicks::FromInternalValue(17));
3129 histogram_tester.ExpectBucketCount("Autofill.AutomaticProfileCreation", 3145 histogram_tester.ExpectBucketCount("Autofill.ProfileActionOnFormSubmitted",
3130 true, 1); 3146 AutofillMetrics::NEW_PROFILE_CREATED, 1);
3131 histogram_tester.ExpectBucketCount("Autofill.AutomaticProfileCreation", 3147 histogram_tester.ExpectBucketCount("Autofill.ProfileActionOnFormSubmitted",
3132 false, 1); 3148 AutofillMetrics::EXISTING_PROFILE_USED, 1);
3149 histogram_tester.ExpectBucketCount("Autofill.ProfileActionOnFormSubmitted",
3150 AutofillMetrics::EXISTING_PROFILE_UPDATED,
3151 0);
3133 3152
3134 // Expect to log true for the metric since a new profile is submitted. 3153 // Expect to log NEW_PROFILE_CREATED for the metric since a new profile is
3154 // submitted.
3135 autofill_manager_->OnFormsSeen(third_forms, TimeTicks::FromInternalValue(1)); 3155 autofill_manager_->OnFormsSeen(third_forms, TimeTicks::FromInternalValue(1));
3136 autofill_manager_->SubmitForm(third_form, TimeTicks::FromInternalValue(17)); 3156 autofill_manager_->SubmitForm(third_form, TimeTicks::FromInternalValue(17));
3137 histogram_tester.ExpectBucketCount("Autofill.AutomaticProfileCreation", 3157 histogram_tester.ExpectBucketCount("Autofill.ProfileActionOnFormSubmitted",
3138 true, 2); 3158 AutofillMetrics::NEW_PROFILE_CREATED, 2);
3139 histogram_tester.ExpectBucketCount("Autofill.AutomaticProfileCreation", 3159 histogram_tester.ExpectBucketCount("Autofill.ProfileActionOnFormSubmitted",
3140 false, 1); 3160 AutofillMetrics::EXISTING_PROFILE_USED, 1);
3161 histogram_tester.ExpectBucketCount("Autofill.ProfileActionOnFormSubmitted",
3162 AutofillMetrics::EXISTING_PROFILE_UPDATED,
3163 0);
3164
3165 // Expect to log EXISTING_PROFILE_UPDATED for the metric since the profile was
3166 // updated.
3167 autofill_manager_->OnFormsSeen(fourth_forms, TimeTicks::FromInternalValue(1));
3168 autofill_manager_->SubmitForm(fourth_form, TimeTicks::FromInternalValue(17));
3169 histogram_tester.ExpectBucketCount("Autofill.ProfileActionOnFormSubmitted",
3170 AutofillMetrics::NEW_PROFILE_CREATED, 2);
3171 histogram_tester.ExpectBucketCount("Autofill.ProfileActionOnFormSubmitted",
3172 AutofillMetrics::EXISTING_PROFILE_USED, 1);
3173 histogram_tester.ExpectBucketCount("Autofill.ProfileActionOnFormSubmitted",
3174 AutofillMetrics::EXISTING_PROFILE_UPDATED,
3175 1);
3141 } 3176 }
3142 3177
3143 // Test class that shares setup code for testing ParseQueryResponse. 3178 // Test class that shares setup code for testing ParseQueryResponse.
3144 class AutofillMetricsParseQueryResponseTest : public testing::Test { 3179 class AutofillMetricsParseQueryResponseTest : public testing::Test {
3145 public: 3180 public:
3146 void SetUp() override { 3181 void SetUp() override {
3147 FormData form; 3182 FormData form;
3148 form.origin = GURL("http://foo.com"); 3183 form.origin = GURL("http://foo.com");
3149 FormFieldData field; 3184 FormFieldData field;
3150 field.form_control_type = "text"; 3185 field.form_control_type = "text";
(...skipping 122 matching lines...) Expand 10 before | Expand all | Expand 10 after
3273 EXPECT_THAT( 3308 EXPECT_THAT(
3274 histogram_tester.GetAllSamples("Autofill.ServerResponseHasDataForForm"), 3309 histogram_tester.GetAllSamples("Autofill.ServerResponseHasDataForForm"),
3275 ElementsAre(Bucket(true, 2))); 3310 ElementsAre(Bucket(true, 2)));
3276 3311
3277 // No RAPPOR metrics are logged in the case there is at least some server data 3312 // No RAPPOR metrics are logged in the case there is at least some server data
3278 // available for all forms. 3313 // available for all forms.
3279 EXPECT_EQ(0, rappor_service_.GetReportsCount()); 3314 EXPECT_EQ(0, rappor_service_.GetReportsCount());
3280 } 3315 }
3281 3316
3282 } // namespace autofill 3317 } // namespace autofill
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698