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

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: update 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 12 matching lines...) Expand all
23 #include "chrome/browser/tab_contents/tab_util.h" 23 #include "chrome/browser/tab_contents/tab_util.h"
24 #include "chrome/browser/translate/page_translated_details.h" 24 #include "chrome/browser/translate/page_translated_details.h"
25 #include "chrome/browser/translate/translate_infobar_delegate.h" 25 #include "chrome/browser/translate/translate_infobar_delegate.h"
26 #include "chrome/browser/translate/translate_manager_metrics.h" 26 #include "chrome/browser/translate/translate_manager_metrics.h"
27 #include "chrome/browser/translate/translate_prefs.h" 27 #include "chrome/browser/translate/translate_prefs.h"
28 #include "chrome/browser/translate/translate_tab_helper.h" 28 #include "chrome/browser/translate/translate_tab_helper.h"
29 #include "chrome/browser/ui/browser.h" 29 #include "chrome/browser/ui/browser.h"
30 #include "chrome/browser/ui/browser_finder.h" 30 #include "chrome/browser/ui/browser_finder.h"
31 #include "chrome/browser/ui/browser_tabstrip.h" 31 #include "chrome/browser/ui/browser_tabstrip.h"
32 #include "chrome/browser/ui/tabs/tab_strip_model.h" 32 #include "chrome/browser/ui/tabs/tab_strip_model.h"
33 #include "chrome/common/chrome_constants.h"
33 #include "chrome/common/chrome_notification_types.h" 34 #include "chrome/common/chrome_notification_types.h"
34 #include "chrome/common/chrome_switches.h" 35 #include "chrome/common/chrome_switches.h"
35 #include "chrome/common/pref_names.h" 36 #include "chrome/common/pref_names.h"
36 #include "chrome/common/render_messages.h" 37 #include "chrome/common/render_messages.h"
37 #include "chrome/common/translate_errors.h" 38 #include "chrome/common/translate_errors.h"
38 #include "chrome/common/url_constants.h" 39 #include "chrome/common/url_constants.h"
39 #include "content/public/browser/navigation_controller.h" 40 #include "content/public/browser/navigation_controller.h"
40 #include "content/public/browser/navigation_details.h" 41 #include "content/public/browser/navigation_details.h"
41 #include "content/public/browser/navigation_entry.h" 42 #include "content/public/browser/navigation_entry.h"
42 #include "content/public/browser/notification_details.h" 43 #include "content/public/browser/notification_details.h"
(...skipping 608 matching lines...) Expand 10 before | Expand all | Expand 10 after
651 weak_method_factory_.GetWeakPtr(), process_id, 652 weak_method_factory_.GetWeakPtr(), process_id,
652 render_id, page_lang, ++attempt), 653 render_id, page_lang, ++attempt),
653 base::TimeDelta::FromMilliseconds(backoff)); 654 base::TimeDelta::FromMilliseconds(backoff));
654 return; 655 return;
655 } 656 }
656 657
657 InitiateTranslation(web_contents, GetLanguageCode(page_lang)); 658 InitiateTranslation(web_contents, GetLanguageCode(page_lang));
658 } 659 }
659 660
660 void TranslateManager::TranslatePage(WebContents* web_contents, 661 void TranslateManager::TranslatePage(WebContents* web_contents,
661 const std::string& source_lang, 662 const std::string& original_source_lang,
662 const std::string& target_lang) { 663 const std::string& target_lang) {
663 NavigationEntry* entry = web_contents->GetController().GetActiveEntry(); 664 NavigationEntry* entry = web_contents->GetController().GetActiveEntry();
664 if (!entry) { 665 if (!entry) {
665 NOTREACHED(); 666 NOTREACHED();
666 return; 667 return;
667 } 668 }
668 669
669 Profile* profile = 670 Profile* profile =
670 Profile::FromBrowserContext(web_contents->GetBrowserContext()); 671 Profile::FromBrowserContext(web_contents->GetBrowserContext());
671 672
673 std::string source_lang(original_source_lang);
674
675 // Translation can be kicked by context menu against unsupported languages.
676 // Unsupported language strings should be replaced with
677 // kUnknownLanguageCode in order to send a translation request with enabling
678 // server side auto language detection.
679 if (!IsSupportedLanguage(source_lang))
680 source_lang = std::string(chrome::kUnknownLanguageCode);
681
672 TranslateInfoBarDelegate::Create( 682 TranslateInfoBarDelegate::Create(
673 InfoBarService::FromWebContents(web_contents), true, 683 InfoBarService::FromWebContents(web_contents), true,
674 TranslateInfoBarDelegate::TRANSLATING, TranslateErrors::NONE, 684 TranslateInfoBarDelegate::TRANSLATING, TranslateErrors::NONE,
675 profile->GetPrefs(), ShortcutConfig(), source_lang, target_lang); 685 profile->GetPrefs(), ShortcutConfig(), source_lang, target_lang);
676 686
677 if (!translate_script_.empty()) { 687 if (!translate_script_.empty()) {
678 DoTranslatePage(web_contents, translate_script_, source_lang, target_lang); 688 DoTranslatePage(web_contents, translate_script_, source_lang, target_lang);
679 return; 689 return;
680 } 690 }
681 691
(...skipping 73 matching lines...) Expand 10 before | Expand all | Expand 10 after
755 765
756 translate_tab_helper->language_state().set_translation_pending(true); 766 translate_tab_helper->language_state().set_translation_pending(true);
757 web_contents->GetRenderViewHost()->Send(new ChromeViewMsg_TranslatePage( 767 web_contents->GetRenderViewHost()->Send(new ChromeViewMsg_TranslatePage(
758 web_contents->GetRenderViewHost()->GetRoutingID(), entry->GetPageID(), 768 web_contents->GetRenderViewHost()->GetRoutingID(), entry->GetPageID(),
759 translate_script, source_lang, target_lang)); 769 translate_script, source_lang, target_lang));
760 } 770 }
761 771
762 void TranslateManager::PageTranslated(WebContents* web_contents, 772 void TranslateManager::PageTranslated(WebContents* web_contents,
763 PageTranslatedDetails* details) { 773 PageTranslatedDetails* details) {
764 if ((details->error_type == TranslateErrors::NONE) && 774 if ((details->error_type == TranslateErrors::NONE) &&
775 details->source_language != chrome::kUnknownLanguageCode &&
765 !IsSupportedLanguage(details->source_language)) { 776 !IsSupportedLanguage(details->source_language)) {
766 // TODO(jcivelli): http://crbug.com/9390 We should change the "after 777 // TODO(jcivelli): http://crbug.com/48918 We should change the "after
MAD 2013/05/17 17:33:11 Do we still need this TODO? The bug you refer to i
Takashi Toyoshima 2013/05/17 17:57:07 It looks fine to remove this TODO now. Or we shoul
MAD 2013/05/17 18:42:25 OK, so for now, can you replace jcivelli with your
Takashi Toyoshima 2013/05/20 06:56:08 Done.
767 // translate" infobar to support unknown as the original 778 // translate" infobar to support unknown as the original
768 // language. 779 // language.
769 TranslateManagerMetrics::ReportUnsupportedLanguage(); 780 TranslateManagerMetrics::ReportUnsupportedLanguage();
770 details->error_type = TranslateErrors::UNSUPPORTED_LANGUAGE; 781 details->error_type = TranslateErrors::UNSUPPORTED_LANGUAGE;
771 } 782 }
772 Profile* profile = 783 Profile* profile =
773 Profile::FromBrowserContext(web_contents->GetBrowserContext()); 784 Profile::FromBrowserContext(web_contents->GetBrowserContext());
774 PrefService* prefs = profile->GetPrefs(); 785 PrefService* prefs = profile->GetPrefs();
775 TranslateInfoBarDelegate::Create( 786 TranslateInfoBarDelegate::Create(
776 InfoBarService::FromWebContents(web_contents), true, 787 InfoBarService::FromWebContents(web_contents), true,
(...skipping 186 matching lines...) Expand 10 before | Expand all | Expand 10 after
963 // reason so we are more aggressive showing the shortcuts for never translate. 974 // reason so we are more aggressive showing the shortcuts for never translate.
964 #if defined(OS_ANDROID) 975 #if defined(OS_ANDROID)
965 config.never_translate_min_count = 1; 976 config.never_translate_min_count = 1;
966 #else 977 #else
967 config.never_translate_min_count = 3; 978 config.never_translate_min_count = 3;
968 #endif // defined(OS_ANDROID) 979 #endif // defined(OS_ANDROID)
969 980
970 config.always_translate_min_count = 3; 981 config.always_translate_min_count = 3;
971 return config; 982 return config;
972 } 983 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698