diff options
author | jcivelli@chromium.org <jcivelli@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2010-03-30 06:34:06 +0000 |
---|---|---|
committer | jcivelli@chromium.org <jcivelli@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2010-03-30 06:34:06 +0000 |
commit | 7c3ed12e886040fbb1cec171d1d45cb2b7ddf003 (patch) | |
tree | 22eb86a9fa487181fe82efc24ed186d3958427e2 | |
parent | 963e4de825d0d116f345f89a0fa9ef32f98e6a2e (diff) | |
download | chromium_src-7c3ed12e886040fbb1cec171d1d45cb2b7ddf003.zip chromium_src-7c3ed12e886040fbb1cec171d1d45cb2b7ddf003.tar.gz chromium_src-7c3ed12e886040fbb1cec171d1d45cb2b7ddf003.tar.bz2 |
Making the translate context menu reset the blacklisting.
BUG=None
TEST=Select a site in a language different than the Chrome
language, select never translate this site/language.
Visit that site again, use the context menu to translate.
The site and language should not be blacklisted for translation
anymore.
Review URL: http://codereview.chromium.org/1551001
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@43058 0039d316-1c4b-4281-b951-d872f2087c98
-rw-r--r-- | chrome/browser/tab_contents/render_view_context_menu.cc | 15 | ||||
-rw-r--r-- | chrome/browser/translate/translate_manager_unittest.cc | 15 |
2 files changed, 23 insertions, 7 deletions
diff --git a/chrome/browser/tab_contents/render_view_context_menu.cc b/chrome/browser/tab_contents/render_view_context_menu.cc index c44ca8b..7cf0c86 100644 --- a/chrome/browser/tab_contents/render_view_context_menu.cc +++ b/chrome/browser/tab_contents/render_view_context_menu.cc @@ -1025,11 +1025,16 @@ void RenderViewContextMenu::ExecuteItemCommand(int id) { source_tab_contents_->language_state().translation_pending()) { return; } - std::string locale = g_browser_process->GetApplicationLocale(); - locale = TranslationService::GetLanguageCode(locale); - source_tab_contents_->TranslatePage( - source_tab_contents_->language_state().original_language(), - locale); + std::string original_lang = + source_tab_contents_->language_state().original_language(); + std::string target_lang = g_browser_process->GetApplicationLocale(); + target_lang = TranslationService::GetLanguageCode(target_lang); + // Since the user decided to translate for that language and site, clears + // any preferences for not translating them. + TranslatePrefs prefs(profile_->GetPrefs()); + prefs.RemoveLanguageFromBlacklist(original_lang); + prefs.RemoveSiteFromBlacklist(params_.page_url.HostNoBrackets()); + source_tab_contents_->TranslatePage(original_lang, target_lang); break; } diff --git a/chrome/browser/translate/translate_manager_unittest.cc b/chrome/browser/translate/translate_manager_unittest.cc index 708b29d..bc0924c 100644 --- a/chrome/browser/translate/translate_manager_unittest.cc +++ b/chrome/browser/translate/translate_manager_unittest.cc @@ -749,9 +749,16 @@ TEST_F(TranslateManagerTest, AlwaysTranslateLanguagePref) { // Context menu. TEST_F(TranslateManagerTest, ContextMenu) { + // Blacklist www.google.fr and French for translation. + GURL url("http://www.google.fr"); + TranslatePrefs translate_prefs(contents()->profile()->GetPrefs()); + translate_prefs.BlacklistLanguage("fr"); + translate_prefs.BlacklistSite(url.host()); + EXPECT_TRUE(translate_prefs.IsLanguageBlacklisted("fr")); + EXPECT_TRUE(translate_prefs.IsSiteBlacklisted(url.host())); + // Simulate navigating to a page in French. The translate menu should show. - SimulateNavigation(GURL("http://www.google.fr"), 0, L"Le Google", "fr"); - EXPECT_TRUE(GetTranslateInfoBar() != NULL); + SimulateNavigation(url, 0, L"Le Google", "fr"); scoped_ptr<TestRenderViewContextMenu> menu( TestRenderViewContextMenu::CreateContextMenu(contents())); menu->Init(); @@ -770,6 +777,10 @@ TEST_F(TranslateManagerTest, ContextMenu) { EXPECT_EQ("en", target_lang); process()->sink().ClearMessages(); + // This should also have reverted the blacklisting of this site and language. + EXPECT_FALSE(translate_prefs.IsLanguageBlacklisted("fr")); + EXPECT_FALSE(translate_prefs.IsSiteBlacklisted(url.host())); + // Let's simulate the page being translated. rvh()->TestOnMessageReceived(ViewHostMsg_PageTranslated(0, 0, "fr", "en", TranslateErrors::NONE)); |