| Index: chrome/renderer/translate_helper_browsertest.cc
|
| ===================================================================
|
| --- chrome/renderer/translate_helper_browsertest.cc (revision 81920)
|
| +++ chrome/renderer/translate_helper_browsertest.cc (working copy)
|
| @@ -293,3 +293,72 @@
|
| EXPECT_EQ(new_target_lang, received_target_lang);
|
| EXPECT_EQ(TranslateErrors::NONE, error);
|
| }
|
| +
|
| +// Tests that we send the right translatable for a page and that we respect the
|
| +// "no translate" meta-tag.
|
| +TEST_F(RenderViewTest, TranslatablePage) {
|
| + // Suppress the normal delay that occurs when the page is loaded before which
|
| + // the renderer sends the page contents to the browser.
|
| + view_->set_send_content_state_immediately(true);
|
| +
|
| + LoadHTML("<html><body>A random page with random content.</body></html>");
|
| + ProcessPendingMessages();
|
| + const IPC::Message* message = render_thread_.sink().GetUniqueMessageMatching(
|
| + ViewHostMsg_TranslateLanguageDetermined::ID);
|
| + ASSERT_NE(static_cast<IPC::Message*>(NULL), message);
|
| + ViewHostMsg_TranslateLanguageDetermined::Param params;
|
| + ViewHostMsg_TranslateLanguageDetermined::Read(message, ¶ms);
|
| + EXPECT_TRUE(params.b); // Translatable should be true.
|
| + render_thread_.sink().ClearMessages();
|
| +
|
| + // Now the page specifies the META tag to prevent translation.
|
| + LoadHTML("<html><head><meta name=\"google\" value=\"notranslate\"></head>"
|
| + "<body>A random page with random content.</body></html>");
|
| + ProcessPendingMessages();
|
| + message = render_thread_.sink().GetUniqueMessageMatching(
|
| + ViewHostMsg_TranslateLanguageDetermined::ID);
|
| + ASSERT_NE(static_cast<IPC::Message*>(NULL), message);
|
| + ViewHostMsg_TranslateLanguageDetermined::Read(message, ¶ms);
|
| + EXPECT_FALSE(params.b); // Translatable should be false.
|
| + render_thread_.sink().ClearMessages();
|
| +
|
| + // Try the alternate version of the META tag (content instead of value).
|
| + LoadHTML("<html><head><meta name=\"google\" content=\"notranslate\"></head>"
|
| + "<body>A random page with random content.</body></html>");
|
| + ProcessPendingMessages();
|
| + message = render_thread_.sink().GetUniqueMessageMatching(
|
| + ViewHostMsg_TranslateLanguageDetermined::ID);
|
| + ASSERT_NE(static_cast<IPC::Message*>(NULL), message);
|
| + ViewHostMsg_TranslateLanguageDetermined::Read(message, ¶ms);
|
| + EXPECT_FALSE(params.b); // Translatable should be false.
|
| +}
|
| +
|
| +// Tests that the language meta tag takes precedence over the CLD when reporting
|
| +// the page's language.
|
| +TEST_F(RenderViewTest, LanguageMetaTag) {
|
| + // Suppress the normal delay that occurs when the page is loaded before which
|
| + // the renderer sends the page contents to the browser.
|
| + view_->set_send_content_state_immediately(true);
|
| +
|
| + LoadHTML("<html><head><meta http-equiv=\"content-language\" content=\"es\">"
|
| + "</head><body>A random page with random content.</body></html>");
|
| + ProcessPendingMessages();
|
| + const IPC::Message* message = render_thread_.sink().GetUniqueMessageMatching(
|
| + ViewHostMsg_TranslateLanguageDetermined::ID);
|
| + ASSERT_NE(static_cast<IPC::Message*>(NULL), message);
|
| + ViewHostMsg_TranslateLanguageDetermined::Param params;
|
| + ViewHostMsg_TranslateLanguageDetermined::Read(message, ¶ms);
|
| + EXPECT_EQ("es", params.a);
|
| + render_thread_.sink().ClearMessages();
|
| +
|
| + // Makes sure we support multiple languages specified.
|
| + LoadHTML("<html><head><meta http-equiv=\"content-language\" "
|
| + "content=\" fr , es,en \">"
|
| + "</head><body>A random page with random content.</body></html>");
|
| + ProcessPendingMessages();
|
| + message = render_thread_.sink().GetUniqueMessageMatching(
|
| + ViewHostMsg_TranslateLanguageDetermined::ID);
|
| + ASSERT_NE(static_cast<IPC::Message*>(NULL), message);
|
| + ViewHostMsg_TranslateLanguageDetermined::Read(message, ¶ms);
|
| + EXPECT_EQ("fr", params.a);
|
| +}
|
|
|