OLD | NEW |
---|---|
1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2011 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 #ifndef CHROME_BROWSER_AUTOFILL_AUTOFILL_METRICS_H_ | 5 #ifndef CHROME_BROWSER_AUTOFILL_AUTOFILL_METRICS_H_ |
6 #define CHROME_BROWSER_AUTOFILL_AUTOFILL_METRICS_H_ | 6 #define CHROME_BROWSER_AUTOFILL_AUTOFILL_METRICS_H_ |
7 #pragma once | 7 #pragma once |
8 | 8 |
9 #include <stddef.h> | 9 #include <stddef.h> |
10 #include <string> | 10 #include <string> |
(...skipping 61 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
72 // Our heuristics detected at least one auto-fillable field, and the server | 72 // Our heuristics detected at least one auto-fillable field, and the server |
73 // response overrode the type of at least one field. | 73 // response overrode the type of at least one field. |
74 QUERY_RESPONSE_OVERRODE_LOCAL_HEURISTICS, | 74 QUERY_RESPONSE_OVERRODE_LOCAL_HEURISTICS, |
75 | 75 |
76 // Our heuristics did not detect any auto-fillable fields, but the server | 76 // Our heuristics did not detect any auto-fillable fields, but the server |
77 // response did detect at least one. | 77 // response did detect at least one. |
78 QUERY_RESPONSE_WITH_NO_LOCAL_HEURISTICS, | 78 QUERY_RESPONSE_WITH_NO_LOCAL_HEURISTICS, |
79 NUM_SERVER_QUERY_METRICS | 79 NUM_SERVER_QUERY_METRICS |
80 }; | 80 }; |
81 | 81 |
82 // Each of these metrics is logged only for potentially autofillable forms, | |
83 // i.e. forms with at least three fields, etc. | |
84 // These are used to derive certain "user happiness" metrics. For example, we | |
85 // can compute the ratio (USER_DID_EDIT_AUTOFILLED_FIELD / USER_DID_AUTOFILL) | |
86 // to see how often users have to correct autofilled data. | |
87 enum UserHappinessMetric { | |
88 // Loaded a page containing (potentially autofillable) forms. | |
dhollowa
2011/08/25 21:48:15
Can lose parenthetical comment.
Ilya Sherman
2011/08/26 00:23:32
Done.
| |
89 FORMS_LOADED, | |
90 // Submitted a form that was never autofilled. | |
91 FORM_SUBMITTED_WITHOUT_AUTOFILL, | |
92 // Submitted a form for which at least some fields were autofilled. | |
93 FORM_SUBMITTED_AFTER_AUTOFILL, | |
dhollowa
2011/08/25 21:48:15
nix: WITHOUT and AFTER, in favor of ALL, SOME, NON
Ilya Sherman
2011/08/26 00:23:32
Done.
| |
94 // Submitted a form with at least three field values that match the user's | |
95 // client'stored Autofill data. | |
dhollowa
2011/08/25 21:48:15
s/client'stored/stored/
Ilya Sherman
2011/08/26 00:23:32
Done.
| |
96 SUBMITTED_FORM_COULD_HAVE_BEEN_AUTOFILLED, | |
dhollowa
2011/08/25 21:48:15
This is a "total" for three other possible happine
Ilya Sherman
2011/08/26 00:23:32
Done.
| |
97 | |
98 // User manually filled one of the form fields. | |
99 USER_DID_TYPE, | |
100 // We showed a popup containing Autofill suggestions. | |
101 SUGGESTIONS_SHOWN, | |
102 // Same as above, but only logged once per page load. | |
103 SUGGESTIONS_SHOWN_FIRST_TIME, | |
dhollowa
2011/08/25 21:48:15
s/FIRST_TIME/ONCE/
Ilya Sherman
2011/08/26 00:23:32
Done.
| |
104 // User autofilled at least part of the form. | |
105 USER_DID_AUTOFILL, | |
106 // Same as above, but only logged once per page load. | |
107 USER_DID_AUTOFILL_FIRST_TIME, | |
dhollowa
2011/08/25 21:48:15
s/FIRST_TIME/ONCE/
Ilya Sherman
2011/08/26 00:23:32
Done.
| |
108 // User edited a previously autofilled field. | |
109 USER_DID_EDIT_AUTOFILLED_FIELD, | |
dhollowa
2011/08/25 21:48:15
It would be interesting to have ONCE and non-ONCE
Ilya Sherman
2011/08/26 00:23:32
Done.
| |
110 NUM_USER_HAPPINESS_METRICS | |
111 }; | |
112 | |
113 // TODO(isherman): Add histograms to measure time elapsed between form load | |
dhollowa
2011/08/25 21:48:15
Comparing "fillable filled" and "fillable un-fille
Ilya Sherman
2011/08/26 00:23:32
Done.
| |
114 // form submission. | |
115 | |
82 AutofillMetrics(); | 116 AutofillMetrics(); |
83 virtual ~AutofillMetrics(); | 117 virtual ~AutofillMetrics(); |
84 | 118 |
85 virtual void LogCreditCardInfoBarMetric(InfoBarMetric metric) const; | 119 virtual void LogCreditCardInfoBarMetric(InfoBarMetric metric) const; |
86 | 120 |
87 virtual void LogHeuristicTypePrediction( | 121 virtual void LogHeuristicTypePrediction( |
88 FieldTypeQualityMetric metric, | 122 FieldTypeQualityMetric metric, |
89 AutofillFieldType field_type, | 123 AutofillFieldType field_type, |
90 const std::string& experiment_id) const; | 124 const std::string& experiment_id) const; |
91 virtual void LogOverallTypePrediction( | 125 virtual void LogOverallTypePrediction( |
92 FieldTypeQualityMetric metric, | 126 FieldTypeQualityMetric metric, |
93 AutofillFieldType field_type, | 127 AutofillFieldType field_type, |
94 const std::string& experiment_id) const; | 128 const std::string& experiment_id) const; |
95 virtual void LogServerTypePrediction(FieldTypeQualityMetric metric, | 129 virtual void LogServerTypePrediction(FieldTypeQualityMetric metric, |
96 AutofillFieldType field_type, | 130 AutofillFieldType field_type, |
97 const std::string& experiment_id) const; | 131 const std::string& experiment_id) const; |
98 | 132 |
99 virtual void LogQualityMetric(QualityMetric metric, | 133 virtual void LogQualityMetric(QualityMetric metric, |
100 const std::string& experiment_id) const; | 134 const std::string& experiment_id) const; |
101 | 135 |
102 virtual void LogServerQueryMetric(ServerQueryMetric metric) const; | 136 virtual void LogServerQueryMetric(ServerQueryMetric metric) const; |
103 | 137 |
138 virtual void LogUserHappinessMetric(UserHappinessMetric metric) const; | |
139 | |
104 | 140 |
105 // This should be called each time a page containing forms is loaded. | 141 // This should be called each time a page containing forms is loaded. |
106 virtual void LogIsAutofillEnabledAtPageLoad(bool enabled) const; | 142 virtual void LogIsAutofillEnabledAtPageLoad(bool enabled) const; |
107 | 143 |
108 // This should be called each time a new profile is launched. | 144 // This should be called each time a new profile is launched. |
109 virtual void LogIsAutofillEnabledAtStartup(bool enabled) const; | 145 virtual void LogIsAutofillEnabledAtStartup(bool enabled) const; |
110 | 146 |
111 // This should be called each time a new profile is launched. | 147 // This should be called each time a new profile is launched. |
112 virtual void LogStoredProfileCount(size_t num_profiles) const; | 148 virtual void LogStoredProfileCount(size_t num_profiles) const; |
113 | 149 |
114 // Log the number of Autofill suggestions presented to the user when filling a | 150 // Log the number of Autofill suggestions presented to the user when filling a |
115 // form. | 151 // form. |
116 virtual void LogAddressSuggestionsCount(size_t num_suggestions) const; | 152 virtual void LogAddressSuggestionsCount(size_t num_suggestions) const; |
117 | 153 |
118 // Logs the experiment id corresponding to a server query response. | 154 // Logs the experiment id corresponding to a server query response. |
119 virtual void LogServerExperimentIdForQuery( | 155 virtual void LogServerExperimentIdForQuery( |
120 const std::string& experiment_id) const; | 156 const std::string& experiment_id) const; |
121 | 157 |
122 // Logs the experiment id corresponding to an upload to the server. | 158 // Logs the experiment id corresponding to an upload to the server. |
123 virtual void LogServerExperimentIdForUpload( | 159 virtual void LogServerExperimentIdForUpload( |
124 const std::string& experiment_id) const; | 160 const std::string& experiment_id) const; |
125 | 161 |
126 private: | 162 private: |
127 DISALLOW_COPY_AND_ASSIGN(AutofillMetrics); | 163 DISALLOW_COPY_AND_ASSIGN(AutofillMetrics); |
128 }; | 164 }; |
129 | 165 |
130 #endif // CHROME_BROWSER_AUTOFILL_AUTOFILL_METRICS_H_ | 166 #endif // CHROME_BROWSER_AUTOFILL_AUTOFILL_METRICS_H_ |
OLD | NEW |