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

Unified Diff: components/translate/core/browser/translate_manager.cc

Issue 2400503002: [Translate] Integrate TranslateEventProto UMA logging into TranslateManager. (Closed)
Patch Set: fix trybots Created 4 years, 1 month 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 side-by-side diff with in-line comments
Download patch
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..33d3c514a5d011646e21b4c5aedfbff7679a21f6 100644
--- a/components/translate/core/browser/translate_manager.cc
+++ b/components/translate/core/browser/translate_manager.cc
@@ -8,6 +8,7 @@
#include "base/bind.h"
#include "base/command_line.h"
+#include "base/memory/ptr_util.h"
#include "base/metrics/field_trial.h"
#include "base/metrics/histogram.h"
#include "base/profiler/scoped_tracker.h"
@@ -15,6 +16,7 @@
#include "base/strings/string_split.h"
#include "base/strings/stringprintf.h"
#include "base/time/time.h"
+#include "components/metrics/proto/translate_event.pb.h"
#include "components/prefs/pref_service.h"
#include "components/translate/core/browser/language_state.h"
#include "components/translate/core/browser/page_translated_details.h"
@@ -135,6 +137,7 @@ TranslateManager::TranslateManager(
translate_client_(translate_client),
translate_driver_(translate_client_->GetTranslateDriver()),
language_state_(translate_driver_),
+ translate_event_(base::MakeUnique<metrics::TranslateEventProto>()),
weak_method_factory_(this) {
if (TranslateRanker::IsEnabled())
TranslateRanker::GetInstance()->FetchModelData(); // Asynchronous.
@@ -218,6 +221,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 +238,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 +249,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 +258,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 +273,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 +286,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 +296,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 +366,13 @@ 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) {
+ 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 +398,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 +577,31 @@ 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(int event_type) {
+ DCHECK(metrics::TranslateEventProto::EventType_IsValid(event_type));
+ translate_event_->set_event_type(
+ static_cast<metrics::TranslateEventProto::EventType>(event_type));
+ translate_event_->set_event_timestamp_sec(
+ (base::TimeTicks::Now() - base::TimeTicks()).InSeconds());
+ TranslateRanker::GetInstance()->RecordTranslateEvent(*translate_event_);
+}
+
} // namespace translate
« no previous file with comments | « components/translate/core/browser/translate_manager.h ('k') | components/translate/core/browser/translate_ranker.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698