| OLD | NEW |
| 1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2011 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/base/chrome_render_view_test.h" | 8 #include "chrome/test/base/chrome_render_view_test.h" |
| 9 #include "content/public/renderer/render_view.h" | 9 #include "content/public/renderer/render_view.h" |
| 10 #include "testing/gmock/include/gmock/gmock.h" | 10 #include "testing/gmock/include/gmock/gmock.h" |
| (...skipping 293 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 304 } | 304 } |
| 305 | 305 |
| 306 // Tests that we send the right translatable for a page and that we respect the | 306 // Tests that we send the right translatable for a page and that we respect the |
| 307 // "no translate" meta-tag. | 307 // "no translate" meta-tag. |
| 308 TEST_F(ChromeRenderViewTest, TranslatablePage) { | 308 TEST_F(ChromeRenderViewTest, TranslatablePage) { |
| 309 // Suppress the normal delay that occurs when the page is loaded before which | 309 // Suppress the normal delay that occurs when the page is loaded before which |
| 310 // the renderer sends the page contents to the browser. | 310 // the renderer sends the page contents to the browser. |
| 311 SendContentStateImmediately(); | 311 SendContentStateImmediately(); |
| 312 | 312 |
| 313 LoadHTML("<html><body>A random page with random content.</body></html>"); | 313 LoadHTML("<html><body>A random page with random content.</body></html>"); |
| 314 ProcessPendingMessages(); | |
| 315 const IPC::Message* message = render_thread_->sink().GetUniqueMessageMatching( | 314 const IPC::Message* message = render_thread_->sink().GetUniqueMessageMatching( |
| 316 ChromeViewHostMsg_TranslateLanguageDetermined::ID); | 315 ChromeViewHostMsg_TranslateLanguageDetermined::ID); |
| 317 ASSERT_NE(static_cast<IPC::Message*>(NULL), message); | 316 ASSERT_NE(static_cast<IPC::Message*>(NULL), message); |
| 318 ChromeViewHostMsg_TranslateLanguageDetermined::Param params; | 317 ChromeViewHostMsg_TranslateLanguageDetermined::Param params; |
| 319 ChromeViewHostMsg_TranslateLanguageDetermined::Read(message, ¶ms); | 318 ChromeViewHostMsg_TranslateLanguageDetermined::Read(message, ¶ms); |
| 320 EXPECT_TRUE(params.b); // Translatable should be true. | 319 EXPECT_TRUE(params.b); // Translatable should be true. |
| 321 render_thread_->sink().ClearMessages(); | 320 render_thread_->sink().ClearMessages(); |
| 322 | 321 |
| 323 // Now the page specifies the META tag to prevent translation. | 322 // Now the page specifies the META tag to prevent translation. |
| 324 LoadHTML("<html><head><meta name=\"google\" value=\"notranslate\"></head>" | 323 LoadHTML("<html><head><meta name=\"google\" value=\"notranslate\"></head>" |
| 325 "<body>A random page with random content.</body></html>"); | 324 "<body>A random page with random content.</body></html>"); |
| 326 ProcessPendingMessages(); | |
| 327 message = render_thread_->sink().GetUniqueMessageMatching( | 325 message = render_thread_->sink().GetUniqueMessageMatching( |
| 328 ChromeViewHostMsg_TranslateLanguageDetermined::ID); | 326 ChromeViewHostMsg_TranslateLanguageDetermined::ID); |
| 329 ASSERT_NE(static_cast<IPC::Message*>(NULL), message); | 327 ASSERT_NE(static_cast<IPC::Message*>(NULL), message); |
| 330 ChromeViewHostMsg_TranslateLanguageDetermined::Read(message, ¶ms); | 328 ChromeViewHostMsg_TranslateLanguageDetermined::Read(message, ¶ms); |
| 331 EXPECT_FALSE(params.b); // Translatable should be false. | 329 EXPECT_FALSE(params.b); // Translatable should be false. |
| 332 render_thread_->sink().ClearMessages(); | 330 render_thread_->sink().ClearMessages(); |
| 333 | 331 |
| 334 // Try the alternate version of the META tag (content instead of value). | 332 // Try the alternate version of the META tag (content instead of value). |
| 335 LoadHTML("<html><head><meta name=\"google\" content=\"notranslate\"></head>" | 333 LoadHTML("<html><head><meta name=\"google\" content=\"notranslate\"></head>" |
| 336 "<body>A random page with random content.</body></html>"); | 334 "<body>A random page with random content.</body></html>"); |
| 337 ProcessPendingMessages(); | |
| 338 message = render_thread_->sink().GetUniqueMessageMatching( | 335 message = render_thread_->sink().GetUniqueMessageMatching( |
| 339 ChromeViewHostMsg_TranslateLanguageDetermined::ID); | 336 ChromeViewHostMsg_TranslateLanguageDetermined::ID); |
| 340 ASSERT_NE(static_cast<IPC::Message*>(NULL), message); | 337 ASSERT_NE(static_cast<IPC::Message*>(NULL), message); |
| 341 ChromeViewHostMsg_TranslateLanguageDetermined::Read(message, ¶ms); | 338 ChromeViewHostMsg_TranslateLanguageDetermined::Read(message, ¶ms); |
| 342 EXPECT_FALSE(params.b); // Translatable should be false. | 339 EXPECT_FALSE(params.b); // Translatable should be false. |
| 343 } | 340 } |
| 344 | 341 |
| 345 // Tests that the language meta tag takes precedence over the CLD when reporting | 342 // Tests that the language meta tag takes precedence over the CLD when reporting |
| 346 // the page's language. | 343 // the page's language. |
| 347 TEST_F(ChromeRenderViewTest, LanguageMetaTag) { | 344 TEST_F(ChromeRenderViewTest, LanguageMetaTag) { |
| 348 // Suppress the normal delay that occurs when the page is loaded before which | 345 // Suppress the normal delay that occurs when the page is loaded before which |
| 349 // the renderer sends the page contents to the browser. | 346 // the renderer sends the page contents to the browser. |
| 350 SendContentStateImmediately(); | 347 SendContentStateImmediately(); |
| 351 | 348 |
| 352 LoadHTML("<html><head><meta http-equiv=\"content-language\" content=\"es\">" | 349 LoadHTML("<html><head><meta http-equiv=\"content-language\" content=\"es\">" |
| 353 "</head><body>A random page with random content.</body></html>"); | 350 "</head><body>A random page with random content.</body></html>"); |
| 354 ProcessPendingMessages(); | |
| 355 const IPC::Message* message = render_thread_->sink().GetUniqueMessageMatching( | 351 const IPC::Message* message = render_thread_->sink().GetUniqueMessageMatching( |
| 356 ChromeViewHostMsg_TranslateLanguageDetermined::ID); | 352 ChromeViewHostMsg_TranslateLanguageDetermined::ID); |
| 357 ASSERT_NE(static_cast<IPC::Message*>(NULL), message); | 353 ASSERT_NE(static_cast<IPC::Message*>(NULL), message); |
| 358 ChromeViewHostMsg_TranslateLanguageDetermined::Param params; | 354 ChromeViewHostMsg_TranslateLanguageDetermined::Param params; |
| 359 ChromeViewHostMsg_TranslateLanguageDetermined::Read(message, ¶ms); | 355 ChromeViewHostMsg_TranslateLanguageDetermined::Read(message, ¶ms); |
| 360 EXPECT_EQ("es", params.a); | 356 EXPECT_EQ("es", params.a); |
| 361 render_thread_->sink().ClearMessages(); | 357 render_thread_->sink().ClearMessages(); |
| 362 | 358 |
| 363 // Makes sure we support multiple languages specified. | 359 // Makes sure we support multiple languages specified. |
| 364 LoadHTML("<html><head><meta http-equiv=\"content-language\" " | 360 LoadHTML("<html><head><meta http-equiv=\"content-language\" " |
| 365 "content=\" fr , es,en \">" | 361 "content=\" fr , es,en \">" |
| 366 "</head><body>A random page with random content.</body></html>"); | 362 "</head><body>A random page with random content.</body></html>"); |
| 367 ProcessPendingMessages(); | |
| 368 message = render_thread_->sink().GetUniqueMessageMatching( | 363 message = render_thread_->sink().GetUniqueMessageMatching( |
| 369 ChromeViewHostMsg_TranslateLanguageDetermined::ID); | 364 ChromeViewHostMsg_TranslateLanguageDetermined::ID); |
| 370 ASSERT_NE(static_cast<IPC::Message*>(NULL), message); | 365 ASSERT_NE(static_cast<IPC::Message*>(NULL), message); |
| 371 ChromeViewHostMsg_TranslateLanguageDetermined::Read(message, ¶ms); | 366 ChromeViewHostMsg_TranslateLanguageDetermined::Read(message, ¶ms); |
| 372 EXPECT_EQ("fr", params.a); | 367 EXPECT_EQ("fr", params.a); |
| 373 } | 368 } |
| 374 | 369 |
| 375 // Tests that a back navigation gets a translatable. | 370 // Tests that a back navigation gets a translatable. |
| 376 TEST_F(ChromeRenderViewTest, BackToTranslatablePage) { | 371 TEST_F(ChromeRenderViewTest, BackToTranslatablePage) { |
| 377 SendContentStateImmediately(); | 372 SendContentStateImmediately(); |
| 378 LoadHTML("<html><head><meta http-equiv=\"content-language\" content=\"zh\">" | 373 LoadHTML("<html><head><meta http-equiv=\"content-language\" content=\"zh\">" |
| 379 "</head><body>This page is in Chinese.</body></html>"); | 374 "</head><body>This page is in Chinese.</body></html>"); |
| 380 ProcessPendingMessages(); | |
| 381 const IPC::Message* message = render_thread_->sink().GetUniqueMessageMatching( | 375 const IPC::Message* message = render_thread_->sink().GetUniqueMessageMatching( |
| 382 ChromeViewHostMsg_TranslateLanguageDetermined::ID); | 376 ChromeViewHostMsg_TranslateLanguageDetermined::ID); |
| 383 ASSERT_NE(static_cast<IPC::Message*>(NULL), message); | 377 ASSERT_NE(static_cast<IPC::Message*>(NULL), message); |
| 384 ChromeViewHostMsg_TranslateLanguageDetermined::Param params; | 378 ChromeViewHostMsg_TranslateLanguageDetermined::Param params; |
| 385 ChromeViewHostMsg_TranslateLanguageDetermined::Read(message, ¶ms); | 379 ChromeViewHostMsg_TranslateLanguageDetermined::Read(message, ¶ms); |
| 386 EXPECT_EQ("zh", params.a); | 380 EXPECT_EQ("zh", params.a); |
| 387 render_thread_->sink().ClearMessages(); | 381 render_thread_->sink().ClearMessages(); |
| 388 | 382 |
| 389 LoadHTML("<html><head><meta http-equiv=\"content-language\" content=\"fr\">" | 383 LoadHTML("<html><head><meta http-equiv=\"content-language\" content=\"fr\">" |
| 390 "</head><body>This page is in French.</body></html>"); | 384 "</head><body>This page is in French.</body></html>"); |
| 391 ProcessPendingMessages(); | |
| 392 message = render_thread_->sink().GetUniqueMessageMatching( | 385 message = render_thread_->sink().GetUniqueMessageMatching( |
| 393 ChromeViewHostMsg_TranslateLanguageDetermined::ID); | 386 ChromeViewHostMsg_TranslateLanguageDetermined::ID); |
| 394 ASSERT_NE(static_cast<IPC::Message*>(NULL), message); | 387 ASSERT_NE(static_cast<IPC::Message*>(NULL), message); |
| 395 ChromeViewHostMsg_TranslateLanguageDetermined::Read(message, ¶ms); | 388 ChromeViewHostMsg_TranslateLanguageDetermined::Read(message, ¶ms); |
| 396 EXPECT_EQ("fr", params.a); | 389 EXPECT_EQ("fr", params.a); |
| 397 render_thread_->sink().ClearMessages(); | 390 render_thread_->sink().ClearMessages(); |
| 398 | 391 |
| 399 GoBack(GetMainFrame()->previousHistoryItem()); | 392 GoBack(GetMainFrame()->previousHistoryItem()); |
| 400 | 393 |
| 401 message = render_thread_->sink().GetUniqueMessageMatching( | 394 message = render_thread_->sink().GetUniqueMessageMatching( |
| 402 ChromeViewHostMsg_TranslateLanguageDetermined::ID); | 395 ChromeViewHostMsg_TranslateLanguageDetermined::ID); |
| 403 ASSERT_NE(static_cast<IPC::Message*>(NULL), message); | 396 ASSERT_NE(static_cast<IPC::Message*>(NULL), message); |
| 404 ChromeViewHostMsg_TranslateLanguageDetermined::Read(message, ¶ms); | 397 ChromeViewHostMsg_TranslateLanguageDetermined::Read(message, ¶ms); |
| 405 EXPECT_EQ("zh", params.a); | 398 EXPECT_EQ("zh", params.a); |
| 406 render_thread_->sink().ClearMessages(); | 399 render_thread_->sink().ClearMessages(); |
| 407 } | 400 } |
| 408 | 401 |
| OLD | NEW |