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

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

Issue 15295004: Translate: enable against unknown languages with server side detection (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: (rebase for dcommit) Created 7 years, 7 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 | Annotate | Revision Log
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/compiler_specific.h" 9 #include "base/compiler_specific.h"
10 #include "base/json/json_reader.h" 10 #include "base/json/json_reader.h"
(...skipping 13 matching lines...) Expand all
24 #include "chrome/browser/tab_contents/tab_util.h" 24 #include "chrome/browser/tab_contents/tab_util.h"
25 #include "chrome/browser/translate/page_translated_details.h" 25 #include "chrome/browser/translate/page_translated_details.h"
26 #include "chrome/browser/translate/translate_infobar_delegate.h" 26 #include "chrome/browser/translate/translate_infobar_delegate.h"
27 #include "chrome/browser/translate/translate_manager_metrics.h" 27 #include "chrome/browser/translate/translate_manager_metrics.h"
28 #include "chrome/browser/translate/translate_prefs.h" 28 #include "chrome/browser/translate/translate_prefs.h"
29 #include "chrome/browser/translate/translate_tab_helper.h" 29 #include "chrome/browser/translate/translate_tab_helper.h"
30 #include "chrome/browser/ui/browser.h" 30 #include "chrome/browser/ui/browser.h"
31 #include "chrome/browser/ui/browser_finder.h" 31 #include "chrome/browser/ui/browser_finder.h"
32 #include "chrome/browser/ui/browser_tabstrip.h" 32 #include "chrome/browser/ui/browser_tabstrip.h"
33 #include "chrome/browser/ui/tabs/tab_strip_model.h" 33 #include "chrome/browser/ui/tabs/tab_strip_model.h"
34 #include "chrome/common/chrome_constants.h"
34 #include "chrome/common/chrome_notification_types.h" 35 #include "chrome/common/chrome_notification_types.h"
35 #include "chrome/common/chrome_switches.h" 36 #include "chrome/common/chrome_switches.h"
36 #include "chrome/common/language_detection_details.h" 37 #include "chrome/common/language_detection_details.h"
37 #include "chrome/common/pref_names.h" 38 #include "chrome/common/pref_names.h"
38 #include "chrome/common/render_messages.h" 39 #include "chrome/common/render_messages.h"
39 #include "chrome/common/translate_errors.h" 40 #include "chrome/common/translate_errors.h"
40 #include "chrome/common/url_constants.h" 41 #include "chrome/common/url_constants.h"
41 #include "content/public/browser/navigation_controller.h" 42 #include "content/public/browser/navigation_controller.h"
42 #include "content/public/browser/navigation_details.h" 43 #include "content/public/browser/navigation_details.h"
43 #include "content/public/browser/navigation_entry.h" 44 #include "content/public/browser/navigation_entry.h"
(...skipping 627 matching lines...) Expand 10 before | Expand all | Expand 10 after
671 weak_method_factory_.GetWeakPtr(), process_id, 672 weak_method_factory_.GetWeakPtr(), process_id,
672 render_id, page_lang, ++attempt), 673 render_id, page_lang, ++attempt),
673 base::TimeDelta::FromMilliseconds(backoff)); 674 base::TimeDelta::FromMilliseconds(backoff));
674 return; 675 return;
675 } 676 }
676 677
677 InitiateTranslation(web_contents, GetLanguageCode(page_lang)); 678 InitiateTranslation(web_contents, GetLanguageCode(page_lang));
678 } 679 }
679 680
680 void TranslateManager::TranslatePage(WebContents* web_contents, 681 void TranslateManager::TranslatePage(WebContents* web_contents,
681 const std::string& source_lang, 682 const std::string& original_source_lang,
682 const std::string& target_lang) { 683 const std::string& target_lang) {
683 NavigationEntry* entry = web_contents->GetController().GetActiveEntry(); 684 NavigationEntry* entry = web_contents->GetController().GetActiveEntry();
684 if (!entry) { 685 if (!entry) {
685 NOTREACHED(); 686 NOTREACHED();
686 return; 687 return;
687 } 688 }
688 689
689 Profile* profile = 690 Profile* profile =
690 Profile::FromBrowserContext(web_contents->GetBrowserContext()); 691 Profile::FromBrowserContext(web_contents->GetBrowserContext());
691 692
693 std::string source_lang(original_source_lang);
694
695 // Translation can be kicked by context menu against unsupported languages.
696 // Unsupported language strings should be replaced with
697 // kUnknownLanguageCode in order to send a translation request with enabling
698 // server side auto language detection.
699 if (!IsSupportedLanguage(source_lang))
700 source_lang = std::string(chrome::kUnknownLanguageCode);
701
692 TranslateInfoBarDelegate::Create( 702 TranslateInfoBarDelegate::Create(
693 InfoBarService::FromWebContents(web_contents), true, 703 InfoBarService::FromWebContents(web_contents), true,
694 TranslateInfoBarDelegate::TRANSLATING, TranslateErrors::NONE, 704 TranslateInfoBarDelegate::TRANSLATING, TranslateErrors::NONE,
695 profile->GetPrefs(), ShortcutConfig(), source_lang, target_lang); 705 profile->GetPrefs(), ShortcutConfig(), source_lang, target_lang);
696 706
697 if (!translate_script_.empty()) { 707 if (!translate_script_.empty()) {
698 DoTranslatePage(web_contents, translate_script_, source_lang, target_lang); 708 DoTranslatePage(web_contents, translate_script_, source_lang, target_lang);
699 return; 709 return;
700 } 710 }
701 711
(...skipping 73 matching lines...) Expand 10 before | Expand all | Expand 10 after
775 785
776 translate_tab_helper->language_state().set_translation_pending(true); 786 translate_tab_helper->language_state().set_translation_pending(true);
777 web_contents->GetRenderViewHost()->Send(new ChromeViewMsg_TranslatePage( 787 web_contents->GetRenderViewHost()->Send(new ChromeViewMsg_TranslatePage(
778 web_contents->GetRenderViewHost()->GetRoutingID(), entry->GetPageID(), 788 web_contents->GetRenderViewHost()->GetRoutingID(), entry->GetPageID(),
779 translate_script, source_lang, target_lang)); 789 translate_script, source_lang, target_lang));
780 } 790 }
781 791
782 void TranslateManager::PageTranslated(WebContents* web_contents, 792 void TranslateManager::PageTranslated(WebContents* web_contents,
783 PageTranslatedDetails* details) { 793 PageTranslatedDetails* details) {
784 if ((details->error_type == TranslateErrors::NONE) && 794 if ((details->error_type == TranslateErrors::NONE) &&
795 details->source_language != chrome::kUnknownLanguageCode &&
785 !IsSupportedLanguage(details->source_language)) { 796 !IsSupportedLanguage(details->source_language)) {
786 // TODO(jcivelli): http://crbug.com/9390 We should change the "after 797 // TODO(toyoshim): http://crbug.com/242142 We should check if
787 // translate" infobar to support unknown as the original 798 // l10n_util::GetDisplayNameForLocale() support |source_language| here.
788 // language. 799 // Also, following metrics should be modified to have language code.
789 TranslateManagerMetrics::ReportUnsupportedLanguage(); 800 TranslateManagerMetrics::ReportUnsupportedLanguage();
790 details->error_type = TranslateErrors::UNSUPPORTED_LANGUAGE; 801 details->error_type = TranslateErrors::UNSUPPORTED_LANGUAGE;
791 } 802 }
792 803
793 Profile* profile = 804 Profile* profile =
794 Profile::FromBrowserContext(web_contents->GetBrowserContext()); 805 Profile::FromBrowserContext(web_contents->GetBrowserContext());
795 PrefService* prefs = profile->GetPrefs(); 806 PrefService* prefs = profile->GetPrefs();
796 TranslateInfoBarDelegate::Create( 807 TranslateInfoBarDelegate::Create(
797 InfoBarService::FromWebContents(web_contents), true, 808 InfoBarService::FromWebContents(web_contents), true,
798 (details->error_type == TranslateErrors::NONE) ? 809 (details->error_type == TranslateErrors::NONE) ?
(...skipping 185 matching lines...) Expand 10 before | Expand all | Expand 10 after
984 // reason so we are more aggressive showing the shortcuts for never translate. 995 // reason so we are more aggressive showing the shortcuts for never translate.
985 #if defined(OS_ANDROID) 996 #if defined(OS_ANDROID)
986 config.never_translate_min_count = 1; 997 config.never_translate_min_count = 1;
987 #else 998 #else
988 config.never_translate_min_count = 3; 999 config.never_translate_min_count = 3;
989 #endif // defined(OS_ANDROID) 1000 #endif // defined(OS_ANDROID)
990 1001
991 config.always_translate_min_count = 3; 1002 config.always_translate_min_count = 3;
992 return config; 1003 return config;
993 } 1004 }
OLDNEW
« no previous file with comments | « chrome/browser/translate/translate_infobar_delegate.cc ('k') | chrome/browser/translate/translate_manager_browsertest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698