summaryrefslogtreecommitdiffstats
path: root/chrome/browser
diff options
context:
space:
mode:
authorjcampan@chromium.org <jcampan@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2010-01-31 22:38:44 +0000
committerjcampan@chromium.org <jcampan@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2010-01-31 22:38:44 +0000
commitcbd94cfe486f3f012e63bd4c2bf338da4f2ff9bc (patch)
treeaf91ba96d5f2170bba3f63fbbe8726dbaf3a2c41 /chrome/browser
parent9ee73628f9d8ec2998b6060805dac0efd825af44 (diff)
downloadchromium_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.cc8
-rw-r--r--chrome/browser/extensions/extension_tabs_module.cc2
-rw-r--r--chrome/browser/renderer_host/render_view_host.cc12
-rw-r--r--chrome/browser/renderer_host/render_view_host.h3
-rw-r--r--chrome/browser/renderer_host/render_view_host_delegate.h5
-rw-r--r--chrome/browser/tab_contents/tab_contents.cc36
-rw-r--r--chrome/browser/tab_contents/tab_contents.h7
-rw-r--r--chrome/browser/translate/translate_infobars_delegates.cc5
-rw-r--r--chrome/browser/translate/translate_manager.cc113
-rw-r--r--chrome/browser/translate/translate_manager.h47
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_