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 3// found in the LICENSE file. 4 5#ifndef COMPONENTS_TRANSLATE_COMMON_TRANSLATE_METRICS_H_ 6#define COMPONENTS_TRANSLATE_COMMON_TRANSLATE_METRICS_H_ 7 8#include <string> 9 10#include "base/time/time.h" 11 12namespace translate { 13 14// An indexing type to query each UMA entry name via GetMetricsName() function. 15// Note: |kMetricsEntries| should be updated when a new entry is added here. 16enum MetricsNameIndex { 17 UMA_LANGUAGE_DETECTION, 18 UMA_CONTENT_LANGUAGE, 19 UMA_HTML_LANG, 20 UMA_LANGUAGE_VERIFICATION, 21 UMA_TIME_TO_BE_READY, 22 UMA_TIME_TO_LOAD, 23 UMA_TIME_TO_TRANSLATE, 24 UMA_USER_ACTION_DURATION, 25 UMA_PAGE_SCHEME, 26 UMA_SIMILAR_LANGUAGE_MATCH, 27 UMA_MAX, 28}; 29 30// A page may provide a Content-Language HTTP header or a META tag. 31// TranslateHelper checks if a server provides a valid Content-Language. 32enum LanguageCheckType { 33 LANGUAGE_NOT_PROVIDED, 34 LANGUAGE_VALID, 35 LANGUAGE_INVALID, 36 LANGUAGE_MAX, 37}; 38 39// When a valid Content-Language is provided, TranslateHelper checks if a 40// server provided Content-Language matches to a language CLD determined. 41enum LanguageVerificationType { 42 LANGUAGE_VERIFICATION_CLD_DISABLED, // obsolete 43 LANGUAGE_VERIFICATION_CLD_ONLY, 44 LANGUAGE_VERIFICATION_UNKNOWN, 45 LANGUAGE_VERIFICATION_CLD_AGREE, 46 LANGUAGE_VERIFICATION_CLD_DISAGREE, 47 LANGUAGE_VERIFICATION_TRUST_CLD, 48 LANGUAGE_VERIFICATION_CLD_COMPLEMENT_SUB_CODE, 49 LANGUAGE_VERIFICATION_MAX, 50}; 51 52// Scheme type of pages Chrome is going to translate. 53enum SchemeType { 54 SCHEME_HTTP, 55 SCHEME_HTTPS, 56 SCHEME_OTHERS, 57 SCHEME_MAX, 58}; 59 60// Called after TranslateHelper verifies a server providing Content-Language 61// header. |provided_code| contains a Content-Language header value which a 62// server provides. It can be empty string when a server doesn't provide it. 63// |revised_code| is a value modified by format error corrector. 64void ReportContentLanguage(const std::string& provided_code, 65 const std::string& revised_code); 66 67// Called after TranslateHelper verifies a page providing html lang attribute. 68// |provided_code| contains a html lang attribute which a page provides. It can 69// be empty string when a page doesn't provide it. |revised_code| is a value 70// modified by format error corrector. 71void ReportHtmlLang(const std::string& provided_code, 72 const std::string& revised_code); 73 74// Called when CLD verifies Content-Language header. 75void ReportLanguageVerification(LanguageVerificationType type); 76 77// Called when the Translate Element library is ready. 78void ReportTimeToBeReady(double time_in_msec); 79 80// Called when the Translate Element library is loaded. 81void ReportTimeToLoad(double time_in_msec); 82 83// Called when a page translation is finished. 84void ReportTimeToTranslate(double time_in_msec); 85 86// Called when a translation is triggered. 87void ReportUserActionDuration(base::TimeTicks begin, base::TimeTicks end); 88 89// Called when a translation is triggered. 90void ReportPageScheme(const std::string& scheme); 91 92// Called when CLD detects page language. 93void ReportLanguageDetectionTime(base::TimeTicks begin, base::TimeTicks end); 94 95// Called when CLD agreed on a language which is different, but in the similar 96// language list. 97void ReportSimilarLanguageMatch(bool match); 98 99// Gets UMA name for an entry specified by |index|. 100const char* GetMetricsName(MetricsNameIndex index); 101 102} // namespace translate 103 104#endif // COMPONENTS_TRANSLATE_COMMON_TRANSLATE_METRICS_H_ 105