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

Side by Side Diff: components/translate/ios/browser/language_detection_controller.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/language_detection_controller.h" 5 #include "components/translate/ios/browser/language_detection_controller.h"
6 6
7 #include <string> 7 #include <string>
8 8
9 #include "base/bind.h" 9 #include "base/bind.h"
10 #include "base/logging.h" 10 #include "base/logging.h"
(...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after
45 translate_enabled_.Init(prefs::kEnableTranslate, prefs); 45 translate_enabled_.Init(prefs::kEnableTranslate, prefs);
46 web_state->AddScriptCommandCallback( 46 web_state->AddScriptCommandCallback(
47 base::Bind(&LanguageDetectionController::OnTextCaptured, 47 base::Bind(&LanguageDetectionController::OnTextCaptured,
48 base::Unretained(this)), 48 base::Unretained(this)),
49 kCommandPrefix); 49 kCommandPrefix);
50 } 50 }
51 51
52 LanguageDetectionController::~LanguageDetectionController() { 52 LanguageDetectionController::~LanguageDetectionController() {
53 } 53 }
54 54
55 LanguageDetectionController::DetectionDetails::DetectionDetails()
56 : is_cld_reliable(false) {}
57
58 LanguageDetectionController::DetectionDetails::DetectionDetails(
59 const DetectionDetails& other) = default;
60
61 LanguageDetectionController::DetectionDetails::~DetectionDetails() = default;
62
55 std::unique_ptr<LanguageDetectionController::CallbackList::Subscription> 63 std::unique_ptr<LanguageDetectionController::CallbackList::Subscription>
56 LanguageDetectionController::RegisterLanguageDetectionCallback( 64 LanguageDetectionController::RegisterLanguageDetectionCallback(
57 const Callback& callback) { 65 const Callback& callback) {
58 return language_detection_callbacks_.Add(callback); 66 return language_detection_callbacks_.Add(callback);
59 } 67 }
60 68
61 void LanguageDetectionController::StartLanguageDetection() { 69 void LanguageDetectionController::StartLanguageDetection() {
62 if (!translate_enabled_.GetValue()) 70 if (!translate_enabled_.GetValue())
63 return; // Translate disabled in preferences. 71 return; // Translate disabled in preferences.
64 DCHECK(web_state()); 72 DCHECK(web_state());
(...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after
108 base::Bind(&LanguageDetectionController::OnTextRetrieved, 116 base::Bind(&LanguageDetectionController::OnTextRetrieved,
109 weak_method_factory_.GetWeakPtr(), 117 weak_method_factory_.GetWeakPtr(),
110 http_content_language, html_lang)]; 118 http_content_language, html_lang)];
111 return true; 119 return true;
112 } 120 }
113 121
114 void LanguageDetectionController::OnTextRetrieved( 122 void LanguageDetectionController::OnTextRetrieved(
115 const std::string& http_content_language, 123 const std::string& http_content_language,
116 const std::string& html_lang, 124 const std::string& html_lang,
117 const base::string16& text_content) { 125 const base::string16& text_content) {
126 std::string cld_language;
127 bool is_cld_reliable;
118 std::string language = translate::DeterminePageLanguage( 128 std::string language = translate::DeterminePageLanguage(
119 http_content_language, html_lang, 129 http_content_language, html_lang,
120 GetStringByClippingLastWord(text_content, 130 GetStringByClippingLastWord(text_content,
121 language_detection::kMaxIndexChars), 131 language_detection::kMaxIndexChars),
122 nullptr /* cld_language */, nullptr /* is_cld_reliable */); 132 &cld_language, &is_cld_reliable);
123 if (language.empty()) 133 if (language.empty())
124 return; // No language detected. 134 return; // No language detected.
125 135
126 DetectionDetails details; 136 DetectionDetails details;
127 details.content_language = http_content_language; 137 details.content_language = http_content_language;
128 details.html_root_language = html_lang; 138 details.html_root_language = html_lang;
129 details.adopted_language = language; 139 details.adopted_language = language;
140 details.cld_language = cld_language;
141 details.is_cld_reliable = is_cld_reliable;
130 language_detection_callbacks_.Notify(details); 142 language_detection_callbacks_.Notify(details);
131 } 143 }
132 144
133 // web::WebStateObserver implementation: 145 // web::WebStateObserver implementation:
134 146
135 void LanguageDetectionController::PageLoaded( 147 void LanguageDetectionController::PageLoaded(
136 web::PageLoadCompletionStatus load_completion_status) { 148 web::PageLoadCompletionStatus load_completion_status) {
137 if (load_completion_status == web::PageLoadCompletionStatus::SUCCESS) 149 if (load_completion_status == web::PageLoadCompletionStatus::SUCCESS)
138 StartLanguageDetection(); 150 StartLanguageDetection();
139 } 151 }
140 152
141 void LanguageDetectionController::DidFinishNavigation( 153 void LanguageDetectionController::DidFinishNavigation(
142 web::NavigationContext* navigation_context) { 154 web::NavigationContext* navigation_context) {
143 if (navigation_context->IsSameDocument()) 155 if (navigation_context->IsSameDocument())
144 StartLanguageDetection(); 156 StartLanguageDetection();
145 } 157 }
146 158
147 void LanguageDetectionController::WebStateDestroyed() { 159 void LanguageDetectionController::WebStateDestroyed() {
148 web_state()->RemoveScriptCommandCallback(kCommandPrefix); 160 web_state()->RemoveScriptCommandCallback(kCommandPrefix);
149 } 161 }
150 162
151 } // namespace translate 163 } // namespace translate
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698