| Index: components/translate/core/browser/translate_manager.cc
|
| diff --git a/components/translate/core/browser/translate_manager.cc b/components/translate/core/browser/translate_manager.cc
|
| index 17216867182c55de753171a1c1231dd765bbb587..cccc9dc629ad2750f58873c9fa694b2ee2e12cc3 100644
|
| --- a/components/translate/core/browser/translate_manager.cc
|
| +++ b/components/translate/core/browser/translate_manager.cc
|
| @@ -218,6 +218,8 @@ void TranslateManager::InitiateTranslation(const std::string& page_lang) {
|
| std::string language_code =
|
| TranslateDownloadManager::GetLanguageCode(page_lang);
|
|
|
| + InitTranslateEvent(language_code, target_lang, *translate_prefs);
|
| +
|
| // Don't translate similar languages (ex: en-US to en).
|
| if (language_code == target_lang) {
|
| TranslateBrowserMetrics::ReportInitiationStatus(
|
| @@ -233,6 +235,7 @@ void TranslateManager::InitiateTranslation(const std::string& page_lang) {
|
| TranslateBrowserMetrics::INITIATION_STATUS_LANGUAGE_IS_NOT_SUPPORTED);
|
| TranslateBrowserMetrics::ReportUnsupportedLanguageAtInitiation(
|
| language_code);
|
| + RecordTranslateEvent(metrics::TranslateEventProto::UNSUPPORTED_LANGUAGE);
|
| return;
|
| }
|
|
|
| @@ -243,6 +246,8 @@ void TranslateManager::InitiateTranslation(const std::string& page_lang) {
|
| language_code)) {
|
| TranslateBrowserMetrics::ReportInitiationStatus(
|
| TranslateBrowserMetrics::INITIATION_STATUS_DISABLED_BY_CONFIG);
|
| + RecordTranslateEvent(
|
| + metrics::TranslateEventProto::LANGUAGE_DISABLED_BY_USER_CONFIG);
|
| return;
|
| }
|
|
|
| @@ -250,6 +255,8 @@ void TranslateManager::InitiateTranslation(const std::string& page_lang) {
|
| if (translate_prefs->IsSiteBlacklisted(page_url.HostNoBrackets())) {
|
| TranslateBrowserMetrics::ReportInitiationStatus(
|
| TranslateBrowserMetrics::INITIATION_STATUS_DISABLED_BY_CONFIG);
|
| + RecordTranslateEvent(
|
| + metrics::TranslateEventProto::URL_DISABLED_BY_USER_CONFIG);
|
| return;
|
| }
|
|
|
| @@ -263,6 +270,9 @@ void TranslateManager::InitiateTranslation(const std::string& page_lang) {
|
| if (!auto_target_lang.empty()) {
|
| TranslateBrowserMetrics::ReportInitiationStatus(
|
| TranslateBrowserMetrics::INITIATION_STATUS_AUTO_BY_CONFIG);
|
| + translate_event_.set_modified_target_language(auto_target_lang);
|
| + RecordTranslateEvent(
|
| + metrics::TranslateEventProto::AUTOMATICALLY_TRANSLATED);
|
| TranslatePage(language_code, auto_target_lang, false);
|
| return;
|
| }
|
| @@ -273,6 +283,9 @@ void TranslateManager::InitiateTranslation(const std::string& page_lang) {
|
| // This page was navigated through a click from a translated page.
|
| TranslateBrowserMetrics::ReportInitiationStatus(
|
| TranslateBrowserMetrics::INITIATION_STATUS_AUTO_BY_LINK);
|
| + translate_event_.set_modified_target_language(auto_translate_to);
|
| + RecordTranslateEvent(
|
| + metrics::TranslateEventProto::AUTOMATICALLY_TRANSLATED);
|
| TranslatePage(language_code, auto_translate_to, false);
|
| return;
|
| }
|
| @@ -280,15 +293,24 @@ void TranslateManager::InitiateTranslation(const std::string& page_lang) {
|
| if (LanguageInULP(language_code)) {
|
| TranslateBrowserMetrics::ReportInitiationStatus(
|
| TranslateBrowserMetrics::INITIATION_STATUS_LANGUAGE_IN_ULP);
|
| + RecordTranslateEvent(metrics::TranslateEventProto::DISABLED_BY_PREF);
|
| return;
|
| }
|
|
|
| if (TranslateRanker::IsEnabled()) {
|
| - if (!TranslateRanker::GetInstance()->ShouldOfferTranslation(
|
| - *translate_client_->GetTranslatePrefs(), language_code,
|
| - target_lang)) {
|
| + TranslateRanker* translate_ranker = TranslateRanker::GetInstance();
|
| + bool should_offer_translation = translate_ranker->ShouldOfferTranslation(
|
| + *translate_prefs, language_code, target_lang);
|
| + translate_event_.set_ranker_request_timestamp_sec(
|
| + (base::TimeTicks::Now() - base::TimeTicks()).InSeconds());
|
| + translate_event_.set_ranker_version(translate_ranker->GetModelVersion());
|
| + translate_event_.set_ranker_response(
|
| + should_offer_translation ? metrics::TranslateEventProto::SHOW
|
| + : metrics::TranslateEventProto::DONT_SHOW);
|
| + if (!should_offer_translation && TranslateRanker::IsEnforcementEnabled()) {
|
| TranslateBrowserMetrics::ReportInitiationStatus(
|
| TranslateBrowserMetrics::INITIATION_STATUS_ABORTED_BY_RANKER);
|
| + RecordTranslateEvent(metrics::TranslateEventProto::DISABLED_BY_RANKER);
|
| return;
|
| }
|
| }
|
| @@ -341,6 +363,15 @@ void TranslateManager::TranslatePage(const std::string& original_source_lang,
|
| if (!TranslateDownloadManager::IsSupportedLanguage(source_lang))
|
| source_lang = std::string(translate::kUnknownLanguageCode);
|
|
|
| + // Capture the translate event if we were triggered from the menu.
|
| + if (triggered_from_menu) {
|
| + InitTranslateEvent(source_lang, target_lang,
|
| + *translate_client_->GetTranslatePrefs());
|
| + RecordTranslateEvent(
|
| + metrics::TranslateEventProto::USER_CONTEXT_MENU_TRANSLATE);
|
| + }
|
| +
|
| + // Trigger the "translating now" UI.
|
| translate_client_->ShowTranslateUI(translate::TRANSLATE_STEP_TRANSLATING,
|
| source_lang,
|
| target_lang,
|
| @@ -366,6 +397,10 @@ void TranslateManager::TranslatePage(const std::string& original_source_lang,
|
| }
|
|
|
| void TranslateManager::RevertTranslation() {
|
| + // Capture the revert event in the translate metrics
|
| + RecordTranslateEvent(metrics::TranslateEventProto::USER_REVERT);
|
| +
|
| + // Revert the translation.
|
| translate_driver_->RevertTranslation(page_seq_no_);
|
| language_state_.SetCurrentLanguage(language_state_.original_language());
|
| }
|
| @@ -541,4 +576,28 @@ void TranslateManager::SetIgnoreMissingKeyForTesting(bool ignore) {
|
| ignore_missing_key_for_testing_ = ignore;
|
| }
|
|
|
| +void TranslateManager::InitTranslateEvent(const std::string& src_lang,
|
| + const std::string& dst_lang,
|
| + const TranslatePrefs& prefs) {
|
| + translate_event_.Clear();
|
| + translate_event_.set_source_language(src_lang);
|
| + translate_event_.set_target_language(dst_lang);
|
| + translate_event_.set_accept_count(
|
| + prefs.GetTranslationAcceptedCount(src_lang));
|
| + translate_event_.set_decline_count(prefs.GetTranslationDeniedCount(src_lang));
|
| + translate_event_.set_ignore_count(prefs.GetTranslationIgnoredCount(src_lang));
|
| + translate_event_.set_ranker_response(
|
| + metrics::TranslateEventProto::NOT_QUERIED);
|
| + translate_event_.set_event_type(metrics::TranslateEventProto::UNKNOWN);
|
| + // TODO(rogerm): Populate the language list.
|
| +}
|
| +
|
| +void TranslateManager::RecordTranslateEvent(
|
| + metrics::TranslateEventProto::EventType event_type) {
|
| + translate_event_.set_event_type(event_type);
|
| + translate_event_.set_event_timestamp_sec(
|
| + (base::TimeTicks::Now() - base::TimeTicks()).InSeconds());
|
| + TranslateRanker::GetInstance()->RecordTranslateEvent(translate_event_);
|
| +}
|
| +
|
| } // namespace translate
|
|
|