diff options
author | jcampan@chromium.org <jcampan@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2010-02-26 17:42:13 +0000 |
---|---|---|
committer | jcampan@chromium.org <jcampan@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2010-02-26 17:42:13 +0000 |
commit | 0908acd972c01bf7f3915575b5b53d78a0ee3c7b (patch) | |
tree | 82fd2d2b47c3e5226840e9a6c651ddea0d89ef11 /chrome/browser/translate | |
parent | cab7a1afc7edf2a78154b7dc3a42218d943d8195 (diff) | |
download | chromium_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.cc | 3 | ||||
-rw-r--r-- | chrome/browser/translate/translate_manager_unittest.cc | 30 |
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); +} |