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

Side by Side Diff: components/translate/core/browser/translate_manager.cc

Issue 2565873002: [translate] Add translate ranker model loader. (Closed)
Patch Set: comments from hamelphi Created 3 years, 11 months 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 unified diff | Download patch
OLDNEW
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
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 68 matching lines...) Expand 10 before | Expand all | Expand 10 after
223 222
224 InitTranslateEvent(language_code, target_lang, *translate_prefs); 223 InitTranslateEvent(language_code, target_lang, *translate_prefs);
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 if (language_code == target_lang) { 226 if (language_code == target_lang) {
228 TranslateBrowserMetrics::ReportInitiationStatus( 227 TranslateBrowserMetrics::ReportInitiationStatus(
229 TranslateBrowserMetrics::INITIATION_STATUS_SIMILAR_LANGUAGES); 228 TranslateBrowserMetrics::INITIATION_STATUS_SIMILAR_LANGUAGES);
230 return; 229 return;
231 } 230 }
232 231
232 bool ranker_should_offer_translation = true;
groby-ooo-7-16 2017/01/23 21:41:57 Shouldn't this be initialized to false? If it does
Roger McFarlane (Chromium) 2017/02/08 23:08:11 In it's current incarnation, the ranker is as gate
233 if (translate_ranker_->IsEnabled()) {
234 ranker_should_offer_translation = translate_ranker_->ShouldOfferTranslation(
235 *translate_prefs, language_code, target_lang);
236 translate_event_->set_ranker_request_timestamp_sec(
237 (base::TimeTicks::Now() - base::TimeTicks()).InSeconds());
238 translate_event_->set_ranker_version(translate_ranker_->GetModelVersion());
239 translate_event_->set_ranker_response(
240 ranker_should_offer_translation
241 ? metrics::TranslateEventProto::SHOW
242 : metrics::TranslateEventProto::DONT_SHOW);
243 }
244
233 // Nothing to do if either the language Chrome is in or the language of the 245 // Nothing to do if either the language Chrome is in or the language of the
234 // page is not supported by the translation server. 246 // page is not supported by the translation server.
235 if (target_lang.empty() || 247 if (target_lang.empty() ||
236 !TranslateDownloadManager::IsSupportedLanguage(language_code)) { 248 !TranslateDownloadManager::IsSupportedLanguage(language_code)) {
237 TranslateBrowserMetrics::ReportInitiationStatus( 249 TranslateBrowserMetrics::ReportInitiationStatus(
238 TranslateBrowserMetrics::INITIATION_STATUS_LANGUAGE_IS_NOT_SUPPORTED); 250 TranslateBrowserMetrics::INITIATION_STATUS_LANGUAGE_IS_NOT_SUPPORTED);
239 TranslateBrowserMetrics::ReportUnsupportedLanguageAtInitiation( 251 TranslateBrowserMetrics::ReportUnsupportedLanguageAtInitiation(
240 language_code); 252 language_code);
241 RecordTranslateEvent(metrics::TranslateEventProto::UNSUPPORTED_LANGUAGE); 253 RecordTranslateEvent(metrics::TranslateEventProto::UNSUPPORTED_LANGUAGE);
242 return; 254 return;
(...skipping 50 matching lines...) Expand 10 before | Expand all | Expand 10 after
293 return; 305 return;
294 } 306 }
295 307
296 if (LanguageInULP(language_code)) { 308 if (LanguageInULP(language_code)) {
297 TranslateBrowserMetrics::ReportInitiationStatus( 309 TranslateBrowserMetrics::ReportInitiationStatus(
298 TranslateBrowserMetrics::INITIATION_STATUS_LANGUAGE_IN_ULP); 310 TranslateBrowserMetrics::INITIATION_STATUS_LANGUAGE_IN_ULP);
299 RecordTranslateEvent(metrics::TranslateEventProto::DISABLED_BY_PREF); 311 RecordTranslateEvent(metrics::TranslateEventProto::DISABLED_BY_PREF);
300 return; 312 return;
301 } 313 }
302 314
303 if (TranslateRanker::IsEnabled()) { 315 if (!ranker_should_offer_translation &&
304 TranslateRanker* translate_ranker = TranslateRanker::GetInstance(); 316 translate_ranker_->IsEnforcementEnabled()) {
305 bool should_offer_translation = translate_ranker->ShouldOfferTranslation( 317 TranslateBrowserMetrics::ReportInitiationStatus(
306 *translate_prefs, language_code, target_lang); 318 TranslateBrowserMetrics::INITIATION_STATUS_ABORTED_BY_RANKER);
307 translate_event_->set_ranker_request_timestamp_sec( 319 RecordTranslateEvent(metrics::TranslateEventProto::DISABLED_BY_RANKER);
308 (base::TimeTicks::Now() - base::TimeTicks()).InSeconds()); 320 return;
309 translate_event_->set_ranker_version(translate_ranker->GetModelVersion());
310 translate_event_->set_ranker_response(
311 should_offer_translation ? metrics::TranslateEventProto::SHOW
312 : metrics::TranslateEventProto::DONT_SHOW);
313 if (!should_offer_translation && TranslateRanker::IsEnforcementEnabled()) {
314 TranslateBrowserMetrics::ReportInitiationStatus(
315 TranslateBrowserMetrics::INITIATION_STATUS_ABORTED_BY_RANKER);
316 RecordTranslateEvent(metrics::TranslateEventProto::DISABLED_BY_RANKER);
317 return;
318 }
319 } 321 }
320 322
321 TranslateBrowserMetrics::ReportInitiationStatus( 323 TranslateBrowserMetrics::ReportInitiationStatus(
322 TranslateBrowserMetrics::INITIATION_STATUS_SHOW_INFOBAR); 324 TranslateBrowserMetrics::INITIATION_STATUS_SHOW_INFOBAR);
323 325
324 // Prompts the user if they want the page translated. 326 // Prompts the user if they want the page translated.
325 translate_client_->ShowTranslateUI(translate::TRANSLATE_STEP_BEFORE_TRANSLATE, 327 translate_client_->ShowTranslateUI(translate::TRANSLATE_STEP_BEFORE_TRANSLATE,
326 language_code, 328 language_code,
327 target_lang, 329 target_lang,
328 TranslateErrors::NONE, 330 TranslateErrors::NONE,
(...skipping 265 matching lines...) Expand 10 before | Expand all | Expand 10 after
594 translate_event_->set_event_type(metrics::TranslateEventProto::UNKNOWN); 596 translate_event_->set_event_type(metrics::TranslateEventProto::UNKNOWN);
595 // TODO(rogerm): Populate the language list. 597 // TODO(rogerm): Populate the language list.
596 } 598 }
597 599
598 void TranslateManager::RecordTranslateEvent(int event_type) { 600 void TranslateManager::RecordTranslateEvent(int event_type) {
599 DCHECK(metrics::TranslateEventProto::EventType_IsValid(event_type)); 601 DCHECK(metrics::TranslateEventProto::EventType_IsValid(event_type));
600 translate_event_->set_event_type( 602 translate_event_->set_event_type(
601 static_cast<metrics::TranslateEventProto::EventType>(event_type)); 603 static_cast<metrics::TranslateEventProto::EventType>(event_type));
602 translate_event_->set_event_timestamp_sec( 604 translate_event_->set_event_timestamp_sec(
603 (base::TimeTicks::Now() - base::TimeTicks()).InSeconds()); 605 (base::TimeTicks::Now() - base::TimeTicks()).InSeconds());
604 TranslateRanker::GetInstance()->RecordTranslateEvent(*translate_event_); 606 translate_ranker_->AddTranslateEvent(std::move(translate_event_));
607 translate_event_ = base::MakeUnique<metrics::TranslateEventProto>();
605 } 608 }
606 609
607 } // namespace translate 610 } // namespace translate
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698