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/browser/translate_manager.h" | 5 #include "components/translate/core/browser/translate_manager.h" |
6 | 6 |
7 #include <map> | 7 #include <map> |
8 | 8 |
9 #include "base/bind.h" | 9 #include "base/bind.h" |
10 #include "base/command_line.h" | 10 #include "base/command_line.h" |
(...skipping 113 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
124 std::unique_ptr<TranslateManager::TranslateErrorCallbackList::Subscription> | 124 std::unique_ptr<TranslateManager::TranslateErrorCallbackList::Subscription> |
125 TranslateManager::RegisterTranslateErrorCallback( | 125 TranslateManager::RegisterTranslateErrorCallback( |
126 const TranslateManager::TranslateErrorCallback& callback) { | 126 const TranslateManager::TranslateErrorCallback& callback) { |
127 if (!g_callback_list_) | 127 if (!g_callback_list_) |
128 g_callback_list_ = new TranslateErrorCallbackList; | 128 g_callback_list_ = new TranslateErrorCallbackList; |
129 return g_callback_list_->Add(callback); | 129 return g_callback_list_->Add(callback); |
130 } | 130 } |
131 | 131 |
132 TranslateManager::TranslateManager( | 132 TranslateManager::TranslateManager( |
133 TranslateClient* translate_client, | 133 TranslateClient* translate_client, |
134 TranslateRanker* translate_ranker, | |
134 const std::string& accept_languages_pref_name) | 135 const std::string& accept_languages_pref_name) |
135 : page_seq_no_(0), | 136 : page_seq_no_(0), |
136 accept_languages_pref_name_(accept_languages_pref_name), | 137 accept_languages_pref_name_(accept_languages_pref_name), |
137 translate_client_(translate_client), | 138 translate_client_(translate_client), |
138 translate_driver_(translate_client_->GetTranslateDriver()), | 139 translate_driver_(translate_client_->GetTranslateDriver()), |
140 translate_ranker_(translate_ranker), | |
139 language_state_(translate_driver_), | 141 language_state_(translate_driver_), |
140 translate_event_(base::MakeUnique<metrics::TranslateEventProto>()), | 142 translate_event_(base::MakeUnique<metrics::TranslateEventProto>()), |
141 weak_method_factory_(this) { | 143 weak_method_factory_(this) {} |
142 if (TranslateRanker::IsEnabled()) | |
143 TranslateRanker::GetInstance()->FetchModelData(); // Asynchronous. | |
144 } | |
145 | 144 |
146 base::WeakPtr<TranslateManager> TranslateManager::GetWeakPtr() { | 145 base::WeakPtr<TranslateManager> TranslateManager::GetWeakPtr() { |
147 return weak_method_factory_.GetWeakPtr(); | 146 return weak_method_factory_.GetWeakPtr(); |
148 } | 147 } |
149 | 148 |
150 void TranslateManager::InitiateTranslation(const std::string& page_lang) { | 149 void TranslateManager::InitiateTranslation(const std::string& page_lang) { |
151 // TODO(rogerm): Remove ScopedTracker below once crbug.com/646711 is closed. | 150 // TODO(rogerm): Remove ScopedTracker below once crbug.com/646711 is closed. |
152 tracked_objects::ScopedTracker tracking_profile( | 151 tracked_objects::ScopedTracker tracking_profile( |
153 FROM_HERE_WITH_EXPLICIT_FUNCTION( | 152 FROM_HERE_WITH_EXPLICIT_FUNCTION( |
154 "646711 translate::TranslateManager::InitiateTranslation")); | 153 "646711 translate::TranslateManager::InitiateTranslation")); |
(...skipping 70 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
225 | 224 |
226 // Don't translate similar languages (ex: en-US to en). | 225 // Don't translate similar languages (ex: en-US to en). |
227 // Also do not offer to translate between Simplified and Traditional Chinese. | 226 // Also do not offer to translate between Simplified and Traditional Chinese. |
228 if (language_code == target_lang || | 227 if (language_code == target_lang || |
229 (language_code == "zh-CN" && target_lang == "zh-TW") || | 228 (language_code == "zh-CN" && target_lang == "zh-TW") || |
230 (language_code == "zh-TW" && target_lang == "zh-CN")) { | 229 (language_code == "zh-TW" && target_lang == "zh-CN")) { |
231 TranslateBrowserMetrics::ReportInitiationStatus( | 230 TranslateBrowserMetrics::ReportInitiationStatus( |
232 TranslateBrowserMetrics::INITIATION_STATUS_SIMILAR_LANGUAGES); | 231 TranslateBrowserMetrics::INITIATION_STATUS_SIMILAR_LANGUAGES); |
233 return; | 232 return; |
234 } | 233 } |
234 | |
235 bool ranker_should_offer_translation = true; | |
236 if (translate_ranker_->IsQueryEnabled() || | |
237 translate_ranker_->IsLoggingEnabled() || | |
groby-ooo-7-16
2017/02/23 00:01:35
Should IsLoggingEnabled check QueryEnabled/Enforce
Roger McFarlane (Chromium)
2017/02/23 21:17:56
Logging has actually been enabled by default.
htt
| |
238 translate_ranker_->IsEnforcementEnabled()) { | |
239 ranker_should_offer_translation = translate_ranker_->ShouldOfferTranslation( | |
240 *translate_prefs, language_code, target_lang); | |
241 translate_event_->set_ranker_request_timestamp_sec( | |
242 (base::TimeTicks::Now() - base::TimeTicks()).InSeconds()); | |
243 translate_event_->set_ranker_version(translate_ranker_->GetModelVersion()); | |
244 translate_event_->set_ranker_response( | |
245 ranker_should_offer_translation | |
246 ? metrics::TranslateEventProto::SHOW | |
247 : metrics::TranslateEventProto::DONT_SHOW); | |
248 } | |
249 | |
235 // Nothing to do if either the language Chrome is in or the language of the | 250 // Nothing to do if either the language Chrome is in or the language of the |
236 // page is not supported by the translation server. | 251 // page is not supported by the translation server. |
237 if (target_lang.empty() || | 252 if (target_lang.empty() || |
238 !TranslateDownloadManager::IsSupportedLanguage(language_code)) { | 253 !TranslateDownloadManager::IsSupportedLanguage(language_code)) { |
239 TranslateBrowserMetrics::ReportInitiationStatus( | 254 TranslateBrowserMetrics::ReportInitiationStatus( |
240 TranslateBrowserMetrics::INITIATION_STATUS_LANGUAGE_IS_NOT_SUPPORTED); | 255 TranslateBrowserMetrics::INITIATION_STATUS_LANGUAGE_IS_NOT_SUPPORTED); |
241 TranslateBrowserMetrics::ReportUnsupportedLanguageAtInitiation( | 256 TranslateBrowserMetrics::ReportUnsupportedLanguageAtInitiation( |
242 language_code); | 257 language_code); |
243 RecordTranslateEvent(metrics::TranslateEventProto::UNSUPPORTED_LANGUAGE); | 258 RecordTranslateEvent(metrics::TranslateEventProto::UNSUPPORTED_LANGUAGE); |
244 return; | 259 return; |
(...skipping 50 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
295 return; | 310 return; |
296 } | 311 } |
297 | 312 |
298 if (LanguageInULP(language_code)) { | 313 if (LanguageInULP(language_code)) { |
299 TranslateBrowserMetrics::ReportInitiationStatus( | 314 TranslateBrowserMetrics::ReportInitiationStatus( |
300 TranslateBrowserMetrics::INITIATION_STATUS_LANGUAGE_IN_ULP); | 315 TranslateBrowserMetrics::INITIATION_STATUS_LANGUAGE_IN_ULP); |
301 RecordTranslateEvent(metrics::TranslateEventProto::DISABLED_BY_PREF); | 316 RecordTranslateEvent(metrics::TranslateEventProto::DISABLED_BY_PREF); |
302 return; | 317 return; |
303 } | 318 } |
304 | 319 |
305 if (TranslateRanker::IsEnabled()) { | 320 if (!ranker_should_offer_translation && |
306 TranslateRanker* translate_ranker = TranslateRanker::GetInstance(); | 321 translate_ranker_->IsEnforcementEnabled()) { |
307 bool should_offer_translation = translate_ranker->ShouldOfferTranslation( | 322 TranslateBrowserMetrics::ReportInitiationStatus( |
308 *translate_prefs, language_code, target_lang); | 323 TranslateBrowserMetrics::INITIATION_STATUS_ABORTED_BY_RANKER); |
309 translate_event_->set_ranker_request_timestamp_sec( | 324 RecordTranslateEvent(metrics::TranslateEventProto::DISABLED_BY_RANKER); |
310 (base::TimeTicks::Now() - base::TimeTicks()).InSeconds()); | 325 return; |
311 translate_event_->set_ranker_version(translate_ranker->GetModelVersion()); | |
312 translate_event_->set_ranker_response( | |
313 should_offer_translation ? metrics::TranslateEventProto::SHOW | |
314 : metrics::TranslateEventProto::DONT_SHOW); | |
315 if (!should_offer_translation && TranslateRanker::IsEnforcementEnabled()) { | |
316 TranslateBrowserMetrics::ReportInitiationStatus( | |
317 TranslateBrowserMetrics::INITIATION_STATUS_ABORTED_BY_RANKER); | |
318 RecordTranslateEvent(metrics::TranslateEventProto::DISABLED_BY_RANKER); | |
319 return; | |
320 } | |
321 } | 326 } |
322 | 327 |
323 TranslateBrowserMetrics::ReportInitiationStatus( | 328 TranslateBrowserMetrics::ReportInitiationStatus( |
324 TranslateBrowserMetrics::INITIATION_STATUS_SHOW_INFOBAR); | 329 TranslateBrowserMetrics::INITIATION_STATUS_SHOW_INFOBAR); |
325 | 330 |
326 // Prompts the user if they want the page translated. | 331 // Prompts the user if they want the page translated. |
327 translate_client_->ShowTranslateUI(translate::TRANSLATE_STEP_BEFORE_TRANSLATE, | 332 translate_client_->ShowTranslateUI(translate::TRANSLATE_STEP_BEFORE_TRANSLATE, |
328 language_code, | 333 language_code, |
329 target_lang, | 334 target_lang, |
330 TranslateErrors::NONE, | 335 TranslateErrors::NONE, |
(...skipping 266 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
597 translate_event_->set_event_type(metrics::TranslateEventProto::UNKNOWN); | 602 translate_event_->set_event_type(metrics::TranslateEventProto::UNKNOWN); |
598 // TODO(rogerm): Populate the language list. | 603 // TODO(rogerm): Populate the language list. |
599 } | 604 } |
600 | 605 |
601 void TranslateManager::RecordTranslateEvent(int event_type) { | 606 void TranslateManager::RecordTranslateEvent(int event_type) { |
602 DCHECK(metrics::TranslateEventProto::EventType_IsValid(event_type)); | 607 DCHECK(metrics::TranslateEventProto::EventType_IsValid(event_type)); |
603 translate_event_->set_event_type( | 608 translate_event_->set_event_type( |
604 static_cast<metrics::TranslateEventProto::EventType>(event_type)); | 609 static_cast<metrics::TranslateEventProto::EventType>(event_type)); |
605 translate_event_->set_event_timestamp_sec( | 610 translate_event_->set_event_timestamp_sec( |
606 (base::TimeTicks::Now() - base::TimeTicks()).InSeconds()); | 611 (base::TimeTicks::Now() - base::TimeTicks()).InSeconds()); |
607 TranslateRanker::GetInstance()->RecordTranslateEvent(*translate_event_); | 612 translate_ranker_->AddTranslateEvent(*translate_event_); |
608 } | 613 } |
609 | 614 |
610 } // namespace translate | 615 } // namespace translate |
OLD | NEW |