summaryrefslogtreecommitdiffstats
path: root/chrome
diff options
context:
space:
mode:
Diffstat (limited to 'chrome')
-rw-r--r--chrome/browser/tab_contents/render_view_context_menu.cc5
-rw-r--r--chrome/browser/translate/translate_manager_browsertest.cc11
2 files changed, 13 insertions, 3 deletions
diff --git a/chrome/browser/tab_contents/render_view_context_menu.cc b/chrome/browser/tab_contents/render_view_context_menu.cc
index 3b62603..a1f0815 100644
--- a/chrome/browser/tab_contents/render_view_context_menu.cc
+++ b/chrome/browser/tab_contents/render_view_context_menu.cc
@@ -1131,7 +1131,10 @@ bool RenderViewContextMenu::IsCommandIdEnabled(int id) const {
TranslateManager::IsSupportedLanguage(original_lang)) &&
!helper->language_state().IsPageTranslated() &&
!source_web_contents_->GetInterstitialPage() &&
- TranslateManager::IsTranslatableURL(params_.page_url);
+ TranslateManager::IsTranslatableURL(params_.page_url) &&
+ // There are some application locales which can't be used as a
+ // target language for translation.
+ TranslateManager::IsSupportedLanguage(target_lang);
}
case IDC_CONTENT_CONTEXT_OPENLINKNEWTAB:
diff --git a/chrome/browser/translate/translate_manager_browsertest.cc b/chrome/browser/translate/translate_manager_browsertest.cc
index 1057705..8306655 100644
--- a/chrome/browser/translate/translate_manager_browsertest.cc
+++ b/chrome/browser/translate/translate_manager_browsertest.cc
@@ -956,8 +956,8 @@ TEST_F(TranslateManagerTest, ServerReportsUnsupportedLanguage) {
EXPECT_TRUE(GetTranslateInfoBar() == NULL);
}
-// Tests that no translate infobar is shown when Chrome is in a language that
-// the translate server does not support.
+// Tests that no translate infobar is shown and context menu is disabled, when
+// Chrome is in a language that the translate server does not support.
TEST_F(TranslateManagerTest, UnsupportedUILanguage) {
std::string original_lang = g_browser_process->GetApplicationLocale();
g_browser_process->SetApplicationLocale("qbz");
@@ -975,6 +975,13 @@ TEST_F(TranslateManagerTest, UnsupportedUILanguage) {
// No info-bar should be shown.
EXPECT_TRUE(GetTranslateInfoBar() == NULL);
+ // And the context menu option should be disabled too.
+ scoped_ptr<TestRenderViewContextMenu> menu(
+ TestRenderViewContextMenu::CreateContextMenu(contents()));
+ menu->Init();
+ EXPECT_TRUE(menu->IsItemPresent(IDC_CONTENT_CONTEXT_TRANSLATE));
+ EXPECT_FALSE(menu->IsCommandIdEnabled(IDC_CONTENT_CONTEXT_TRANSLATE));
+
g_browser_process->SetApplicationLocale(original_lang);
}