Home | History | Annotate | Download | only in translate
      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 CHROME_COMMON_TRANSLATE_TRANSLATE_COMMON_METRICS_H_
      6 #define CHROME_COMMON_TRANSLATE_TRANSLATE_COMMON_METRICS_H_
      7 
      8 #include <string>
      9 
     10 #include "base/time/time.h"
     11 
     12 namespace TranslateCommonMetrics {
     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.
     16 enum 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.
     32 enum 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.
     41 enum 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.
     53 enum 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.
     64 void 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.
     71 void ReportHtmlLang(const std::string& provided_code,
     72                     const std::string& revised_code);
     73 
     74 // Called when CLD verifies Content-Language header.
     75 void ReportLanguageVerification(LanguageVerificationType type);
     76 
     77 // Called when the Translate Element library is ready.
     78 void ReportTimeToBeReady(double time_in_msec);
     79 
     80 // Called when the Translate Element library is loaded.
     81 void ReportTimeToLoad(double time_in_msec);
     82 
     83 // Called when a page translation is finished.
     84 void ReportTimeToTranslate(double time_in_msec);
     85 
     86 // Called when a translation is triggered.
     87 void ReportUserActionDuration(base::TimeTicks begin, base::TimeTicks end);
     88 
     89 // Called when a translation is triggered.
     90 void ReportPageScheme(const std::string& scheme);
     91 
     92 // Called when CLD detects page language.
     93 void 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.
     97 void ReportSimilarLanguageMatch(bool match);
     98 
     99 // Gets UMA name for an entry specified by |index|.
    100 const char* GetMetricsName(MetricsNameIndex index);
    101 
    102 }  // namespace TranslateCommonMetrics
    103 
    104 #endif  // CHROME_COMMON_TRANSLATE_TRANSLATE_COMMON_METRICS_H_
    105