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

Side by Side Diff: components/translate/ios/browser/ios_translate_driver.mm

Issue 2913573002: Updates language model on iOS. (Closed)
Patch Set: Created 3 years, 6 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/ios/browser/ios_translate_driver.h" 5 #include "components/translate/ios/browser/ios_translate_driver.h"
6 6
7 #include "base/bind.h" 7 #include "base/bind.h"
8 #include "base/logging.h" 8 #include "base/logging.h"
9 #include "base/strings/sys_string_conversions.h" 9 #include "base/strings/sys_string_conversions.h"
10 #include "base/threading/thread_task_runner_handle.h" 10 #include "base/threading/thread_task_runner_handle.h"
11 #include "base/time/time.h" 11 #include "base/time/time.h"
12 #include "components/translate/core/browser/language_model.h"
12 #include "components/translate/core/browser/translate_client.h" 13 #include "components/translate/core/browser/translate_client.h"
13 #include "components/translate/core/browser/translate_manager.h" 14 #include "components/translate/core/browser/translate_manager.h"
14 #include "components/translate/core/common/translate_constants.h" 15 #include "components/translate/core/common/translate_constants.h"
15 #include "components/translate/core/common/translate_errors.h" 16 #include "components/translate/core/common/translate_errors.h"
16 #include "components/translate/core/common/translate_metrics.h" 17 #include "components/translate/core/common/translate_metrics.h"
17 #import "components/translate/ios/browser/js_language_detection_manager.h" 18 #import "components/translate/ios/browser/js_language_detection_manager.h"
18 #import "components/translate/ios/browser/js_translate_manager.h" 19 #import "components/translate/ios/browser/js_translate_manager.h"
19 #import "components/translate/ios/browser/language_detection_controller.h" 20 #import "components/translate/ios/browser/language_detection_controller.h"
20 #import "components/translate/ios/browser/translate_controller.h" 21 #import "components/translate/ios/browser/translate_controller.h"
21 #include "ios/web/public/browser_state.h" 22 #include "ios/web/public/browser_state.h"
(...skipping 20 matching lines...) Expand all
42 // translate_ios.js. 43 // translate_ios.js.
43 const int kTranslateStatusCheckDelayMs = 400; 44 const int kTranslateStatusCheckDelayMs = 400;
44 // Language name passed to the Translate element for it to detect the language. 45 // Language name passed to the Translate element for it to detect the language.
45 const char kAutoDetectionLanguage[] = "auto"; 46 const char kAutoDetectionLanguage[] = "auto";
46 47
47 } // namespace 48 } // namespace
48 49
49 IOSTranslateDriver::IOSTranslateDriver( 50 IOSTranslateDriver::IOSTranslateDriver(
50 web::WebState* web_state, 51 web::WebState* web_state,
51 web::NavigationManager* navigation_manager, 52 web::NavigationManager* navigation_manager,
52 TranslateManager* translate_manager) 53 TranslateManager* translate_manager,
54 LanguageModel* language_model)
53 : web::WebStateObserver(web_state), 55 : web::WebStateObserver(web_state),
54 navigation_manager_(navigation_manager), 56 navigation_manager_(navigation_manager),
57 language_model_(language_model),
55 translate_manager_(translate_manager->GetWeakPtr()), 58 translate_manager_(translate_manager->GetWeakPtr()),
56 page_seq_no_(0), 59 page_seq_no_(0),
57 pending_page_seq_no_(0), 60 pending_page_seq_no_(0),
58 weak_method_factory_(this) { 61 weak_method_factory_(this) {
59 DCHECK(navigation_manager_); 62 DCHECK(navigation_manager_);
60 DCHECK(translate_manager_); 63 DCHECK(translate_manager_);
61 DCHECK(web::WebStateObserver::web_state()); 64 DCHECK(web::WebStateObserver::web_state());
62 65
63 CRWJSInjectionReceiver* receiver = web_state->GetJSInjectionReceiver(); 66 CRWJSInjectionReceiver* receiver = web_state->GetJSInjectionReceiver();
64 DCHECK(receiver); 67 DCHECK(receiver);
(...skipping 20 matching lines...) Expand all
85 IOSTranslateDriver::~IOSTranslateDriver() { 88 IOSTranslateDriver::~IOSTranslateDriver() {
86 } 89 }
87 90
88 void IOSTranslateDriver::OnLanguageDetermined( 91 void IOSTranslateDriver::OnLanguageDetermined(
89 const LanguageDetectionController::DetectionDetails& details) { 92 const LanguageDetectionController::DetectionDetails& details) {
90 if (!translate_manager_) 93 if (!translate_manager_)
91 return; 94 return;
92 translate_manager_->GetLanguageState().LanguageDetermined( 95 translate_manager_->GetLanguageState().LanguageDetermined(
93 details.adopted_language, true); 96 details.adopted_language, true);
94 97
98 // Update language model.
99 if (language_model_ && details.is_cld_reliable) {
100 language_model_->OnPageVisited(details.cld_language);
101 }
102
95 if (web_state()) 103 if (web_state())
96 translate_manager_->InitiateTranslation(details.adopted_language); 104 translate_manager_->InitiateTranslation(details.adopted_language);
97 } 105 }
98 106
99 // web::WebStateObserver methods 107 // web::WebStateObserver methods
100 108
101 void IOSTranslateDriver::NavigationItemCommitted( 109 void IOSTranslateDriver::NavigationItemCommitted(
102 const web::LoadCommittedDetails& load_details) { 110 const web::LoadCommittedDetails& load_details) {
103 // Interrupt pending translations and reset various data when a navigation 111 // Interrupt pending translations and reset various data when a navigation
104 // happens. Desktop does it by tracking changes in the page ID, and 112 // happens. Desktop does it by tracking changes in the page ID, and
(...skipping 154 matching lines...) Expand 10 before | Expand all | Expand 10 after
259 translate_manager_->PageTranslated(source_language_, target_language_, 267 translate_manager_->PageTranslated(source_language_, target_language_,
260 TranslateErrors::TRANSLATION_ERROR); 268 TranslateErrors::TRANSLATION_ERROR);
261 } 269 }
262 270
263 TranslationDidSucceed(source_language_, target_language_, 271 TranslationDidSucceed(source_language_, target_language_,
264 pending_page_seq_no_, original_language, 272 pending_page_seq_no_, original_language,
265 translation_time); 273 translation_time);
266 } 274 }
267 275
268 } // namespace translate 276 } // namespace translate
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698