OLD | NEW |
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 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 "base/time.h" | 5 #include "base/time.h" |
6 #include "chrome/common/chrome_constants.h" | 6 #include "chrome/common/chrome_constants.h" |
7 #include "chrome/common/render_messages.h" | 7 #include "chrome/common/render_messages.h" |
8 #include "chrome/renderer/translate/translate_helper.h" | 8 #include "chrome/renderer/translate/translate_helper.h" |
9 #include "chrome/test/base/chrome_render_view_test.h" | 9 #include "chrome/test/base/chrome_render_view_test.h" |
10 #include "content/public/renderer/render_view.h" | 10 #include "content/public/renderer/render_view.h" |
(...skipping 369 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
380 // the renderer sends the page contents to the browser. | 380 // the renderer sends the page contents to the browser. |
381 SendContentStateImmediately(); | 381 SendContentStateImmediately(); |
382 | 382 |
383 LoadHTML("<html><head><meta http-equiv=\"content-language\" content=\"es\">" | 383 LoadHTML("<html><head><meta http-equiv=\"content-language\" content=\"es\">" |
384 "</head><body>A random page with random content.</body></html>"); | 384 "</head><body>A random page with random content.</body></html>"); |
385 const IPC::Message* message = render_thread_->sink().GetUniqueMessageMatching( | 385 const IPC::Message* message = render_thread_->sink().GetUniqueMessageMatching( |
386 ChromeViewHostMsg_TranslateLanguageDetermined::ID); | 386 ChromeViewHostMsg_TranslateLanguageDetermined::ID); |
387 ASSERT_NE(static_cast<IPC::Message*>(NULL), message); | 387 ASSERT_NE(static_cast<IPC::Message*>(NULL), message); |
388 ChromeViewHostMsg_TranslateLanguageDetermined::Param params; | 388 ChromeViewHostMsg_TranslateLanguageDetermined::Param params; |
389 ChromeViewHostMsg_TranslateLanguageDetermined::Read(message, ¶ms); | 389 ChromeViewHostMsg_TranslateLanguageDetermined::Read(message, ¶ms); |
390 EXPECT_EQ("es", params.a); | 390 EXPECT_EQ("es", params.a.adopted_language); |
391 render_thread_->sink().ClearMessages(); | 391 render_thread_->sink().ClearMessages(); |
392 | 392 |
393 // Makes sure we support multiple languages specified. | 393 // Makes sure we support multiple languages specified. |
394 LoadHTML("<html><head><meta http-equiv=\"content-language\" " | 394 LoadHTML("<html><head><meta http-equiv=\"content-language\" " |
395 "content=\" fr , es,en \">" | 395 "content=\" fr , es,en \">" |
396 "</head><body>A random page with random content.</body></html>"); | 396 "</head><body>A random page with random content.</body></html>"); |
397 message = render_thread_->sink().GetUniqueMessageMatching( | 397 message = render_thread_->sink().GetUniqueMessageMatching( |
398 ChromeViewHostMsg_TranslateLanguageDetermined::ID); | 398 ChromeViewHostMsg_TranslateLanguageDetermined::ID); |
399 ASSERT_NE(static_cast<IPC::Message*>(NULL), message); | 399 ASSERT_NE(static_cast<IPC::Message*>(NULL), message); |
400 ChromeViewHostMsg_TranslateLanguageDetermined::Read(message, ¶ms); | 400 ChromeViewHostMsg_TranslateLanguageDetermined::Read(message, ¶ms); |
401 EXPECT_EQ("fr", params.a); | 401 EXPECT_EQ("fr", params.a.adopted_language); |
402 } | 402 } |
403 | 403 |
404 // Tests that the language meta tag works even with non-all-lower-case. | 404 // Tests that the language meta tag works even with non-all-lower-case. |
405 // http://code.google.com/p/chromium/issues/detail?id=145689 | 405 // http://code.google.com/p/chromium/issues/detail?id=145689 |
406 TEST_F(ChromeRenderViewTest, LanguageMetaTagCase) { | 406 TEST_F(ChromeRenderViewTest, LanguageMetaTagCase) { |
407 // Suppress the normal delay that occurs when the page is loaded before which | 407 // Suppress the normal delay that occurs when the page is loaded before which |
408 // the renderer sends the page contents to the browser. | 408 // the renderer sends the page contents to the browser. |
409 SendContentStateImmediately(); | 409 SendContentStateImmediately(); |
410 | 410 |
411 LoadHTML("<html><head><meta http-equiv=\"Content-Language\" content=\"es\">" | 411 LoadHTML("<html><head><meta http-equiv=\"Content-Language\" content=\"es\">" |
412 "</head><body>A random page with random content.</body></html>"); | 412 "</head><body>A random page with random content.</body></html>"); |
413 const IPC::Message* message = render_thread_->sink().GetUniqueMessageMatching( | 413 const IPC::Message* message = render_thread_->sink().GetUniqueMessageMatching( |
414 ChromeViewHostMsg_TranslateLanguageDetermined::ID); | 414 ChromeViewHostMsg_TranslateLanguageDetermined::ID); |
415 ASSERT_NE(static_cast<IPC::Message*>(NULL), message); | 415 ASSERT_NE(static_cast<IPC::Message*>(NULL), message); |
416 ChromeViewHostMsg_TranslateLanguageDetermined::Param params; | 416 ChromeViewHostMsg_TranslateLanguageDetermined::Param params; |
417 ChromeViewHostMsg_TranslateLanguageDetermined::Read(message, ¶ms); | 417 ChromeViewHostMsg_TranslateLanguageDetermined::Read(message, ¶ms); |
418 EXPECT_EQ("es", params.a); | 418 EXPECT_EQ("es", params.a.adopted_language); |
419 render_thread_->sink().ClearMessages(); | 419 render_thread_->sink().ClearMessages(); |
420 | 420 |
421 // Makes sure we support multiple languages specified. | 421 // Makes sure we support multiple languages specified. |
422 LoadHTML("<html><head><meta http-equiv=\"Content-Language\" " | 422 LoadHTML("<html><head><meta http-equiv=\"Content-Language\" " |
423 "content=\" fr , es,en \">" | 423 "content=\" fr , es,en \">" |
424 "</head><body>A random page with random content.</body></html>"); | 424 "</head><body>A random page with random content.</body></html>"); |
425 message = render_thread_->sink().GetUniqueMessageMatching( | 425 message = render_thread_->sink().GetUniqueMessageMatching( |
426 ChromeViewHostMsg_TranslateLanguageDetermined::ID); | 426 ChromeViewHostMsg_TranslateLanguageDetermined::ID); |
427 ASSERT_NE(static_cast<IPC::Message*>(NULL), message); | 427 ASSERT_NE(static_cast<IPC::Message*>(NULL), message); |
428 ChromeViewHostMsg_TranslateLanguageDetermined::Read(message, ¶ms); | 428 ChromeViewHostMsg_TranslateLanguageDetermined::Read(message, ¶ms); |
429 EXPECT_EQ("fr", params.a); | 429 EXPECT_EQ("fr", params.a.adopted_language); |
430 } | 430 } |
431 | 431 |
432 // Tests that the language meta tag is converted to Chrome standard of dashes | 432 // Tests that the language meta tag is converted to Chrome standard of dashes |
433 // instead of underscores and proper capitalization. | 433 // instead of underscores and proper capitalization. |
434 // http://code.google.com/p/chromium/issues/detail?id=159487 | 434 // http://code.google.com/p/chromium/issues/detail?id=159487 |
435 TEST_F(ChromeRenderViewTest, LanguageCommonMistakesAreCorrected) { | 435 TEST_F(ChromeRenderViewTest, LanguageCommonMistakesAreCorrected) { |
436 // Suppress the normal delay that occurs when the page is loaded before which | 436 // Suppress the normal delay that occurs when the page is loaded before which |
437 // the renderer sends the page contents to the browser. | 437 // the renderer sends the page contents to the browser. |
438 SendContentStateImmediately(); | 438 SendContentStateImmediately(); |
439 | 439 |
440 LoadHTML("<html><head><meta http-equiv='Content-Language' content='EN_us'>" | 440 LoadHTML("<html><head><meta http-equiv='Content-Language' content='EN_us'>" |
441 "</head><body>A random page with random content.</body></html>"); | 441 "</head><body>A random page with random content.</body></html>"); |
442 const IPC::Message* message = render_thread_->sink().GetUniqueMessageMatching( | 442 const IPC::Message* message = render_thread_->sink().GetUniqueMessageMatching( |
443 ChromeViewHostMsg_TranslateLanguageDetermined::ID); | 443 ChromeViewHostMsg_TranslateLanguageDetermined::ID); |
444 ASSERT_NE(static_cast<IPC::Message*>(NULL), message); | 444 ASSERT_NE(static_cast<IPC::Message*>(NULL), message); |
445 ChromeViewHostMsg_TranslateLanguageDetermined::Param params; | 445 ChromeViewHostMsg_TranslateLanguageDetermined::Param params; |
446 ChromeViewHostMsg_TranslateLanguageDetermined::Read(message, ¶ms); | 446 ChromeViewHostMsg_TranslateLanguageDetermined::Read(message, ¶ms); |
447 EXPECT_EQ("en-US", params.a); | 447 EXPECT_EQ("en-US", params.a.adopted_language); |
448 render_thread_->sink().ClearMessages(); | 448 render_thread_->sink().ClearMessages(); |
449 } | 449 } |
450 | 450 |
451 // Tests that a back navigation gets a translate language message. | 451 // Tests that a back navigation gets a translate language message. |
452 TEST_F(ChromeRenderViewTest, BackToTranslatablePage) { | 452 TEST_F(ChromeRenderViewTest, BackToTranslatablePage) { |
453 SendContentStateImmediately(); | 453 SendContentStateImmediately(); |
454 LoadHTML("<html><head><meta http-equiv=\"content-language\" content=\"zh\">" | 454 LoadHTML("<html><head><meta http-equiv=\"content-language\" content=\"zh\">" |
455 "</head><body>This page is in Chinese.</body></html>"); | 455 "</head><body>This page is in Chinese.</body></html>"); |
456 const IPC::Message* message = render_thread_->sink().GetUniqueMessageMatching( | 456 const IPC::Message* message = render_thread_->sink().GetUniqueMessageMatching( |
457 ChromeViewHostMsg_TranslateLanguageDetermined::ID); | 457 ChromeViewHostMsg_TranslateLanguageDetermined::ID); |
458 ASSERT_NE(static_cast<IPC::Message*>(NULL), message); | 458 ASSERT_NE(static_cast<IPC::Message*>(NULL), message); |
459 ChromeViewHostMsg_TranslateLanguageDetermined::Param params; | 459 ChromeViewHostMsg_TranslateLanguageDetermined::Param params; |
460 ChromeViewHostMsg_TranslateLanguageDetermined::Read(message, ¶ms); | 460 ChromeViewHostMsg_TranslateLanguageDetermined::Read(message, ¶ms); |
461 EXPECT_EQ("zh", params.a); | 461 EXPECT_EQ("zh", params.a.adopted_language); |
462 render_thread_->sink().ClearMessages(); | 462 render_thread_->sink().ClearMessages(); |
463 | 463 |
464 LoadHTML("<html><head><meta http-equiv=\"content-language\" content=\"fr\">" | 464 LoadHTML("<html><head><meta http-equiv=\"content-language\" content=\"fr\">" |
465 "</head><body>This page is in French.</body></html>"); | 465 "</head><body>This page is in French.</body></html>"); |
466 message = render_thread_->sink().GetUniqueMessageMatching( | 466 message = render_thread_->sink().GetUniqueMessageMatching( |
467 ChromeViewHostMsg_TranslateLanguageDetermined::ID); | 467 ChromeViewHostMsg_TranslateLanguageDetermined::ID); |
468 ASSERT_NE(static_cast<IPC::Message*>(NULL), message); | 468 ASSERT_NE(static_cast<IPC::Message*>(NULL), message); |
469 ChromeViewHostMsg_TranslateLanguageDetermined::Read(message, ¶ms); | 469 ChromeViewHostMsg_TranslateLanguageDetermined::Read(message, ¶ms); |
470 EXPECT_EQ("fr", params.a); | 470 EXPECT_EQ("fr", params.a.adopted_language); |
471 render_thread_->sink().ClearMessages(); | 471 render_thread_->sink().ClearMessages(); |
472 | 472 |
473 GoBack(GetMainFrame()->previousHistoryItem()); | 473 GoBack(GetMainFrame()->previousHistoryItem()); |
474 | 474 |
475 message = render_thread_->sink().GetUniqueMessageMatching( | 475 message = render_thread_->sink().GetUniqueMessageMatching( |
476 ChromeViewHostMsg_TranslateLanguageDetermined::ID); | 476 ChromeViewHostMsg_TranslateLanguageDetermined::ID); |
477 ASSERT_NE(static_cast<IPC::Message*>(NULL), message); | 477 ASSERT_NE(static_cast<IPC::Message*>(NULL), message); |
478 ChromeViewHostMsg_TranslateLanguageDetermined::Read(message, ¶ms); | 478 ChromeViewHostMsg_TranslateLanguageDetermined::Read(message, ¶ms); |
479 EXPECT_EQ("zh", params.a); | 479 EXPECT_EQ("zh", params.a.adopted_language); |
480 render_thread_->sink().ClearMessages(); | 480 render_thread_->sink().ClearMessages(); |
481 } | 481 } |
OLD | NEW |