OLD | NEW |
1 // Copyright (c) 2010 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2010 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include "chrome/common/chrome_constants.h" | 5 #include "chrome/common/chrome_constants.h" |
6 #include "chrome/common/render_messages.h" | 6 #include "chrome/common/render_messages.h" |
7 #include "chrome/renderer/translate_helper.h" | 7 #include "chrome/renderer/translate_helper.h" |
8 #include "chrome/test/render_view_test.h" | 8 #include "chrome/test/render_view_test.h" |
9 #include "testing/gmock/include/gmock/gmock.h" | 9 #include "testing/gmock/include/gmock/gmock.h" |
10 #include "testing/gtest/include/gtest/gtest.h" | 10 #include "testing/gtest/include/gtest/gtest.h" |
(...skipping 275 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
286 TranslateErrors::Type error; | 286 TranslateErrors::Type error; |
287 ASSERT_TRUE(GetPageTranslatedMessage(&page_id, | 287 ASSERT_TRUE(GetPageTranslatedMessage(&page_id, |
288 &received_original_lang, | 288 &received_original_lang, |
289 &received_target_lang, | 289 &received_target_lang, |
290 &error)); | 290 &error)); |
291 EXPECT_EQ(view_->page_id(), page_id); | 291 EXPECT_EQ(view_->page_id(), page_id); |
292 EXPECT_EQ(original_lang, received_original_lang); | 292 EXPECT_EQ(original_lang, received_original_lang); |
293 EXPECT_EQ(new_target_lang, received_target_lang); | 293 EXPECT_EQ(new_target_lang, received_target_lang); |
294 EXPECT_EQ(TranslateErrors::NONE, error); | 294 EXPECT_EQ(TranslateErrors::NONE, error); |
295 } | 295 } |
| 296 |
| 297 // Tests that we send the right translatable for a page and that we respect the |
| 298 // "no translate" meta-tag. |
| 299 TEST_F(RenderViewTest, TranslatablePage) { |
| 300 // Suppress the normal delay that occurs when the page is loaded before which |
| 301 // the renderer sends the page contents to the browser. |
| 302 view_->set_send_content_state_immediately(true); |
| 303 |
| 304 LoadHTML("<html><body>A random page with random content.</body></html>"); |
| 305 ProcessPendingMessages(); |
| 306 const IPC::Message* message = render_thread_.sink().GetUniqueMessageMatching( |
| 307 ViewHostMsg_TranslateLanguageDetermined::ID); |
| 308 ASSERT_NE(static_cast<IPC::Message*>(NULL), message); |
| 309 ViewHostMsg_TranslateLanguageDetermined::Param params; |
| 310 ViewHostMsg_TranslateLanguageDetermined::Read(message, ¶ms); |
| 311 EXPECT_TRUE(params.b); // Translatable should be true. |
| 312 render_thread_.sink().ClearMessages(); |
| 313 |
| 314 // Now the page specifies the META tag to prevent translation. |
| 315 LoadHTML("<html><head><meta name=\"google\" value=\"notranslate\"></head>" |
| 316 "<body>A random page with random content.</body></html>"); |
| 317 ProcessPendingMessages(); |
| 318 message = render_thread_.sink().GetUniqueMessageMatching( |
| 319 ViewHostMsg_TranslateLanguageDetermined::ID); |
| 320 ASSERT_NE(static_cast<IPC::Message*>(NULL), message); |
| 321 ViewHostMsg_TranslateLanguageDetermined::Read(message, ¶ms); |
| 322 EXPECT_FALSE(params.b); // Translatable should be false. |
| 323 render_thread_.sink().ClearMessages(); |
| 324 |
| 325 // Try the alternate version of the META tag (content instead of value). |
| 326 LoadHTML("<html><head><meta name=\"google\" content=\"notranslate\"></head>" |
| 327 "<body>A random page with random content.</body></html>"); |
| 328 ProcessPendingMessages(); |
| 329 message = render_thread_.sink().GetUniqueMessageMatching( |
| 330 ViewHostMsg_TranslateLanguageDetermined::ID); |
| 331 ASSERT_NE(static_cast<IPC::Message*>(NULL), message); |
| 332 ViewHostMsg_TranslateLanguageDetermined::Read(message, ¶ms); |
| 333 EXPECT_FALSE(params.b); // Translatable should be false. |
| 334 } |
| 335 |
| 336 // Tests that the language meta tag takes precedence over the CLD when reporting |
| 337 // the page's language. |
| 338 TEST_F(RenderViewTest, LanguageMetaTag) { |
| 339 // Suppress the normal delay that occurs when the page is loaded before which |
| 340 // the renderer sends the page contents to the browser. |
| 341 view_->set_send_content_state_immediately(true); |
| 342 |
| 343 LoadHTML("<html><head><meta http-equiv=\"content-language\" content=\"es\">" |
| 344 "</head><body>A random page with random content.</body></html>"); |
| 345 ProcessPendingMessages(); |
| 346 const IPC::Message* message = render_thread_.sink().GetUniqueMessageMatching( |
| 347 ViewHostMsg_TranslateLanguageDetermined::ID); |
| 348 ASSERT_NE(static_cast<IPC::Message*>(NULL), message); |
| 349 ViewHostMsg_TranslateLanguageDetermined::Param params; |
| 350 ViewHostMsg_TranslateLanguageDetermined::Read(message, ¶ms); |
| 351 EXPECT_EQ("es", params.a); |
| 352 render_thread_.sink().ClearMessages(); |
| 353 |
| 354 // Makes sure we support multiple languages specified. |
| 355 LoadHTML("<html><head><meta http-equiv=\"content-language\" " |
| 356 "content=\" fr , es,en \">" |
| 357 "</head><body>A random page with random content.</body></html>"); |
| 358 ProcessPendingMessages(); |
| 359 message = render_thread_.sink().GetUniqueMessageMatching( |
| 360 ViewHostMsg_TranslateLanguageDetermined::ID); |
| 361 ASSERT_NE(static_cast<IPC::Message*>(NULL), message); |
| 362 ViewHostMsg_TranslateLanguageDetermined::Read(message, ¶ms); |
| 363 EXPECT_EQ("fr", params.a); |
| 364 } |
OLD | NEW |