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

Side by Side Diff: components/translate/core/common/translate_metrics.cc

Issue 2825943002: Removed translate MetricsNameIndex. (Closed)
Patch Set: Removed duplicate comment 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 unified diff | Download patch
OLDNEW
1 // Copyright 2014 The Chromium Authors. All rights reserved. 1 // Copyright 2014 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/translate/core/common/translate_metrics.h" 5 #include "components/translate/core/common/translate_metrics.h"
6 6
7 #include <stddef.h> 7 #include <stddef.h>
8 #include <stdint.h> 8 #include <stdint.h>
9 #include <algorithm> 9 #include <algorithm>
10 10
11 #include "base/macros.h" 11 #include "base/macros.h"
12 #include "base/metrics/histogram_macros.h" 12 #include "base/metrics/histogram_macros.h"
13 #include "base/metrics/metrics_hashes.h" 13 #include "base/metrics/metrics_hashes.h"
14 #include "url/url_constants.h" 14 #include "url/url_constants.h"
15 15
16 namespace translate { 16 namespace translate {
17 17
18 namespace { 18 namespace metrics_internal {
19 19
20 // Constant string values to indicate UMA names. All entries should have 20 const char* kRenderer4LanguageDetection = "Renderer4.LanguageDetection";
droger 2017/04/19 08:26:49 const char kRenderer4LanguageDetection[] is the re
martis 2017/04/20 02:57:29 No longer relevant.
21 // a corresponding index in MetricsNameIndex and an entry in |kMetricsEntries|. 21 const char* kTranslateContentLanguage = "Translate.ContentLanguage";
22 const char kRenderer4LanguageDetection[] = "Renderer4.LanguageDetection"; 22 const char* kTranslateHtmlLang = "Translate.HtmlLang";
23 const char kTranslateContentLanguage[] = "Translate.ContentLanguage"; 23 const char* kTranslateLanguageVerification = "Translate.LanguageVerification";
24 const char kTranslateHtmlLang[] = "Translate.HtmlLang"; 24 const char* kTranslateTimeToBeReady = "Translate.TimeToBeReady";
25 const char kTranslateLanguageVerification[] = "Translate.LanguageVerification"; 25 const char* kTranslateTimeToLoad = "Translate.TimeToLoad";
26 const char kTranslateTimeToBeReady[] = "Translate.TimeToBeReady"; 26 const char* kTranslateTimeToTranslate = "Translate.TimeToTranslate";
27 const char kTranslateTimeToLoad[] = "Translate.TimeToLoad"; 27 const char* kTranslateUserActionDuration = "Translate.UserActionDuration";
28 const char kTranslateTimeToTranslate[] = "Translate.TimeToTranslate"; 28 const char* kTranslatePageScheme = "Translate.PageScheme";
29 const char kTranslateUserActionDuration[] = "Translate.UserActionDuration"; 29 const char* kTranslateSimilarLanguageMatch = "Translate.SimilarLanguageMatch";
30 const char kTranslatePageScheme[] = "Translate.PageScheme"; 30 const char* kTranslateLanguageDetectionConflict =
31 const char kTranslateSimilarLanguageMatch[] = "Translate.SimilarLanguageMatch";
32 const char kTranslateLanguageDetectionConflict[] =
33 "Translate.LanguageDetectionConflict"; 31 "Translate.LanguageDetectionConflict";
34 32
35 struct MetricsEntry { 33 } // namespace metrics_internal
36 MetricsNameIndex index;
37 const char* const name;
38 };
39 34
40 // This entry table should be updated when new UMA items are added. 35 namespace {
41 const MetricsEntry kMetricsEntries[] = {
42 {UMA_LANGUAGE_DETECTION, kRenderer4LanguageDetection},
43 {UMA_CONTENT_LANGUAGE, kTranslateContentLanguage},
44 {UMA_HTML_LANG, kTranslateHtmlLang},
45 {UMA_LANGUAGE_VERIFICATION, kTranslateLanguageVerification},
46 {UMA_TIME_TO_BE_READY, kTranslateTimeToBeReady},
47 {UMA_TIME_TO_LOAD, kTranslateTimeToLoad},
48 {UMA_TIME_TO_TRANSLATE, kTranslateTimeToTranslate},
49 {UMA_USER_ACTION_DURATION, kTranslateUserActionDuration},
50 {UMA_PAGE_SCHEME, kTranslatePageScheme},
51 {UMA_SIMILAR_LANGUAGE_MATCH, kTranslateSimilarLanguageMatch},
52 {UMA_LANGUAGE_DETECTION_CONFLICT, kTranslateLanguageDetectionConflict},
53 };
54
55 static_assert(arraysize(kMetricsEntries) == UMA_MAX,
56 "kMetricsEntries should have UMA_MAX elements");
57 36
58 // Page languages for which we track CLD3 language conflicts. 37 // Page languages for which we track CLD3 language conflicts.
59 const char* kLanguageDetectionConflictPageLangs[] = { 38 const char* kLanguageDetectionConflictPageLangs[] = {
60 "en", "en-US", "en-GB", "en-CA", "en-AU", "en-NZ", "en-ZA", "en-IN"}; 39 "en", "en-US", "en-GB", "en-CA", "en-AU", "en-NZ", "en-ZA", "en-IN"};
61 40
62 LanguageCheckType GetLanguageCheckMetric(const std::string& provided_code, 41 LanguageCheckType GetLanguageCheckMetric(const std::string& provided_code,
63 const std::string& revised_code) { 42 const std::string& revised_code) {
64 if (provided_code.empty()) 43 if (provided_code.empty())
65 return LANGUAGE_NOT_PROVIDED; 44 return LANGUAGE_NOT_PROVIDED;
66 else if (provided_code == revised_code) 45 else if (provided_code == revised_code)
67 return LANGUAGE_VALID; 46 return LANGUAGE_VALID;
68 return LANGUAGE_INVALID; 47 return LANGUAGE_INVALID;
69 } 48 }
70 49
71 } // namespace 50 } // namespace
72 51
73 void ReportContentLanguage(const std::string& provided_code, 52 void ReportContentLanguage(const std::string& provided_code,
74 const std::string& revised_code) { 53 const std::string& revised_code) {
75 UMA_HISTOGRAM_ENUMERATION(kTranslateContentLanguage, 54 UMA_HISTOGRAM_ENUMERATION(metrics_internal::kTranslateContentLanguage,
76 GetLanguageCheckMetric(provided_code, revised_code), 55 GetLanguageCheckMetric(provided_code, revised_code),
77 LANGUAGE_MAX); 56 LANGUAGE_MAX);
78 } 57 }
79 58
80 void ReportHtmlLang(const std::string& provided_code, 59 void ReportHtmlLang(const std::string& provided_code,
81 const std::string& revised_code) { 60 const std::string& revised_code) {
82 UMA_HISTOGRAM_ENUMERATION(kTranslateHtmlLang, 61 UMA_HISTOGRAM_ENUMERATION(metrics_internal::kTranslateHtmlLang,
83 GetLanguageCheckMetric(provided_code, revised_code), 62 GetLanguageCheckMetric(provided_code, revised_code),
84 LANGUAGE_MAX); 63 LANGUAGE_MAX);
85 } 64 }
86 65
87 void ReportLanguageVerification(LanguageVerificationType type) { 66 void ReportLanguageVerification(LanguageVerificationType type) {
88 UMA_HISTOGRAM_ENUMERATION(kTranslateLanguageVerification, type, 67 UMA_HISTOGRAM_ENUMERATION(metrics_internal::kTranslateLanguageVerification,
89 LANGUAGE_VERIFICATION_MAX); 68 type, LANGUAGE_VERIFICATION_MAX);
90 } 69 }
91 70
92 void ReportTimeToBeReady(double time_in_msec) { 71 void ReportTimeToBeReady(double time_in_msec) {
93 UMA_HISTOGRAM_MEDIUM_TIMES(kTranslateTimeToBeReady, 72 UMA_HISTOGRAM_MEDIUM_TIMES(metrics_internal::kTranslateTimeToBeReady,
94 base::TimeDelta::FromMicroseconds( 73 base::TimeDelta::FromMicroseconds(
95 static_cast<int64_t>(time_in_msec * 1000.0))); 74 static_cast<int64_t>(time_in_msec * 1000.0)));
96 } 75 }
97 76
98 void ReportTimeToLoad(double time_in_msec) { 77 void ReportTimeToLoad(double time_in_msec) {
99 UMA_HISTOGRAM_MEDIUM_TIMES(kTranslateTimeToLoad, 78 UMA_HISTOGRAM_MEDIUM_TIMES(metrics_internal::kTranslateTimeToLoad,
100 base::TimeDelta::FromMicroseconds( 79 base::TimeDelta::FromMicroseconds(
101 static_cast<int64_t>(time_in_msec * 1000.0))); 80 static_cast<int64_t>(time_in_msec * 1000.0)));
102 } 81 }
103 82
104 void ReportTimeToTranslate(double time_in_msec) { 83 void ReportTimeToTranslate(double time_in_msec) {
105 UMA_HISTOGRAM_MEDIUM_TIMES(kTranslateTimeToTranslate, 84 UMA_HISTOGRAM_MEDIUM_TIMES(metrics_internal::kTranslateTimeToTranslate,
106 base::TimeDelta::FromMicroseconds( 85 base::TimeDelta::FromMicroseconds(
107 static_cast<int64_t>(time_in_msec * 1000.0))); 86 static_cast<int64_t>(time_in_msec * 1000.0)));
108 } 87 }
109 88
110 void ReportUserActionDuration(base::TimeTicks begin, base::TimeTicks end) { 89 void ReportUserActionDuration(base::TimeTicks begin, base::TimeTicks end) {
111 UMA_HISTOGRAM_LONG_TIMES(kTranslateUserActionDuration, end - begin); 90 UMA_HISTOGRAM_LONG_TIMES(metrics_internal::kTranslateUserActionDuration,
91 end - begin);
112 } 92 }
113 93
114 void ReportPageScheme(const std::string& scheme) { 94 void ReportPageScheme(const std::string& scheme) {
115 SchemeType type = SCHEME_OTHERS; 95 SchemeType type = SCHEME_OTHERS;
116 if (scheme == url::kHttpScheme) 96 if (scheme == url::kHttpScheme)
117 type = SCHEME_HTTP; 97 type = SCHEME_HTTP;
118 else if (scheme == url::kHttpsScheme) 98 else if (scheme == url::kHttpsScheme)
119 type = SCHEME_HTTPS; 99 type = SCHEME_HTTPS;
120 UMA_HISTOGRAM_ENUMERATION(kTranslatePageScheme, type, SCHEME_MAX); 100 UMA_HISTOGRAM_ENUMERATION(metrics_internal::kTranslatePageScheme, type,
101 SCHEME_MAX);
121 } 102 }
122 103
123 void ReportLanguageDetectionTime(base::TimeTicks begin, base::TimeTicks end) { 104 void ReportLanguageDetectionTime(base::TimeTicks begin, base::TimeTicks end) {
124 UMA_HISTOGRAM_MEDIUM_TIMES(kRenderer4LanguageDetection, end - begin); 105 UMA_HISTOGRAM_MEDIUM_TIMES(metrics_internal::kRenderer4LanguageDetection,
106 end - begin);
125 } 107 }
126 108
127 void ReportSimilarLanguageMatch(bool match) { 109 void ReportSimilarLanguageMatch(bool match) {
128 UMA_HISTOGRAM_BOOLEAN(kTranslateSimilarLanguageMatch, match); 110 UMA_HISTOGRAM_BOOLEAN(metrics_internal::kTranslateSimilarLanguageMatch,
111 match);
129 } 112 }
130 113
131 void ReportLanguageDetectionConflict(const std::string& page_lang, 114 void ReportLanguageDetectionConflict(const std::string& page_lang,
132 const std::string& cld_lang) { 115 const std::string& cld_lang) {
133 const char* const* const it = 116 const char* const* const it =
134 std::find(std::begin(kLanguageDetectionConflictPageLangs), 117 std::find(std::begin(kLanguageDetectionConflictPageLangs),
135 std::end(kLanguageDetectionConflictPageLangs), page_lang); 118 std::end(kLanguageDetectionConflictPageLangs), page_lang);
136 const std::string page_lang_token = 119 const std::string page_lang_token =
137 it == std::end(kLanguageDetectionConflictPageLangs) ? "other" : *it; 120 it == std::end(kLanguageDetectionConflictPageLangs) ? "other" : *it;
138 121
139 UMA_HISTOGRAM_SPARSE_SLOWLY( 122 UMA_HISTOGRAM_SPARSE_SLOWLY(
140 kTranslateLanguageDetectionConflict, 123 metrics_internal::kTranslateLanguageDetectionConflict,
141 base::HashMetricName(page_lang_token + "," + cld_lang)); 124 base::HashMetricName(page_lang_token + "," + cld_lang));
142 } 125 }
143 126
144 const char* GetMetricsName(MetricsNameIndex index) {
145 for (size_t i = 0; i < arraysize(kMetricsEntries); ++i) {
146 if (kMetricsEntries[i].index == index)
147 return kMetricsEntries[i].name;
148 }
149 NOTREACHED();
150 return NULL;
151 }
152
153 } // namespace translate 127 } // namespace translate
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698