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); |
+} |