Commit eaf9d19b authored by Colin Blundell's avatar Colin Blundell Committed by Commit Bot

WebLayer: Flesh out browsertests of translation

This CL adapts //chrome's translate_manager_browsertest.cc tests of
several error conditions to //weblayer. There are more that can be
adapted, but this seemed like a reasonable initial cutpoint.

Bug: 1025620
Change-Id: Ia1c79c23e2193bf5f35a75a5be1fccbc42bb5a1a
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2161017
Commit-Queue: Colin Blundell <blundell@chromium.org>
Reviewed-by: default avataranthonyvd <anthonyvd@chromium.org>
Cr-Commit-Position: refs/heads/master@{#763338}
parent e49dbf2e
......@@ -46,6 +46,32 @@ static std::string kTestValidScript = R"(
})();
cr.googleTranslate.onTranslateElementLoad();)";
static std::string kTestScriptInitializationError = R"(
var google = {};
google.translate = (function() {
return {
TranslateService: function() {
return error;
}
};
})();
cr.googleTranslate.onTranslateElementLoad();)";
static std::string kTestScriptTimeout = R"(
var google = {};
google.translate = (function() {
return {
TranslateService: function() {
return {
isAvailable : function() {
return false;
},
};
}
};
})();
cr.googleTranslate.onTranslateElementLoad();)";
TranslateClientImpl* GetTranslateClient(Shell* shell) {
return TranslateClientImpl::FromWebContents(
static_cast<TabImpl*>(shell->tab())->web_contents());
......@@ -177,4 +203,86 @@ IN_PROC_BROWSER_TEST_F(TranslateBrowserTest, PageTranslationSuccess) {
EXPECT_EQ(translate::TranslateErrors::NONE, GetPageTranslatedResult());
}
// Test if there was an error during translation.
IN_PROC_BROWSER_TEST_F(TranslateBrowserTest, PageTranslationError) {
SetTranslateScript(kTestValidScript);
TranslateClientImpl* translate_client = GetTranslateClient(shell());
NavigateAndWaitForCompletion(GURL("about:blank"), shell());
WaitUntilLanguageDetermined(shell());
EXPECT_EQ("und", translate_client->GetLanguageState().original_language());
// Translate the page through TranslateManager.
translate::TranslateManager* manager =
translate_client->GetTranslateManager();
manager->TranslatePage(
translate_client->GetLanguageState().original_language(), "en", true);
WaitUntilPageTranslated(shell());
EXPECT_TRUE(translate_client->GetLanguageState().translation_error());
EXPECT_EQ(translate::TranslateErrors::TRANSLATION_ERROR,
GetPageTranslatedResult());
}
// Test if there was an error during translate library initialization.
IN_PROC_BROWSER_TEST_F(TranslateBrowserTest,
PageTranslationInitializationError) {
SetTranslateScript(kTestScriptInitializationError);
TranslateClientImpl* translate_client = GetTranslateClient(shell());
NavigateAndWaitForCompletion(GURL("about:blank"), shell());
WaitUntilLanguageDetermined(shell());
EXPECT_EQ("und", translate_client->GetLanguageState().original_language());
// Navigate to a page in French.
NavigateAndWaitForCompletion(
GURL(embedded_test_server()->GetURL("/french_page.html")), shell());
WaitUntilLanguageDetermined(shell());
EXPECT_EQ("fr", translate_client->GetLanguageState().original_language());
// Translate the page through TranslateManager.
translate::TranslateManager* manager =
translate_client->GetTranslateManager();
manager->TranslatePage(
translate_client->GetLanguageState().original_language(), "en", true);
WaitUntilPageTranslated(shell());
EXPECT_TRUE(translate_client->GetLanguageState().translation_error());
EXPECT_EQ(translate::TranslateErrors::INITIALIZATION_ERROR,
GetPageTranslatedResult());
}
// Test the checks translate lib never gets ready and throws timeout.
IN_PROC_BROWSER_TEST_F(TranslateBrowserTest, PageTranslationTimeoutError) {
SetTranslateScript(kTestScriptTimeout);
TranslateClientImpl* translate_client = GetTranslateClient(shell());
NavigateAndWaitForCompletion(GURL("about:blank"), shell());
WaitUntilLanguageDetermined(shell());
EXPECT_EQ("und", translate_client->GetLanguageState().original_language());
// Navigate to a page in French.
NavigateAndWaitForCompletion(
GURL(embedded_test_server()->GetURL("/french_page.html")), shell());
WaitUntilLanguageDetermined(shell());
EXPECT_EQ("fr", translate_client->GetLanguageState().original_language());
// Translate the page through TranslateManager.
translate::TranslateManager* manager =
translate_client->GetTranslateManager();
manager->TranslatePage(
translate_client->GetLanguageState().original_language(), "en", true);
WaitUntilPageTranslated(shell());
EXPECT_TRUE(translate_client->GetLanguageState().translation_error());
EXPECT_EQ(translate::TranslateErrors::TRANSLATION_TIMEOUT,
GetPageTranslatedResult());
}
} // namespace weblayer
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