Commit 163dcc7f authored by Anthony Vallee-Dubois's avatar Anthony Vallee-Dubois Committed by Commit Bot

Only trigger hrefTranslate if language is supported

Bug: 901864
Change-Id: I5d86a6017d4d3fd45169af7daf58899158d7a1a7
Reviewed-on: https://chromium-review.googlesource.com/c/1351384
Commit-Queue: anthonyvd <anthonyvd@chromium.org>
Reviewed-by: default avatarMichael Martis <martis@chromium.org>
Cr-Commit-Position: refs/heads/master@{#611163}
parent 7453a788
...@@ -441,6 +441,51 @@ IN_PROC_BROWSER_TEST_F(TranslateManagerBrowserTest, HrefTranslateSuccess) { ...@@ -441,6 +441,51 @@ IN_PROC_BROWSER_TEST_F(TranslateManagerBrowserTest, HrefTranslateSuccess) {
chrome_translate_client->GetLanguageState().current_language()); chrome_translate_client->GetLanguageState().current_language());
} }
// Test that hrefTranslate with an unsupported language doesn't trigger.
IN_PROC_BROWSER_TEST_F(TranslateManagerBrowserTest, HrefTranslateUnsupported) {
ChromeTranslateClient* chrome_translate_client = GetChromeTranslateClient();
chrome_translate_client->GetTranslateManager()->SetIgnoreMissingKeyForTesting(
true);
SetTranslateScript(kTestValidScript);
// There is a possible race condition, when the language is not yet detected,
// so we check for that and wait if necessary.
if (chrome_translate_client->GetLanguageState().original_language().empty())
WaitUntilLanguageDetected();
EXPECT_EQ("und",
chrome_translate_client->GetLanguageState().original_language());
ResetObserver();
// Load a German page and detect it's language
AddTabAtIndex(
0, GURL(embedded_test_server()->GetURL("/href_translate_test.html")),
ui::PAGE_TRANSITION_TYPED);
chrome_translate_client = GetChromeTranslateClient();
WaitUntilLanguageDetected();
EXPECT_EQ("de",
chrome_translate_client->GetLanguageState().original_language());
// Navigate to the French page by way of a link on the original page. This
// link has the hrefTranslate attribute set to "unsupported", so it shouldn't
// trigger translate.
ResetObserver();
content::WebContents* web_contents =
browser()->tab_strip_model()->GetWebContentsAt(0);
const std::string click_link_js =
"(function() { "
"document.getElementById('test-unsupported-language').click(); })();";
ASSERT_TRUE(content::ExecuteScript(web_contents, click_link_js));
// Detect language on the new page
WaitUntilLanguageDetected();
EXPECT_EQ("fr",
chrome_translate_client->GetLanguageState().original_language());
EXPECT_EQ("", chrome_translate_client->GetLanguageState().AutoTranslateTo());
}
// Test an href translate link to a conflicted page // Test an href translate link to a conflicted page
IN_PROC_BROWSER_TEST_F(TranslateManagerBrowserTest, HrefTranslateConflict) { IN_PROC_BROWSER_TEST_F(TranslateManagerBrowserTest, HrefTranslateConflict) {
ChromeTranslateClient* chrome_translate_client = GetChromeTranslateClient(); ChromeTranslateClient* chrome_translate_client = GetChromeTranslateClient();
......
...@@ -22,5 +22,8 @@ found in the LICENSE file. ...@@ -22,5 +22,8 @@ found in the LICENSE file.
<a href="french_page.html" hrefTranslate="en" id="test-no-hrefLang"> <a href="french_page.html" hrefTranslate="en" id="test-no-hrefLang">
Ich kenne die Sprache der Seite nicht, auf die ich hinweise, aber ich möchte, dass sie ins Englische übersetzt wird. Ich kenne die Sprache der Seite nicht, auf die ich hinweise, aber ich möchte, dass sie ins Englische übersetzt wird.
</a> </a>
<a href="french_page.html" hrefTranslate="unsupported" id="test-unsupported-language">
Ich kenne die Sprache der Seite nicht, auf die ich hinweise, aber ich möchte, dass sie ins Englische übersetzt wird.
</a>
</body> </body>
</html> </html>
...@@ -218,9 +218,18 @@ void ContentTranslateDriver::DidFinishNavigation( ...@@ -218,9 +218,18 @@ void ContentTranslateDriver::DidFinishNavigation(
const bool reload = const bool reload =
navigation_handle->GetReloadType() != content::ReloadType::NONE || navigation_handle->GetReloadType() != content::ReloadType::NONE ||
navigation_handle->IsSameDocument(); navigation_handle->IsSameDocument();
translate::TranslateLanguageList* language_list =
translate::TranslateDownloadManager::GetInstance()->language_list();
std::string href_translate;
if (language_list->IsSupportedLanguage(
navigation_handle->GetHrefTranslate())) {
href_translate = navigation_handle->GetHrefTranslate();
}
translate_manager_->GetLanguageState().DidNavigate( translate_manager_->GetLanguageState().DidNavigate(
navigation_handle->IsSameDocument(), navigation_handle->IsInMainFrame(), navigation_handle->IsSameDocument(), navigation_handle->IsInMainFrame(),
reload, navigation_handle->GetHrefTranslate()); reload, href_translate);
} }
void ContentTranslateDriver::OnPageAway(int page_seq_no) { void ContentTranslateDriver::OnPageAway(int page_seq_no) {
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment