summaryrefslogtreecommitdiffstats
path: root/chrome/browser/translate
diff options
context:
space:
mode:
authorjcampan@chromium.org <jcampan@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2010-02-26 17:42:13 +0000
committerjcampan@chromium.org <jcampan@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2010-02-26 17:42:13 +0000
commit0908acd972c01bf7f3915575b5b53d78a0ee3c7b (patch)
tree82fd2d2b47c3e5226840e9a6c651ddea0d89ef11 /chrome/browser/translate
parentcab7a1afc7edf2a78154b7dc3a42218d943d8195 (diff)
downloadchromium_src-0908acd972c01bf7f3915575b5b53d78a0ee3c7b.zip
chromium_src-0908acd972c01bf7f3915575b5b53d78a0ee3c7b.tar.gz
chromium_src-0908acd972c01bf7f3915575b5b53d78a0ee3c7b.tar.bz2
Adding a preference to turn off the translate feature.
BUG=None TEST=Visit a page in a language other than the Chrome's language. A translate infobar should be shown. In the options/Under the Hood tab, unselect "Offer to translate pages that aren't in a language I read". Navigate again to a page in a non Chrome-UI language. No translate infobar should be shown. Review URL: http://codereview.chromium.org/661095 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@40128 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome/browser/translate')
-rw-r--r--chrome/browser/translate/translate_manager.cc3
-rw-r--r--chrome/browser/translate/translate_manager_unittest.cc30
2 files changed, 33 insertions, 0 deletions
diff --git a/chrome/browser/translate/translate_manager.cc b/chrome/browser/translate/translate_manager.cc
index d1ee940..8c90bdf 100644
--- a/chrome/browser/translate/translate_manager.cc
+++ b/chrome/browser/translate/translate_manager.cc
@@ -134,6 +134,9 @@ TranslateManager::TranslateManager()
void TranslateManager::InitiateTranslation(TabContents* tab,
const std::string& page_lang) {
PrefService* prefs = tab->profile()->GetPrefs();
+ if (!prefs->GetBoolean(prefs::kEnableTranslate))
+ return;
+
NavigationEntry* entry = tab->controller().GetActiveEntry();
if (!entry) {
NOTREACHED();
diff --git a/chrome/browser/translate/translate_manager_unittest.cc b/chrome/browser/translate/translate_manager_unittest.cc
index 5480fb4..eb63416 100644
--- a/chrome/browser/translate/translate_manager_unittest.cc
+++ b/chrome/browser/translate/translate_manager_unittest.cc
@@ -10,6 +10,7 @@
#include "chrome/common/ipc_test_sink.h"
#include "chrome/common/notification_registrar.h"
#include "chrome/common/notification_service.h"
+#include "chrome/common/pref_names.h"
#include "chrome/common/render_messages.h"
class TestTranslateManager : public TranslateManager {
@@ -360,3 +361,32 @@ TEST_F(TranslateManagerTest, TranslateInPageNavigation) {
// And there is a new one.
EXPECT_TRUE(GetTranslateInfoBar() != NULL);
}
+
+// Tests that the translate preference is honored.
+TEST_F(TranslateManagerTest, TranslatePref) {
+ // Make sure the pref allows translate.
+ PrefService* prefs = contents()->profile()->GetPrefs();
+ prefs->SetBoolean(prefs::kEnableTranslate, true);
+
+ // Simulate navigating to a page and gettings its language.
+ SimulateNavigation(GURL("http://www.google.fr"), 0, L"Le Google", "fr");
+
+ // An infobar should be shown.
+ TranslateInfoBarDelegate* infobar = GetTranslateInfoBar();
+ EXPECT_TRUE(infobar != NULL);
+
+ // Disable translate.
+ prefs->SetBoolean(prefs::kEnableTranslate, false);
+
+ // Navigate to a new page, that should close the previous infobar.
+ GURL url("http://www.youtube.fr");
+ NavigateAndCommit(url);
+ infobar = GetTranslateInfoBar();
+ EXPECT_TRUE(infobar == NULL);
+
+ // Simulate getting the page contents and language, that should not trigger
+ // a translate infobar.
+ SimulateOnPageContents(url, 1, L"Le YouTube", "fr");
+ infobar = GetTranslateInfoBar();
+ EXPECT_TRUE(infobar == NULL);
+}