diff options
author | jcampan@chromium.org <jcampan@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2010-01-31 22:38:44 +0000 |
---|---|---|
committer | jcampan@chromium.org <jcampan@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2010-01-31 22:38:44 +0000 |
commit | cbd94cfe486f3f012e63bd4c2bf338da4f2ff9bc (patch) | |
tree | af91ba96d5f2170bba3f63fbbe8726dbaf3a2c41 /chrome/browser | |
parent | 9ee73628f9d8ec2998b6060805dac0efd825af44 (diff) | |
download | chromium_src-cbd94cfe486f3f012e63bd4c2bf338da4f2ff9bc.zip chromium_src-cbd94cfe486f3f012e63bd4c2bf338da4f2ff9bc.tar.gz chromium_src-cbd94cfe486f3f012e63bd4c2bf338da4f2ff9bc.tar.bz2 |
Revert 37674 - Hooking the UI part to the translate feature.
Review URL: http://codereview.chromium.org/549217
TBR=jcampan@chromium.org
Review URL: http://codereview.chromium.org/555195
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@37675 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome/browser')
-rw-r--r-- | chrome/browser/browser_main.cc | 8 | ||||
-rw-r--r-- | chrome/browser/extensions/extension_tabs_module.cc | 2 | ||||
-rw-r--r-- | chrome/browser/renderer_host/render_view_host.cc | 12 | ||||
-rw-r--r-- | chrome/browser/renderer_host/render_view_host.h | 3 | ||||
-rw-r--r-- | chrome/browser/renderer_host/render_view_host_delegate.h | 5 | ||||
-rw-r--r-- | chrome/browser/tab_contents/tab_contents.cc | 36 | ||||
-rw-r--r-- | chrome/browser/tab_contents/tab_contents.h | 7 | ||||
-rw-r--r-- | chrome/browser/translate/translate_infobars_delegates.cc | 5 | ||||
-rw-r--r-- | chrome/browser/translate/translate_manager.cc | 113 | ||||
-rw-r--r-- | chrome/browser/translate/translate_manager.h | 47 |
10 files changed, 19 insertions, 219 deletions
diff --git a/chrome/browser/browser_main.cc b/chrome/browser/browser_main.cc index a0ba774..42d2c14 100644 --- a/chrome/browser/browser_main.cc +++ b/chrome/browser/browser_main.cc @@ -46,7 +46,6 @@ #include "chrome/browser/profile_manager.h" #include "chrome/browser/renderer_host/resource_dispatcher_host.h" #include "chrome/browser/shell_integration.h" -#include "chrome/browser/translate/translate_manager.h" #include "chrome/browser/user_data_manager.h" #include "chrome/common/chrome_constants.h" #include "chrome/common/chrome_paths.h" @@ -804,13 +803,6 @@ int BrowserMain(const MainFunctionParams& parameters) { process_singleton.Create(); -#if defined(OS_WIN) - // Create the TranslateManager singleton. - // TODO(jcampan): enable on non Windows platforms when the info-bars are - // implemented. - Singleton<TranslateManager>::get(); -#endif - // Show the First Run UI if this is the first time Chrome has been run on // this computer, or we're being compelled to do so by a command line flag. // Note that this be done _after_ the PrefService is initialized and all diff --git a/chrome/browser/extensions/extension_tabs_module.cc b/chrome/browser/extensions/extension_tabs_module.cc index f85f054..7b9aef0 100644 --- a/chrome/browser/extensions/extension_tabs_module.cc +++ b/chrome/browser/extensions/extension_tabs_module.cc @@ -897,7 +897,7 @@ bool DetectTabLanguageFunction::RunImpl() { // The tab contents does not know its language yet. Let's wait until it // receives it, or until the tab is closed/navigates to some other page. registrar_.Add(this, NotificationType::TAB_LANGUAGE_DETERMINED, - Source<TabContents>(contents)); + Source<RenderViewHost>(contents->render_view_host())); registrar_.Add(this, NotificationType::TAB_CLOSING, Source<NavigationController>(&(contents->controller()))); registrar_.Add(this, NotificationType::NAV_ENTRY_COMMITTED, diff --git a/chrome/browser/renderer_host/render_view_host.cc b/chrome/browser/renderer_host/render_view_host.cc index 820b575..cb0eddf 100644 --- a/chrome/browser/renderer_host/render_view_host.cc +++ b/chrome/browser/renderer_host/render_view_host.cc @@ -825,7 +825,6 @@ void RenderViewHost::OnMessageReceived(const IPC::Message& msg) { OnAccessibilityFocusChange) IPC_MESSAGE_HANDLER(ViewHostMsg_OnCSSInserted, OnCSSInserted) IPC_MESSAGE_HANDLER(ViewHostMsg_PageContents, OnPageContents) - IPC_MESSAGE_HANDLER(ViewHostMsg_PageTranslated, OnPageTranslated) // Have the super handle all other messages. IPC_MESSAGE_UNHANDLED(RenderWidgetHost::OnMessageReceived(msg)) IPC_END_MESSAGE_MAP_EX() @@ -1795,14 +1794,3 @@ void RenderViewHost::OnPageContents(const GURL& url, integration_delegate->OnPageContents(url, process()->id(), page_id, contents, language); } - -void RenderViewHost::OnPageTranslated(int32 page_id, - const std::string& original_lang, - const std::string& translated_lang) { - RenderViewHostDelegate::BrowserIntegration* integration_delegate = - delegate_->GetBrowserIntegrationDelegate(); - if (!integration_delegate) - return; - integration_delegate->OnPageTranslated(page_id, - original_lang, translated_lang); -} diff --git a/chrome/browser/renderer_host/render_view_host.h b/chrome/browser/renderer_host/render_view_host.h index 764be45..5890ae7 100644 --- a/chrome/browser/renderer_host/render_view_host.h +++ b/chrome/browser/renderer_host/render_view_host.h @@ -606,9 +606,6 @@ class RenderViewHost : public RenderWidgetHost { int32 page_id, const std::wstring& contents, const std::string& language); - void OnPageTranslated(int32 page_id, - const std::string& original_lang, - const std::string& translated_lang); private: friend class TestRenderViewHost; diff --git a/chrome/browser/renderer_host/render_view_host_delegate.h b/chrome/browser/renderer_host/render_view_host_delegate.h index 892aa86..680ff0f 100644 --- a/chrome/browser/renderer_host/render_view_host_delegate.h +++ b/chrome/browser/renderer_host/render_view_host_delegate.h @@ -223,11 +223,6 @@ class RenderViewHostDelegate { int32 page_id, const std::wstring& contents, const std::string& language) = 0; - - // Notification that the page has been translated. - virtual void OnPageTranslated(int32 page_id, - const std::string& original_lang, - const std::string& translated_lang) = 0; }; // Resource ------------------------------------------------------------------ diff --git a/chrome/browser/tab_contents/tab_contents.cc b/chrome/browser/tab_contents/tab_contents.cc index 4641f3b..a575ae5 100644 --- a/chrome/browser/tab_contents/tab_contents.cc +++ b/chrome/browser/tab_contents/tab_contents.cc @@ -772,16 +772,6 @@ void TabContents::ShowPageInfo(const GURL& url, delegate_->ShowPageInfo(profile(), url, ssl, show_history); } -void TabContents::TranslatePage(const std::string& source_lang, - const std::string& target_lang) { - NavigationEntry* entry = controller_.GetActiveEntry(); - if (!entry) { - NOTREACHED(); - return; - } - render_view_host()->TranslatePage(entry->page_id(), source_lang, target_lang); -} - ConstrainedWindow* TabContents::CreateConstrainedDialog( ConstrainedWindowDelegate* delegate) { ConstrainedWindow* window = @@ -1823,24 +1813,26 @@ void TabContents::OnPageContents(const GURL& url, entry->set_language(language); } + if (CommandLine::ForCurrentProcess()->HasSwitch( + switches::kAutoPageTranslate) && + TranslationService::IsTranslationEnabled()) { + std::string locale = g_browser_process->GetApplicationLocale(); + if (!locale.empty() && locale != language) { + // Don't translate the NTP, download page, history... + if (entry && !entry->url().SchemeIs("chrome") && + TranslationService::ShouldTranslatePage(language, locale)) { + render_view_host()->TranslatePage(entry->page_id(), language, locale); + } + } + } + std::string lang = language; NotificationService::current()->Notify( NotificationType::TAB_LANGUAGE_DETERMINED, - Source<TabContents>(this), + Source<RenderViewHost>(render_view_host()), Details<std::string>(&lang)); } -void TabContents::OnPageTranslated(int32 page_id, - const std::string& original_lang, - const std::string& translated_lang) { - std::pair<std::string, std::string> lang_pair = - std::make_pair(original_lang, translated_lang); - NotificationService::current()->Notify( - NotificationType::PAGE_TRANSLATED, - Source<TabContents>(this), - Details<std::pair<std::string, std::string> >(&lang_pair)); -} - void TabContents::DidStartProvisionalLoadForFrame( RenderViewHost* render_view_host, bool is_main_frame, diff --git a/chrome/browser/tab_contents/tab_contents.h b/chrome/browser/tab_contents/tab_contents.h index e42c1fb..9586f88 100644 --- a/chrome/browser/tab_contents/tab_contents.h +++ b/chrome/browser/tab_contents/tab_contents.h @@ -350,10 +350,6 @@ class TabContents : public PageNavigator, const NavigationEntry::SSLStatus& ssl, bool show_history); - // Translates the page contents from |source_lang| to |target_lang|. - void TranslatePage(const std::string& source_lang, - const std::string& target_lang); - // Window management --------------------------------------------------------- // Create a new window constrained to this TabContents' clip and visibility. @@ -831,9 +827,6 @@ class TabContents : public PageNavigator, int32 page_id, const std::wstring& contents, const std::string& language); - virtual void OnPageTranslated(int32 page_id, - const std::string& original_lang, - const std::string& translated_lang); // RenderViewHostDelegate::Resource implementation. virtual void DidStartProvisionalLoadForFrame(RenderViewHost* render_view_host, diff --git a/chrome/browser/translate/translate_infobars_delegates.cc b/chrome/browser/translate/translate_infobars_delegates.cc index 15d165b..ecf0a95 100644 --- a/chrome/browser/translate/translate_infobars_delegates.cc +++ b/chrome/browser/translate/translate_infobars_delegates.cc @@ -93,7 +93,10 @@ void TranslateInfoBarDelegate::GetAvailableTargetLanguages( } void TranslateInfoBarDelegate::Translate() { - tab_contents_->TranslatePage(original_language_, target_language_); + // TODO(kuan): Call actual Translate method. +/* + Translate(WideToUTF8(original_language()), WideToUTF8(target_language())); +*/ } bool TranslateInfoBarDelegate::IsLanguageBlacklisted() { diff --git a/chrome/browser/translate/translate_manager.cc b/chrome/browser/translate/translate_manager.cc deleted file mode 100644 index 5a7938a..0000000 --- a/chrome/browser/translate/translate_manager.cc +++ /dev/null @@ -1,113 +0,0 @@ -// Copyright (c) 2010 The Chromium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -#include "chrome/browser/translate/translate_manager.h" - -#include "chrome/browser/browser_process.h" -#include "chrome/browser/profile.h" -#include "chrome/browser/renderer_host/translation_service.h" -#include "chrome/browser/tab_contents/navigation_controller.h" -#include "chrome/browser/tab_contents/navigation_entry.h" -#include "chrome/browser/tab_contents/tab_contents.h" -#include "chrome/browser/translate/translate_infobars_delegates.h" -#include "chrome/browser/translate/translate_prefs.h" -#include "chrome/common/notification_details.h" -#include "chrome/common/notification_service.h" -#include "chrome/common/notification_source.h" -#include "chrome/common/notification_type.h" -#include "chrome/common/pref_service.h" - -TranslateManager::~TranslateManager() { -} - -void TranslateManager::Observe(NotificationType type, - const NotificationSource& source, - const NotificationDetails& details) { - switch (type.value) { - case NotificationType::NAV_ENTRY_COMMITTED: { - // We have navigated to a new page. - NavigationController* controller = - Source<NavigationController>(source).ptr(); - NavigationEntry* entry = controller->GetActiveEntry(); - if (!entry->language().empty()) { - // The language for that page is known (it must be a back/forward - // navigation to a page we already visited). - InitiateTranslation(controller->tab_contents(), entry->language()); - } - break; - } - case NotificationType::TAB_LANGUAGE_DETERMINED: { - TabContents* tab = Source<TabContents>(source).ptr(); - std::string language = *(Details<std::string>(details).ptr()); - InitiateTranslation(tab, language); - break; - } - case NotificationType::PAGE_TRANSLATED: { - TabContents* tab = Source<TabContents>(source).ptr(); - std::pair<std::string, std::string>* language_pair = - (Details<std::pair<std::string, std::string> >(details).ptr()); - PrefService* prefs = GetPrefService(tab); - tab->AddInfoBar(new AfterTranslateInfoBarDelegate(tab, prefs, - language_pair->first, - language_pair->second)); - break; - } - default: - NOTREACHED(); - } -} - -TranslateManager::TranslateManager() { - if (!TranslationService::IsTranslationEnabled()) - return; - - notification_registrar_.Add(this, NotificationType::NAV_ENTRY_COMMITTED, - NotificationService::AllSources()); - notification_registrar_.Add(this, NotificationType::TAB_LANGUAGE_DETERMINED, - NotificationService::AllSources()); - notification_registrar_.Add(this, NotificationType::PAGE_TRANSLATED, - NotificationService::AllSources()); -} - -void TranslateManager::InitiateTranslation(TabContents* tab, - const std::string& page_lang) { - PrefService* prefs = GetPrefService(tab); - NavigationEntry* entry = tab->controller().GetActiveEntry(); - if (!entry) { - NOTREACHED(); - return; - } - - std::string chrome_lang = g_browser_process->GetApplicationLocale(); - - // We don't want to translate: - // - any Chrome specific page (New Tab Page, Download, History... pages). - // - similar languages (ex: en-US to en). - // - any user black-listed URLs or user selected language combination. - if (entry->url().SchemeIs("chrome") || page_lang == chrome_lang || - !TranslationService::ShouldTranslatePage(page_lang, chrome_lang) || - !TranslatePrefs::CanTranslate(prefs, page_lang, entry->url())) { - return; - } - if (TranslatePrefs::ShouldAutoTranslate(prefs, page_lang, chrome_lang)) { - // The user has previously select "always translate" for this language. - tab->TranslatePage(page_lang, chrome_lang); - return; - } - - // Prompts the user if he/she wants the page translated. - tab->AddInfoBar(new BeforeTranslateInfoBarDelegate(tab, prefs, - entry->url(), - page_lang, chrome_lang)); -} - -PrefService* TranslateManager::GetPrefService(TabContents* tab) { - PrefService* prefs = NULL; - if (tab->profile()) - prefs = tab->profile()->GetPrefs(); - if (prefs) - return prefs; - - return g_browser_process->local_state(); -} diff --git a/chrome/browser/translate/translate_manager.h b/chrome/browser/translate/translate_manager.h deleted file mode 100644 index b51f089..0000000 --- a/chrome/browser/translate/translate_manager.h +++ /dev/null @@ -1,47 +0,0 @@ -// Copyright (c) 2010 The Chromium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -#ifndef CHROME_BROWSER_TRANSLATE_TRANSLATE_MANAGER_H_ -#define CHROME_BROWSER_TRANSLATE_TRANSLATE_MANAGER_H_ - -#include <string> - -#include "base/singleton.h" -#include "chrome/common/notification_observer.h" -#include "chrome/common/notification_registrar.h" - -class PrefService; -class TabContents; - -// The TranslateManager class is responsible for showing an info-bar when a page -// in a language different than the user language is loaded. It triggers the -// page translation the user requests. -// It is a singleton. - -class TranslateManager : public NotificationObserver { - public: - virtual ~TranslateManager(); - - // NotificationObserver implementation: - virtual void Observe(NotificationType type, - const NotificationSource& source, - const NotificationDetails& details); - private: - friend struct DefaultSingletonTraits<TranslateManager>; - - TranslateManager(); - - // Starts the translation process on |tab| containing the page in the - // |page_lang| language. - void InitiateTranslation(TabContents* tab, const std::string& page_lang); - - // Convenience method that retrieves the PrefService. - PrefService* GetPrefService(TabContents* tab); - - NotificationRegistrar notification_registrar_; - - DISALLOW_COPY_AND_ASSIGN(TranslateManager); -}; - -#endif // CHROME_BROWSER_TRANSLATE_TRANSLATE_MANAGER_H_ |