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

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

Issue 290573013: LanguageState should be owned by TranslateManager (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Adding TBR for CL Created 6 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/core/browser/translate_manager.h" 5 #include "components/translate/core/browser/translate_manager.h"
6 6
7 #include "base/bind.h" 7 #include "base/bind.h"
8 #include "base/command_line.h" 8 #include "base/command_line.h"
9 #include "base/metrics/field_trial.h" 9 #include "base/metrics/field_trial.h"
10 #include "base/metrics/histogram.h" 10 #include "base/metrics/histogram.h"
(...skipping 55 matching lines...) Expand 10 before | Expand all | Expand 10 after
66 g_callback_list_ = new TranslateErrorCallbackList; 66 g_callback_list_ = new TranslateErrorCallbackList;
67 return g_callback_list_->Add(callback); 67 return g_callback_list_->Add(callback);
68 } 68 }
69 69
70 TranslateManager::TranslateManager( 70 TranslateManager::TranslateManager(
71 TranslateClient* translate_client, 71 TranslateClient* translate_client,
72 const std::string& accept_languages_pref_name) 72 const std::string& accept_languages_pref_name)
73 : accept_languages_pref_name_(accept_languages_pref_name), 73 : accept_languages_pref_name_(accept_languages_pref_name),
74 translate_client_(translate_client), 74 translate_client_(translate_client),
75 translate_driver_(translate_client_->GetTranslateDriver()), 75 translate_driver_(translate_client_->GetTranslateDriver()),
76 weak_method_factory_(this) {} 76 language_state_(translate_driver_),
77 weak_method_factory_(this) {
78 }
77 79
78 base::WeakPtr<TranslateManager> TranslateManager::GetWeakPtr() { 80 base::WeakPtr<TranslateManager> TranslateManager::GetWeakPtr() {
79 return weak_method_factory_.GetWeakPtr(); 81 return weak_method_factory_.GetWeakPtr();
80 } 82 }
81 83
82 void TranslateManager::InitiateTranslation(const std::string& page_lang) { 84 void TranslateManager::InitiateTranslation(const std::string& page_lang) {
83 // Short-circuit out if not in a state where initiating translation makes 85 // Short-circuit out if not in a state where initiating translation makes
84 // sense (this method may be called muhtiple times for a given page). 86 // sense (this method may be called muhtiple times for a given page).
85 LanguageState& language_state = translate_driver_->GetLanguageState(); 87 if (!language_state_.page_needs_translation() ||
86 if (!language_state.page_needs_translation() || 88 language_state_.translation_pending() ||
87 language_state.translation_pending() || 89 language_state_.translation_declined() ||
88 language_state.translation_declined() || 90 language_state_.IsPageTranslated()) {
89 language_state.IsPageTranslated()) {
90 return; 91 return;
91 } 92 }
92 93
93 PrefService* prefs = translate_client_->GetPrefs(); 94 PrefService* prefs = translate_client_->GetPrefs();
94 if (!prefs->GetBoolean(prefs::kEnableTranslate)) { 95 if (!prefs->GetBoolean(prefs::kEnableTranslate)) {
95 TranslateBrowserMetrics::ReportInitiationStatus( 96 TranslateBrowserMetrics::ReportInitiationStatus(
96 TranslateBrowserMetrics::INITIATION_STATUS_DISABLED_BY_PREFS); 97 TranslateBrowserMetrics::INITIATION_STATUS_DISABLED_BY_PREFS);
97 const std::string& locale = 98 const std::string& locale =
98 TranslateDownloadManager::GetInstance()->application_locale(); 99 TranslateDownloadManager::GetInstance()->application_locale();
99 TranslateBrowserMetrics::ReportLocalesOnDisabledByPrefs(locale); 100 TranslateBrowserMetrics::ReportLocalesOnDisabledByPrefs(locale);
(...skipping 83 matching lines...) Expand 10 before | Expand all | Expand 10 after
183 std::string auto_target_lang = 184 std::string auto_target_lang =
184 GetAutoTargetLanguage(language_code, translate_prefs.get()); 185 GetAutoTargetLanguage(language_code, translate_prefs.get());
185 if (!auto_target_lang.empty()) { 186 if (!auto_target_lang.empty()) {
186 TranslateBrowserMetrics::ReportInitiationStatus( 187 TranslateBrowserMetrics::ReportInitiationStatus(
187 TranslateBrowserMetrics::INITIATION_STATUS_AUTO_BY_CONFIG); 188 TranslateBrowserMetrics::INITIATION_STATUS_AUTO_BY_CONFIG);
188 TranslatePage(language_code, auto_target_lang, false); 189 TranslatePage(language_code, auto_target_lang, false);
189 return; 190 return;
190 } 191 }
191 } 192 }
192 193
193 std::string auto_translate_to = language_state.AutoTranslateTo(); 194 std::string auto_translate_to = language_state_.AutoTranslateTo();
194 if (!auto_translate_to.empty()) { 195 if (!auto_translate_to.empty()) {
195 // This page was navigated through a click from a translated page. 196 // This page was navigated through a click from a translated page.
196 TranslateBrowserMetrics::ReportInitiationStatus( 197 TranslateBrowserMetrics::ReportInitiationStatus(
197 TranslateBrowserMetrics::INITIATION_STATUS_AUTO_BY_LINK); 198 TranslateBrowserMetrics::INITIATION_STATUS_AUTO_BY_LINK);
198 TranslatePage(language_code, auto_translate_to, false); 199 TranslatePage(language_code, auto_translate_to, false);
199 return; 200 return;
200 } 201 }
201 202
202 TranslateBrowserMetrics::ReportInitiationStatus( 203 TranslateBrowserMetrics::ReportInitiationStatus(
203 TranslateBrowserMetrics::INITIATION_STATUS_SHOW_INFOBAR); 204 TranslateBrowserMetrics::INITIATION_STATUS_SHOW_INFOBAR);
(...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after
245 // script. Once it is downloaded we'll do the translate. 246 // script. Once it is downloaded we'll do the translate.
246 TranslateScript::RequestCallback callback = base::Bind( 247 TranslateScript::RequestCallback callback = base::Bind(
247 &TranslateManager::OnTranslateScriptFetchComplete, GetWeakPtr(), 248 &TranslateManager::OnTranslateScriptFetchComplete, GetWeakPtr(),
248 translate_driver_->GetCurrentPageID(), source_lang, target_lang); 249 translate_driver_->GetCurrentPageID(), source_lang, target_lang);
249 250
250 script->Request(callback); 251 script->Request(callback);
251 } 252 }
252 253
253 void TranslateManager::RevertTranslation() { 254 void TranslateManager::RevertTranslation() {
254 translate_driver_->RevertTranslation(); 255 translate_driver_->RevertTranslation();
255 translate_driver_->GetLanguageState().SetCurrentLanguage( 256 language_state_.SetCurrentLanguage(language_state_.original_language());
256 translate_driver_->GetLanguageState().original_language());
257 } 257 }
258 258
259 void TranslateManager::ReportLanguageDetectionError() { 259 void TranslateManager::ReportLanguageDetectionError() {
260 TranslateBrowserMetrics::ReportLanguageDetectionError(); 260 TranslateBrowserMetrics::ReportLanguageDetectionError();
261 261
262 GURL report_error_url = GURL(kReportLanguageDetectionErrorURL); 262 GURL report_error_url = GURL(kReportLanguageDetectionErrorURL);
263 263
264 report_error_url = 264 report_error_url =
265 net::AppendQueryParameter(report_error_url, 265 net::AppendQueryParameter(report_error_url,
266 kUrlQueryName, 266 kUrlQueryName,
267 translate_driver_->GetActiveURL().spec()); 267 translate_driver_->GetActiveURL().spec());
268 268
269 report_error_url = net::AppendQueryParameter( 269 report_error_url =
270 report_error_url, 270 net::AppendQueryParameter(report_error_url,
271 kSourceLanguageQueryName, 271 kSourceLanguageQueryName,
272 translate_driver_->GetLanguageState().original_language()); 272 language_state_.original_language());
273 273
274 report_error_url = TranslateURLUtil::AddHostLocaleToUrl(report_error_url); 274 report_error_url = TranslateURLUtil::AddHostLocaleToUrl(report_error_url);
275 report_error_url = TranslateURLUtil::AddApiKeyToUrl(report_error_url); 275 report_error_url = TranslateURLUtil::AddApiKeyToUrl(report_error_url);
276 276
277 translate_client_->ShowReportLanguageDetectionErrorUI(report_error_url); 277 translate_client_->ShowReportLanguageDetectionErrorUI(report_error_url);
278 } 278 }
279 279
280 void TranslateManager::DoTranslatePage(const std::string& translate_script, 280 void TranslateManager::DoTranslatePage(const std::string& translate_script,
281 const std::string& source_lang, 281 const std::string& source_lang,
282 const std::string& target_lang) { 282 const std::string& target_lang) {
283 translate_driver_->GetLanguageState().set_translation_pending(true); 283 language_state_.set_translation_pending(true);
284 translate_driver_->TranslatePage(translate_script, source_lang, target_lang); 284 translate_driver_->TranslatePage(translate_script, source_lang, target_lang);
285 } 285 }
286 286
287 void TranslateManager::PageTranslated(const std::string& source_lang, 287 void TranslateManager::PageTranslated(const std::string& source_lang,
288 const std::string& target_lang, 288 const std::string& target_lang,
289 TranslateErrors::Type error_type) { 289 TranslateErrors::Type error_type) {
290 translate_driver_->GetLanguageState().SetCurrentLanguage(target_lang); 290 language_state_.SetCurrentLanguage(target_lang);
291 translate_driver_->GetLanguageState().set_translation_pending(false); 291 language_state_.set_translation_pending(false);
292 292
293 if ((error_type == TranslateErrors::NONE) && 293 if ((error_type == TranslateErrors::NONE) &&
294 source_lang != translate::kUnknownLanguageCode && 294 source_lang != translate::kUnknownLanguageCode &&
295 !TranslateDownloadManager::IsSupportedLanguage(source_lang)) { 295 !TranslateDownloadManager::IsSupportedLanguage(source_lang)) {
296 error_type = TranslateErrors::UNSUPPORTED_LANGUAGE; 296 error_type = TranslateErrors::UNSUPPORTED_LANGUAGE;
297 } 297 }
298 298
299 translate_client_->ShowTranslateUI(translate::TRANSLATE_STEP_AFTER_TRANSLATE, 299 translate_client_->ShowTranslateUI(translate::TRANSLATE_STEP_AFTER_TRANSLATE,
300 source_lang, 300 source_lang,
301 target_lang, 301 target_lang,
(...skipping 76 matching lines...) Expand 10 before | Expand all | Expand 10 after
378 &auto_target_lang)) { 378 &auto_target_lang)) {
379 // We need to confirm that the saved target language is still supported. 379 // We need to confirm that the saved target language is still supported.
380 // Also, GetLanguageCode will take care of removing country code if any. 380 // Also, GetLanguageCode will take care of removing country code if any.
381 auto_target_lang = 381 auto_target_lang =
382 TranslateDownloadManager::GetLanguageCode(auto_target_lang); 382 TranslateDownloadManager::GetLanguageCode(auto_target_lang);
383 if (TranslateDownloadManager::IsSupportedLanguage(auto_target_lang)) 383 if (TranslateDownloadManager::IsSupportedLanguage(auto_target_lang))
384 return auto_target_lang; 384 return auto_target_lang;
385 } 385 }
386 return std::string(); 386 return std::string();
387 } 387 }
388
389 LanguageState& TranslateManager::GetLanguageState() {
390 return language_state_;
391 }
OLDNEW
« no previous file with comments | « components/translate/core/browser/translate_manager.h ('k') | components/translate/core/browser/translate_ui_delegate.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698