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

Side by Side Diff: chrome/browser/translate/translate_manager.cc

Issue 143003020: Move TranslateLanguageList to the Translate component (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@removeDelegate
Patch Set: rebase Created 6 years, 10 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 (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 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 "chrome/browser/translate/translate_manager.h" 5 #include "chrome/browser/translate/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/memory/singleton.h" 9 #include "base/memory/singleton.h"
10 #include "base/metrics/field_trial.h" 10 #include "base/metrics/field_trial.h"
11 #include "base/metrics/histogram.h" 11 #include "base/metrics/histogram.h"
12 #include "base/prefs/pref_service.h" 12 #include "base/prefs/pref_service.h"
13 #include "base/strings/string_split.h" 13 #include "base/strings/string_split.h"
14 #include "base/strings/stringprintf.h" 14 #include "base/strings/stringprintf.h"
15 #include "base/time/time.h" 15 #include "base/time/time.h"
16 #include "chrome/browser/browser_process.h" 16 #include "chrome/browser/browser_process.h"
17 #include "chrome/browser/chrome_notification_types.h" 17 #include "chrome/browser/chrome_notification_types.h"
18 #include "chrome/browser/profiles/profile.h" 18 #include "chrome/browser/profiles/profile.h"
19 #include "chrome/browser/tab_contents/tab_util.h" 19 #include "chrome/browser/tab_contents/tab_util.h"
20 #include "chrome/browser/translate/translate_accept_languages.h" 20 #include "chrome/browser/translate/translate_accept_languages.h"
21 #include "chrome/browser/translate/translate_infobar_delegate.h" 21 #include "chrome/browser/translate/translate_infobar_delegate.h"
22 #include "chrome/browser/translate/translate_language_list.h"
23 #include "chrome/browser/translate/translate_prefs.h" 22 #include "chrome/browser/translate/translate_prefs.h"
24 #include "chrome/browser/translate/translate_script.h" 23 #include "chrome/browser/translate/translate_script.h"
25 #include "chrome/browser/translate/translate_tab_helper.h" 24 #include "chrome/browser/translate/translate_tab_helper.h"
26 #include "chrome/browser/translate/translate_url_util.h"
27 #include "chrome/browser/ui/browser.h" 25 #include "chrome/browser/ui/browser.h"
28 #include "chrome/browser/ui/browser_finder.h" 26 #include "chrome/browser/ui/browser_finder.h"
29 #include "chrome/browser/ui/browser_tabstrip.h" 27 #include "chrome/browser/ui/browser_tabstrip.h"
30 #include "chrome/browser/ui/browser_window.h" 28 #include "chrome/browser/ui/browser_window.h"
31 #include "chrome/browser/ui/tabs/tab_strip_model.h" 29 #include "chrome/browser/ui/tabs/tab_strip_model.h"
32 #include "chrome/browser/ui/translate/translate_bubble_factory.h" 30 #include "chrome/browser/ui/translate/translate_bubble_factory.h"
33 #include "chrome/common/chrome_switches.h" 31 #include "chrome/common/chrome_switches.h"
34 #include "chrome/common/pref_names.h" 32 #include "chrome/common/pref_names.h"
35 #include "chrome/common/render_messages.h" 33 #include "chrome/common/render_messages.h"
36 #include "chrome/common/url_constants.h" 34 #include "chrome/common/url_constants.h"
37 #include "components/translate/core/browser/language_state.h" 35 #include "components/translate/core/browser/language_state.h"
38 #include "components/translate/core/browser/page_translated_details.h" 36 #include "components/translate/core/browser/page_translated_details.h"
39 #include "components/translate/core/browser/translate_browser_metrics.h" 37 #include "components/translate/core/browser/translate_browser_metrics.h"
38 #include "components/translate/core/browser/translate_download_manager.h"
40 #include "components/translate/core/browser/translate_error_details.h" 39 #include "components/translate/core/browser/translate_error_details.h"
41 #include "components/translate/core/browser/translate_event_details.h" 40 #include "components/translate/core/browser/translate_language_list.h"
41 #include "components/translate/core/browser/translate_url_util.h"
42 #include "components/translate/core/common/language_detection_details.h" 42 #include "components/translate/core/common/language_detection_details.h"
43 #include "components/translate/core/common/translate_constants.h" 43 #include "components/translate/core/common/translate_constants.h"
44 #include "components/translate/core/common/translate_pref_names.h"
45 #include "components/translate/core/common/translate_switches.h"
44 #include "content/public/browser/navigation_controller.h" 46 #include "content/public/browser/navigation_controller.h"
45 #include "content/public/browser/navigation_details.h" 47 #include "content/public/browser/navigation_details.h"
46 #include "content/public/browser/navigation_entry.h" 48 #include "content/public/browser/navigation_entry.h"
47 #include "content/public/browser/notification_details.h" 49 #include "content/public/browser/notification_details.h"
48 #include "content/public/browser/notification_service.h" 50 #include "content/public/browser/notification_service.h"
49 #include "content/public/browser/notification_source.h" 51 #include "content/public/browser/notification_source.h"
50 #include "content/public/browser/notification_types.h" 52 #include "content/public/browser/notification_types.h"
51 #include "content/public/browser/render_process_host.h" 53 #include "content/public/browser/render_process_host.h"
52 #include "content/public/browser/render_view_host.h" 54 #include "content/public/browser/render_view_host.h"
53 #include "content/public/browser/web_contents.h" 55 #include "content/public/browser/web_contents.h"
(...skipping 51 matching lines...) Expand 10 before | Expand all | Expand 10 after
105 !url.SchemeIs(chrome::kChromeUIScheme) && 107 !url.SchemeIs(chrome::kChromeUIScheme) &&
106 !url.SchemeIs(chrome::kChromeDevToolsScheme) && 108 !url.SchemeIs(chrome::kChromeDevToolsScheme) &&
107 #if defined(OS_CHROMEOS) 109 #if defined(OS_CHROMEOS)
108 !(url.SchemeIs(extensions::kExtensionScheme) && 110 !(url.SchemeIs(extensions::kExtensionScheme) &&
109 url.DomainIs(file_manager::kFileManagerAppId)) && 111 url.DomainIs(file_manager::kFileManagerAppId)) &&
110 #endif 112 #endif
111 !url.SchemeIs(content::kFtpScheme); 113 !url.SchemeIs(content::kFtpScheme);
112 } 114 }
113 115
114 // static 116 // static
115 void TranslateManager::GetSupportedLanguages(
116 std::vector<std::string>* languages) {
117 if (GetInstance()->language_list_.get()) {
118 GetInstance()->language_list_->GetSupportedLanguages(languages);
119 return;
120 }
121 NOTREACHED();
122 }
123
124 // static
125 base::Time TranslateManager::GetSupportedLanguagesLastUpdated() {
126 if (GetInstance()->language_list_.get()) {
127 return GetInstance()->language_list_->last_updated();
128 }
129 NOTREACHED();
130 return base::Time();
131 }
132
133 // static
134 std::string TranslateManager::GetLanguageCode(
135 const std::string& chrome_locale) {
136 if (GetInstance()->language_list_.get())
137 return GetInstance()->language_list_->GetLanguageCode(chrome_locale);
138 NOTREACHED();
139 return chrome_locale;
140 }
141
142 // static
143 bool TranslateManager::IsSupportedLanguage(const std::string& language) {
144 if (GetInstance()->language_list_.get())
145 return GetInstance()->language_list_->IsSupportedLanguage(language);
146 NOTREACHED();
147 return false;
148 }
149
150 // static
151 bool TranslateManager::IsAlphaLanguage(const std::string& language) {
152 if (GetInstance()->language_list_.get())
153 return GetInstance()->language_list_->IsAlphaLanguage(language);
154 NOTREACHED();
155 return false;
156 }
157
158 // static
159 bool TranslateManager::IsAcceptLanguage(Profile* profile, 117 bool TranslateManager::IsAcceptLanguage(Profile* profile,
160 const std::string& language) { 118 const std::string& language) {
161 if (GetInstance()->accept_languages_.get()) { 119 if (GetInstance()->accept_languages_.get()) {
162 return GetInstance()->accept_languages_->IsAcceptLanguage( 120 return GetInstance()->accept_languages_->IsAcceptLanguage(
163 profile, language); 121 profile, language);
164 } 122 }
165 NOTREACHED(); 123 NOTREACHED();
166 return false; 124 return false;
167 } 125 }
168 126
(...skipping 103 matching lines...) Expand 10 before | Expand all | Expand 10 after
272 } 230 }
273 231
274 void TranslateManager::AddObserver(Observer* obs) { 232 void TranslateManager::AddObserver(Observer* obs) {
275 observer_list_.AddObserver(obs); 233 observer_list_.AddObserver(obs);
276 } 234 }
277 235
278 void TranslateManager::RemoveObserver(Observer* obs) { 236 void TranslateManager::RemoveObserver(Observer* obs) {
279 observer_list_.RemoveObserver(obs); 237 observer_list_.RemoveObserver(obs);
280 } 238 }
281 239
282 void TranslateManager::NotifyTranslateEvent(
283 const TranslateEventDetails& details) {
284 FOR_EACH_OBSERVER(Observer, observer_list_, OnTranslateEvent(details));
285 }
286
287 void TranslateManager::NotifyLanguageDetection( 240 void TranslateManager::NotifyLanguageDetection(
288 const LanguageDetectionDetails& details) { 241 const LanguageDetectionDetails& details) {
289 FOR_EACH_OBSERVER(Observer, observer_list_, OnLanguageDetection(details)); 242 FOR_EACH_OBSERVER(Observer, observer_list_, OnLanguageDetection(details));
290 } 243 }
291 244
292 void TranslateManager::NotifyTranslateError( 245 void TranslateManager::NotifyTranslateError(
293 const TranslateErrorDetails& details) { 246 const TranslateErrorDetails& details) {
294 FOR_EACH_OBSERVER(Observer, observer_list_, OnTranslateError(details)); 247 FOR_EACH_OBSERVER(Observer, observer_list_, OnTranslateError(details));
295 } 248 }
296 249
297 TranslateManager::TranslateManager() 250 TranslateManager::TranslateManager()
298 : max_reload_check_attempts_(kMaxTranslateLoadCheckAttempts), 251 : max_reload_check_attempts_(kMaxTranslateLoadCheckAttempts),
299 weak_method_factory_(this) { 252 weak_method_factory_(this) {
300 notification_registrar_.Add(this, content::NOTIFICATION_NAV_ENTRY_COMMITTED, 253 notification_registrar_.Add(this, content::NOTIFICATION_NAV_ENTRY_COMMITTED,
301 content::NotificationService::AllSources()); 254 content::NotificationService::AllSources());
302 notification_registrar_.Add(this, 255 notification_registrar_.Add(this,
303 chrome::NOTIFICATION_TAB_LANGUAGE_DETERMINED, 256 chrome::NOTIFICATION_TAB_LANGUAGE_DETERMINED,
304 content::NotificationService::AllSources()); 257 content::NotificationService::AllSources());
305 notification_registrar_.Add(this, chrome::NOTIFICATION_PAGE_TRANSLATED, 258 notification_registrar_.Add(this, chrome::NOTIFICATION_PAGE_TRANSLATED,
306 content::NotificationService::AllSources()); 259 content::NotificationService::AllSources());
307 language_list_.reset(new TranslateLanguageList);
308 accept_languages_.reset(new TranslateAcceptLanguages); 260 accept_languages_.reset(new TranslateAcceptLanguages);
309 script_.reset(new TranslateScript); 261 script_.reset(new TranslateScript);
310 } 262 }
311 263
312 void TranslateManager::InitiateTranslation(WebContents* web_contents, 264 void TranslateManager::InitiateTranslation(WebContents* web_contents,
313 const std::string& page_lang) { 265 const std::string& page_lang) {
314 TranslateTabHelper* translate_tab_helper = 266 TranslateTabHelper* translate_tab_helper =
315 TranslateTabHelper::FromWebContents(web_contents); 267 TranslateTabHelper::FromWebContents(web_contents);
316 if (!translate_tab_helper) 268 if (!translate_tab_helper)
317 return; 269 return;
318 270
319 Profile* profile = 271 Profile* profile =
320 Profile::FromBrowserContext(web_contents->GetBrowserContext()); 272 Profile::FromBrowserContext(web_contents->GetBrowserContext());
321 Profile* original_profile = profile->GetOriginalProfile(); 273 Profile* original_profile = profile->GetOriginalProfile();
322 PrefService* prefs = original_profile->GetPrefs(); 274 PrefService* prefs = original_profile->GetPrefs();
323 if (!prefs->GetBoolean(prefs::kEnableTranslate)) { 275 if (!prefs->GetBoolean(prefs::kEnableTranslate)) {
324 TranslateBrowserMetrics::ReportInitiationStatus( 276 TranslateBrowserMetrics::ReportInitiationStatus(
325 TranslateBrowserMetrics::INITIATION_STATUS_DISABLED_BY_PREFS); 277 TranslateBrowserMetrics::INITIATION_STATUS_DISABLED_BY_PREFS);
326 const std::string& locale = g_browser_process->GetApplicationLocale(); 278 const std::string& locale = g_browser_process->GetApplicationLocale();
327 TranslateBrowserMetrics::ReportLocalesOnDisabledByPrefs(locale); 279 TranslateBrowserMetrics::ReportLocalesOnDisabledByPrefs(locale);
328 return; 280 return;
329 } 281 }
330 282
331 // Allow disabling of translate from the command line to assist with 283 // Allow disabling of translate from the command line to assist with
332 // automated browser testing. 284 // automated browser testing.
333 if (CommandLine::ForCurrentProcess()->HasSwitch( 285 if (CommandLine::ForCurrentProcess()->HasSwitch(
334 switches::kDisableTranslate)) { 286 translate::switches::kDisableTranslate)) {
335 TranslateBrowserMetrics::ReportInitiationStatus( 287 TranslateBrowserMetrics::ReportInitiationStatus(
336 TranslateBrowserMetrics::INITIATION_STATUS_DISABLED_BY_SWITCH); 288 TranslateBrowserMetrics::INITIATION_STATUS_DISABLED_BY_SWITCH);
337 return; 289 return;
338 } 290 }
339 291
340 // MHTML pages currently cannot be translated. 292 // MHTML pages currently cannot be translated.
341 // See bug: 217945. 293 // See bug: 217945.
342 if (web_contents->GetContentsMimeType() == "multipart/related") { 294 if (web_contents->GetContentsMimeType() == "multipart/related") {
343 TranslateBrowserMetrics::ReportInitiationStatus( 295 TranslateBrowserMetrics::ReportInitiationStatus(
344 TranslateBrowserMetrics::INITIATION_STATUS_MIME_TYPE_IS_NOT_SUPPORTED); 296 TranslateBrowserMetrics::INITIATION_STATUS_MIME_TYPE_IS_NOT_SUPPORTED);
345 return; 297 return;
346 } 298 }
347 299
348 // Don't translate any Chrome specific page, e.g., New Tab Page, Download, 300 // Don't translate any Chrome specific page, e.g., New Tab Page, Download,
349 // History, and so on. 301 // History, and so on.
350 GURL page_url = web_contents->GetURL(); 302 GURL page_url = web_contents->GetURL();
351 if (!IsTranslatableURL(page_url)) { 303 if (!IsTranslatableURL(page_url)) {
352 TranslateBrowserMetrics::ReportInitiationStatus( 304 TranslateBrowserMetrics::ReportInitiationStatus(
353 TranslateBrowserMetrics::INITIATION_STATUS_URL_IS_NOT_SUPPORTED); 305 TranslateBrowserMetrics::INITIATION_STATUS_URL_IS_NOT_SUPPORTED);
354 return; 306 return;
355 } 307 }
356 308
357 std::string target_lang = GetTargetLanguage(prefs); 309 std::string target_lang = GetTargetLanguage(prefs);
358 std::string language_code = GetLanguageCode(page_lang); 310 std::string language_code =
311 TranslateDownloadManager::GetLanguageCode(page_lang);
359 312
360 // Don't translate similar languages (ex: en-US to en). 313 // Don't translate similar languages (ex: en-US to en).
361 if (language_code == target_lang) { 314 if (language_code == target_lang) {
362 TranslateBrowserMetrics::ReportInitiationStatus( 315 TranslateBrowserMetrics::ReportInitiationStatus(
363 TranslateBrowserMetrics::INITIATION_STATUS_SIMILAR_LANGUAGES); 316 TranslateBrowserMetrics::INITIATION_STATUS_SIMILAR_LANGUAGES);
364 return; 317 return;
365 } 318 }
366 319
367 // Nothing to do if either the language Chrome is in or the language of the 320 // Nothing to do if either the language Chrome is in or the language of the
368 // page is not supported by the translation server. 321 // page is not supported by the translation server.
369 if (target_lang.empty() || !IsSupportedLanguage(language_code)) { 322 if (target_lang.empty() ||
323 !TranslateDownloadManager::IsSupportedLanguage(language_code)) {
370 TranslateBrowserMetrics::ReportInitiationStatus( 324 TranslateBrowserMetrics::ReportInitiationStatus(
371 TranslateBrowserMetrics::INITIATION_STATUS_LANGUAGE_IS_NOT_SUPPORTED); 325 TranslateBrowserMetrics::INITIATION_STATUS_LANGUAGE_IS_NOT_SUPPORTED);
372 TranslateBrowserMetrics::ReportUnsupportedLanguageAtInitiation( 326 TranslateBrowserMetrics::ReportUnsupportedLanguageAtInitiation(
373 language_code); 327 language_code);
374 return; 328 return;
375 } 329 }
376 330
377 TranslatePrefs translate_prefs(prefs); 331 TranslatePrefs translate_prefs(prefs);
378 332
379 // Don't translate any user black-listed languages. 333 // Don't translate any user black-listed languages.
(...skipping 75 matching lines...) Expand 10 before | Expand all | Expand 10 after
455 if ((web_contents->IsLoading()) && attempt < kMaxTranslateLoadCheckAttempts) { 409 if ((web_contents->IsLoading()) && attempt < kMaxTranslateLoadCheckAttempts) {
456 int backoff = attempt * max_reload_check_attempts_; 410 int backoff = attempt * max_reload_check_attempts_;
457 base::MessageLoop::current()->PostDelayedTask( 411 base::MessageLoop::current()->PostDelayedTask(
458 FROM_HERE, base::Bind(&TranslateManager::InitiateTranslationPosted, 412 FROM_HERE, base::Bind(&TranslateManager::InitiateTranslationPosted,
459 weak_method_factory_.GetWeakPtr(), process_id, 413 weak_method_factory_.GetWeakPtr(), process_id,
460 render_id, page_lang, ++attempt), 414 render_id, page_lang, ++attempt),
461 base::TimeDelta::FromMilliseconds(backoff)); 415 base::TimeDelta::FromMilliseconds(backoff));
462 return; 416 return;
463 } 417 }
464 418
465 InitiateTranslation(web_contents, GetLanguageCode(page_lang)); 419 InitiateTranslation(web_contents,
420 TranslateDownloadManager::GetLanguageCode(page_lang));
466 } 421 }
467 422
468 void TranslateManager::TranslatePage(WebContents* web_contents, 423 void TranslateManager::TranslatePage(WebContents* web_contents,
469 const std::string& original_source_lang, 424 const std::string& original_source_lang,
470 const std::string& target_lang) { 425 const std::string& target_lang) {
471 NavigationEntry* entry = web_contents->GetController().GetActiveEntry(); 426 NavigationEntry* entry = web_contents->GetController().GetActiveEntry();
472 if (!entry) { 427 if (!entry) {
473 NOTREACHED(); 428 NOTREACHED();
474 return; 429 return;
475 } 430 }
476 431
477 // Translation can be kicked by context menu against unsupported languages. 432 // Translation can be kicked by context menu against unsupported languages.
478 // Unsupported language strings should be replaced with 433 // Unsupported language strings should be replaced with
479 // kUnknownLanguageCode in order to send a translation request with enabling 434 // kUnknownLanguageCode in order to send a translation request with enabling
480 // server side auto language detection. 435 // server side auto language detection.
481 std::string source_lang(original_source_lang); 436 std::string source_lang(original_source_lang);
482 if (!IsSupportedLanguage(source_lang)) 437 if (!TranslateDownloadManager::IsSupportedLanguage(source_lang))
483 source_lang = std::string(translate::kUnknownLanguageCode); 438 source_lang = std::string(translate::kUnknownLanguageCode);
484 439
485 if (IsTranslateBubbleEnabled()) { 440 if (IsTranslateBubbleEnabled()) {
486 ShowBubble(web_contents, TranslateBubbleModel::VIEW_STATE_TRANSLATING, 441 ShowBubble(web_contents, TranslateBubbleModel::VIEW_STATE_TRANSLATING,
487 TranslateErrors::NONE); 442 TranslateErrors::NONE);
488 } else { 443 } else {
489 Profile* profile = 444 Profile* profile =
490 Profile::FromBrowserContext(web_contents->GetBrowserContext()); 445 Profile::FromBrowserContext(web_contents->GetBrowserContext());
491 TranslateInfoBarDelegate::Create( 446 TranslateInfoBarDelegate::Create(
492 true, web_contents, TranslateInfoBarDelegate::TRANSLATING, source_lang, 447 true, web_contents, TranslateInfoBarDelegate::TRANSLATING, source_lang,
(...skipping 100 matching lines...) Expand 10 before | Expand all | Expand 10 after
593 translate_tab_helper->GetLanguageState().set_translation_pending(true); 548 translate_tab_helper->GetLanguageState().set_translation_pending(true);
594 web_contents->GetRenderViewHost()->Send(new ChromeViewMsg_TranslatePage( 549 web_contents->GetRenderViewHost()->Send(new ChromeViewMsg_TranslatePage(
595 web_contents->GetRenderViewHost()->GetRoutingID(), entry->GetPageID(), 550 web_contents->GetRenderViewHost()->GetRoutingID(), entry->GetPageID(),
596 translate_script, source_lang, target_lang)); 551 translate_script, source_lang, target_lang));
597 } 552 }
598 553
599 void TranslateManager::PageTranslated(WebContents* web_contents, 554 void TranslateManager::PageTranslated(WebContents* web_contents,
600 PageTranslatedDetails* details) { 555 PageTranslatedDetails* details) {
601 if ((details->error_type == TranslateErrors::NONE) && 556 if ((details->error_type == TranslateErrors::NONE) &&
602 details->source_language != translate::kUnknownLanguageCode && 557 details->source_language != translate::kUnknownLanguageCode &&
603 !IsSupportedLanguage(details->source_language)) { 558 !TranslateDownloadManager::IsSupportedLanguage(
559 details->source_language)) {
604 details->error_type = TranslateErrors::UNSUPPORTED_LANGUAGE; 560 details->error_type = TranslateErrors::UNSUPPORTED_LANGUAGE;
605 } 561 }
606 562
607 if (IsTranslateBubbleEnabled()) { 563 if (IsTranslateBubbleEnabled()) {
608 TranslateBubbleModel::ViewState view_state = 564 TranslateBubbleModel::ViewState view_state =
609 (details->error_type == TranslateErrors::NONE) ? 565 (details->error_type == TranslateErrors::NONE) ?
610 TranslateBubbleModel::VIEW_STATE_AFTER_TRANSLATE : 566 TranslateBubbleModel::VIEW_STATE_AFTER_TRANSLATE :
611 TranslateBubbleModel::VIEW_STATE_ERROR; 567 TranslateBubbleModel::VIEW_STATE_ERROR;
612 ShowBubble(web_contents, view_state, details->error_type); 568 ShowBubble(web_contents, view_state, details->error_type);
613 } else { 569 } else {
(...skipping 11 matching lines...) Expand all
625 if (details->error_type != TranslateErrors::NONE && 581 if (details->error_type != TranslateErrors::NONE &&
626 !web_contents->GetBrowserContext()->IsOffTheRecord()) { 582 !web_contents->GetBrowserContext()->IsOffTheRecord()) {
627 TranslateErrorDetails error_details; 583 TranslateErrorDetails error_details;
628 error_details.time = base::Time::Now(); 584 error_details.time = base::Time::Now();
629 error_details.url = web_contents->GetLastCommittedURL(); 585 error_details.url = web_contents->GetLastCommittedURL();
630 error_details.error = details->error_type; 586 error_details.error = details->error_type;
631 NotifyTranslateError(error_details); 587 NotifyTranslateError(error_details);
632 } 588 }
633 } 589 }
634 590
635 void TranslateManager::FetchLanguageListFromTranslateServer(
636 PrefService* prefs) {
637 // We don't want to do this when translate is disabled.
638 DCHECK(prefs != NULL);
639 if (CommandLine::ForCurrentProcess()->HasSwitch(
640 switches::kDisableTranslate) ||
641 (prefs != NULL && !prefs->GetBoolean(prefs::kEnableTranslate))) {
642 return;
643 }
644
645 if (language_list_.get())
646 language_list_->RequestLanguageList();
647 else
648 NOTREACHED();
649 }
650
651 void TranslateManager::CleanupPendingUlrFetcher() { 591 void TranslateManager::CleanupPendingUlrFetcher() {
652 language_list_.reset();
653 script_.reset(); 592 script_.reset();
654 } 593 }
655 594
656 void TranslateManager::OnTranslateScriptFetchComplete( 595 void TranslateManager::OnTranslateScriptFetchComplete(
657 bool success, const std::string& data) { 596 bool success, const std::string& data) {
658 std::vector<PendingRequest>::const_iterator iter; 597 std::vector<PendingRequest>::const_iterator iter;
659 for (iter = pending_requests_.begin(); iter != pending_requests_.end(); 598 for (iter = pending_requests_.begin(); iter != pending_requests_.end();
660 ++iter) { 599 ++iter) {
661 const PendingRequest& request = *iter; 600 const PendingRequest& request = *iter;
662 WebContents* web_contents = 601 WebContents* web_contents =
(...skipping 79 matching lines...) Expand 10 before | Expand all | Expand 10 after
742 681
743 TranslateBubbleFactory::Show(browser->window(), web_contents, view_state, 682 TranslateBubbleFactory::Show(browser->window(), web_contents, view_state,
744 error_type); 683 error_type);
745 #else 684 #else
746 NOTREACHED(); 685 NOTREACHED();
747 #endif 686 #endif
748 } 687 }
749 688
750 // static 689 // static
751 std::string TranslateManager::GetTargetLanguage(PrefService* prefs) { 690 std::string TranslateManager::GetTargetLanguage(PrefService* prefs) {
752 std::string ui_lang = 691 std::string ui_lang = TranslatePrefs::ConvertLangCodeForTranslation(
753 TranslatePrefs::ConvertLangCodeForTranslation( 692 TranslateDownloadManager::GetLanguageCode(
754 GetLanguageCode(g_browser_process->GetApplicationLocale())); 693 g_browser_process->GetApplicationLocale()));
755 694
756 if (IsSupportedLanguage(ui_lang)) 695 if (TranslateDownloadManager::IsSupportedLanguage(ui_lang))
757 return ui_lang; 696 return ui_lang;
758 697
759 // Getting the accepted languages list 698 // Getting the accepted languages list
760 std::string accept_langs_str = prefs->GetString(prefs::kAcceptLanguages); 699 std::string accept_langs_str = prefs->GetString(prefs::kAcceptLanguages);
761 700
762 std::vector<std::string> accept_langs_list; 701 std::vector<std::string> accept_langs_list;
763 base::SplitString(accept_langs_str, ',', &accept_langs_list); 702 base::SplitString(accept_langs_str, ',', &accept_langs_list);
764 703
765 // Will translate to the first supported language on the Accepted Language 704 // Will translate to the first supported language on the Accepted Language
766 // list or not at all if no such candidate exists 705 // list or not at all if no such candidate exists
767 std::vector<std::string>::iterator iter; 706 std::vector<std::string>::iterator iter;
768 for (iter = accept_langs_list.begin(); 707 for (iter = accept_langs_list.begin();
769 iter != accept_langs_list.end(); ++iter) { 708 iter != accept_langs_list.end(); ++iter) {
770 std::string lang_code = GetLanguageCode(*iter); 709 std::string lang_code = TranslateDownloadManager::GetLanguageCode(*iter);
771 if (IsSupportedLanguage(lang_code)) 710 if (TranslateDownloadManager::IsSupportedLanguage(lang_code))
772 return lang_code; 711 return lang_code;
773 } 712 }
774 return std::string(); 713 return std::string();
775 } 714 }
776 715
777 // static 716 // static
778 std::string TranslateManager::GetAutoTargetLanguage( 717 std::string TranslateManager::GetAutoTargetLanguage(
779 const std::string& original_language, 718 const std::string& original_language,
780 PrefService* prefs) { 719 PrefService* prefs) {
781 std::string auto_target_lang; 720 std::string auto_target_lang;
782 if (TranslatePrefs::ShouldAutoTranslate(prefs, original_language, 721 if (TranslatePrefs::ShouldAutoTranslate(prefs, original_language,
783 &auto_target_lang)) { 722 &auto_target_lang)) {
784 // We need to confirm that the saved target language is still supported. 723 // We need to confirm that the saved target language is still supported.
785 // Also, GetLanguageCode will take care of removing country code if any. 724 // Also, GetLanguageCode will take care of removing country code if any.
786 auto_target_lang = GetLanguageCode(auto_target_lang); 725 auto_target_lang =
787 if (IsSupportedLanguage(auto_target_lang)) 726 TranslateDownloadManager::GetLanguageCode(auto_target_lang);
727 if (TranslateDownloadManager::IsSupportedLanguage(auto_target_lang))
788 return auto_target_lang; 728 return auto_target_lang;
789 } 729 }
790 return std::string(); 730 return std::string();
791 } 731 }
792 732
793 // static 733 // static
794 bool TranslateManager::IsTranslateBubbleEnabled() { 734 bool TranslateManager::IsTranslateBubbleEnabled() {
795 #if defined(USE_AURA) 735 #if defined(USE_AURA)
796 return !use_infobar_; 736 return !use_infobar_;
797 #elif defined(OS_MACOSX) 737 #elif defined(OS_MACOSX)
(...skipping 19 matching lines...) Expand all
817 // so we are more aggressive about showing the shortcut to never translate. 757 // so we are more aggressive about showing the shortcut to never translate.
818 #if defined(OS_ANDROID) 758 #if defined(OS_ANDROID)
819 config.never_translate_min_count = 1; 759 config.never_translate_min_count = 1;
820 #else 760 #else
821 config.never_translate_min_count = 3; 761 config.never_translate_min_count = 3;
822 #endif // defined(OS_ANDROID) 762 #endif // defined(OS_ANDROID)
823 763
824 config.always_translate_min_count = 3; 764 config.always_translate_min_count = 3;
825 return config; 765 return config;
826 } 766 }
OLDNEW
« no previous file with comments | « chrome/browser/translate/translate_manager.h ('k') | chrome/browser/translate/translate_manager_browsertest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698