| OLD | NEW |
| 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 "base/basictypes.h" | 7 #include "base/basictypes.h" |
| 8 #include "base/metrics/histogram.h" | 8 #include "base/metrics/histogram.h" |
| 9 #include "url/url_constants.h" |
| 9 | 10 |
| 10 namespace translate { | 11 namespace translate { |
| 11 | 12 |
| 12 namespace { | 13 namespace { |
| 13 | 14 |
| 14 // Constant string values to indicate UMA names. All entries should have | 15 // Constant string values to indicate UMA names. All entries should have |
| 15 // a corresponding index in MetricsNameIndex and an entry in |kMetricsEntries|. | 16 // a corresponding index in MetricsNameIndex and an entry in |kMetricsEntries|. |
| 16 const char kRenderer4LanguageDetection[] = "Renderer4.LanguageDetection"; | 17 const char kRenderer4LanguageDetection[] = "Renderer4.LanguageDetection"; |
| 17 const char kTranslateContentLanguage[] = "Translate.ContentLanguage"; | 18 const char kTranslateContentLanguage[] = "Translate.ContentLanguage"; |
| 18 const char kTranslateHtmlLang[] = "Translate.HtmlLang"; | 19 const char kTranslateHtmlLang[] = "Translate.HtmlLang"; |
| 19 const char kTranslateLanguageVerification[] = "Translate.LanguageVerification"; | 20 const char kTranslateLanguageVerification[] = "Translate.LanguageVerification"; |
| 20 const char kTranslateTimeToBeReady[] = "Translate.TimeToBeReady"; | 21 const char kTranslateTimeToBeReady[] = "Translate.TimeToBeReady"; |
| 21 const char kTranslateTimeToLoad[] = "Translate.TimeToLoad"; | 22 const char kTranslateTimeToLoad[] = "Translate.TimeToLoad"; |
| 22 const char kTranslateTimeToTranslate[] = "Translate.TimeToTranslate"; | 23 const char kTranslateTimeToTranslate[] = "Translate.TimeToTranslate"; |
| 23 const char kTranslateUserActionDuration[] = "Translate.UserActionDuration"; | 24 const char kTranslateUserActionDuration[] = "Translate.UserActionDuration"; |
| 24 const char kTranslatePageScheme[] = "Translate.PageScheme"; | 25 const char kTranslatePageScheme[] = "Translate.PageScheme"; |
| 25 const char kTranslateSimilarLanguageMatch[] = "Translate.SimilarLanguageMatch"; | 26 const char kTranslateSimilarLanguageMatch[] = "Translate.SimilarLanguageMatch"; |
| 26 | 27 |
| 27 const char kSchemeHttp[] = "http"; | |
| 28 const char kSchemeHttps[] = "https"; | |
| 29 | |
| 30 struct MetricsEntry { | 28 struct MetricsEntry { |
| 31 MetricsNameIndex index; | 29 MetricsNameIndex index; |
| 32 const char* const name; | 30 const char* const name; |
| 33 }; | 31 }; |
| 34 | 32 |
| 35 // This entry table should be updated when new UMA items are added. | 33 // This entry table should be updated when new UMA items are added. |
| 36 const MetricsEntry kMetricsEntries[] = { | 34 const MetricsEntry kMetricsEntries[] = { |
| 37 {UMA_LANGUAGE_DETECTION, kRenderer4LanguageDetection}, | 35 {UMA_LANGUAGE_DETECTION, kRenderer4LanguageDetection}, |
| 38 {UMA_CONTENT_LANGUAGE, kTranslateContentLanguage}, | 36 {UMA_CONTENT_LANGUAGE, kTranslateContentLanguage}, |
| 39 {UMA_HTML_LANG, kTranslateHtmlLang}, | 37 {UMA_HTML_LANG, kTranslateHtmlLang}, |
| (...skipping 59 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 99 base::TimeDelta::FromMicroseconds( | 97 base::TimeDelta::FromMicroseconds( |
| 100 static_cast<int64>(time_in_msec * 1000.0))); | 98 static_cast<int64>(time_in_msec * 1000.0))); |
| 101 } | 99 } |
| 102 | 100 |
| 103 void ReportUserActionDuration(base::TimeTicks begin, base::TimeTicks end) { | 101 void ReportUserActionDuration(base::TimeTicks begin, base::TimeTicks end) { |
| 104 UMA_HISTOGRAM_LONG_TIMES(kTranslateUserActionDuration, end - begin); | 102 UMA_HISTOGRAM_LONG_TIMES(kTranslateUserActionDuration, end - begin); |
| 105 } | 103 } |
| 106 | 104 |
| 107 void ReportPageScheme(const std::string& scheme) { | 105 void ReportPageScheme(const std::string& scheme) { |
| 108 SchemeType type = SCHEME_OTHERS; | 106 SchemeType type = SCHEME_OTHERS; |
| 109 if (scheme == kSchemeHttp) | 107 if (scheme == url::kHttpScheme) |
| 110 type = SCHEME_HTTP; | 108 type = SCHEME_HTTP; |
| 111 else if (scheme == kSchemeHttps) | 109 else if (scheme == url::kHttpsScheme) |
| 112 type = SCHEME_HTTPS; | 110 type = SCHEME_HTTPS; |
| 113 UMA_HISTOGRAM_ENUMERATION(kTranslatePageScheme, type, SCHEME_MAX); | 111 UMA_HISTOGRAM_ENUMERATION(kTranslatePageScheme, type, SCHEME_MAX); |
| 114 } | 112 } |
| 115 | 113 |
| 116 void ReportLanguageDetectionTime(base::TimeTicks begin, base::TimeTicks end) { | 114 void ReportLanguageDetectionTime(base::TimeTicks begin, base::TimeTicks end) { |
| 117 UMA_HISTOGRAM_MEDIUM_TIMES(kRenderer4LanguageDetection, end - begin); | 115 UMA_HISTOGRAM_MEDIUM_TIMES(kRenderer4LanguageDetection, end - begin); |
| 118 } | 116 } |
| 119 | 117 |
| 120 void ReportSimilarLanguageMatch(bool match) { | 118 void ReportSimilarLanguageMatch(bool match) { |
| 121 UMA_HISTOGRAM_BOOLEAN(kTranslateSimilarLanguageMatch, match); | 119 UMA_HISTOGRAM_BOOLEAN(kTranslateSimilarLanguageMatch, match); |
| 122 } | 120 } |
| 123 | 121 |
| 124 const char* GetMetricsName(MetricsNameIndex index) { | 122 const char* GetMetricsName(MetricsNameIndex index) { |
| 125 for (size_t i = 0; i < arraysize(kMetricsEntries); ++i) { | 123 for (size_t i = 0; i < arraysize(kMetricsEntries); ++i) { |
| 126 if (kMetricsEntries[i].index == index) | 124 if (kMetricsEntries[i].index == index) |
| 127 return kMetricsEntries[i].name; | 125 return kMetricsEntries[i].name; |
| 128 } | 126 } |
| 129 NOTREACHED(); | 127 NOTREACHED(); |
| 130 return NULL; | 128 return NULL; |
| 131 } | 129 } |
| 132 | 130 |
| 133 } // namespace translate | 131 } // namespace translate |
| OLD | NEW |