OLD | NEW |
1 // Copyright 2014 The Chromium Authors. All rights reserved. | 1 // Copyright 2014 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 <algorithm> | 5 #include <algorithm> |
6 #include <set> | 6 #include <set> |
7 #include <vector> | 7 #include <vector> |
8 | 8 |
| 9 #include "base/macros.h" |
9 #include "base/memory/scoped_ptr.h" | 10 #include "base/memory/scoped_ptr.h" |
10 #include "base/prefs/pref_change_registrar.h" | 11 #include "base/prefs/pref_change_registrar.h" |
11 #include "base/prefs/pref_service.h" | 12 #include "base/prefs/pref_service.h" |
12 #include "base/strings/stringprintf.h" | 13 #include "base/strings/stringprintf.h" |
13 #include "chrome/app/chrome_command_ids.h" | 14 #include "chrome/app/chrome_command_ids.h" |
14 #include "chrome/browser/chrome_notification_types.h" | 15 #include "chrome/browser/chrome_notification_types.h" |
15 #include "chrome/browser/extensions/test_extension_system.h" | 16 #include "chrome/browser/extensions/test_extension_system.h" |
16 #include "chrome/browser/infobars/infobar_service.h" | 17 #include "chrome/browser/infobars/infobar_service.h" |
17 #include "chrome/browser/renderer_context_menu/render_view_context_menu_test_uti
l.h" | 18 #include "chrome/browser/renderer_context_menu/render_view_context_menu_test_uti
l.h" |
18 #include "chrome/browser/translate/translate_infobar_delegate.h" | 19 #include "chrome/browser/translate/translate_infobar_delegate.h" |
(...skipping 577 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
596 infobar = GetTranslateInfoBar(); | 597 infobar = GetTranslateInfoBar(); |
597 bool expected = | 598 bool expected = |
598 TranslateDownloadManager::IsSupportedLanguage(lang) && lang != "en"; | 599 TranslateDownloadManager::IsSupportedLanguage(lang) && lang != "en"; |
599 EXPECT_EQ(expected, infobar != NULL); | 600 EXPECT_EQ(expected, infobar != NULL); |
600 | 601 |
601 if (infobar != NULL) | 602 if (infobar != NULL) |
602 EXPECT_TRUE(CloseTranslateInfoBar()); | 603 EXPECT_TRUE(CloseTranslateInfoBar()); |
603 } | 604 } |
604 } | 605 } |
605 | 606 |
| 607 // A list of languages to fake being returned by the translate server. |
| 608 // Use only langauges for which Chrome's copy of ICU has |
| 609 // display names in English locale. To save space, Chrome's copy of ICU |
| 610 // does not have the display name for a language unless it's in the |
| 611 // Accept-Language list. |
| 612 static const char* server_language_list[] = |
| 613 {"ach", "ak", "af", "en-CA", "zh", "yi", "fr-FR", "tl", "iw", "in", "xx"}; |
| 614 static const char* alpha_language_list[] = {"ach", "yi"}; |
| 615 |
606 // Test the fetching of languages from the translate server | 616 // Test the fetching of languages from the translate server |
607 TEST_F(TranslateManagerRenderViewHostTest, FetchLanguagesFromTranslateServer) { | 617 TEST_F(TranslateManagerRenderViewHostTest, FetchLanguagesFromTranslateServer) { |
608 std::vector<std::string> server_languages; | 618 std::vector<std::string> server_languages; |
609 // A list of languages to fake being returned by the translate server. | 619 for (size_t i = 0; i < arraysize(server_language_list); ++i) |
610 server_languages.push_back("aa"); | 620 server_languages.push_back(server_language_list[i]); |
611 server_languages.push_back("ak"); | |
612 server_languages.push_back("ab"); | |
613 server_languages.push_back("en-CA"); | |
614 server_languages.push_back("zh"); | |
615 server_languages.push_back("yi"); | |
616 server_languages.push_back("fr-FR"); | |
617 server_languages.push_back("xx"); | |
618 | 621 |
619 std::vector<std::string> alpha_languages; | 622 std::vector<std::string> alpha_languages; |
620 alpha_languages.push_back("aa"); | 623 for (size_t i = 0; i < arraysize(alpha_language_list); ++i) |
621 alpha_languages.push_back("yi"); | 624 alpha_languages.push_back(alpha_language_list[i]); |
622 | 625 |
623 // First, get the default languages list. Note that calling | 626 // First, get the default languages list. Note that calling |
624 // GetSupportedLanguages() invokes RequestLanguageList() internally. | 627 // GetSupportedLanguages() invokes RequestLanguageList() internally. |
625 std::vector<std::string> default_supported_languages; | 628 std::vector<std::string> default_supported_languages; |
626 TranslateDownloadManager::GetSupportedLanguages(&default_supported_languages); | 629 TranslateDownloadManager::GetSupportedLanguages(&default_supported_languages); |
627 // To make sure we got the defaults and don't confuse them with the mocks. | 630 // To make sure we got the defaults and don't confuse them with the mocks. |
628 ASSERT_NE(default_supported_languages.size(), server_languages.size()); | 631 ASSERT_NE(default_supported_languages.size(), server_languages.size()); |
629 | 632 |
630 // Check that we still get the defaults until the URLFetch has completed. | 633 // Check that we still get the defaults until the URLFetch has completed. |
631 std::vector<std::string> current_supported_languages; | 634 std::vector<std::string> current_supported_languages; |
(...skipping 15 matching lines...) Expand all Loading... |
647 // "xx" can't be displayed in the Translate inforbar, so this is eliminated. | 650 // "xx" can't be displayed in the Translate inforbar, so this is eliminated. |
648 EXPECT_EQ(server_languages.size() - 1, current_supported_languages.size()); | 651 EXPECT_EQ(server_languages.size() - 1, current_supported_languages.size()); |
649 // Not sure we need to guarantee the order of languages, so we find them. | 652 // Not sure we need to guarantee the order of languages, so we find them. |
650 for (size_t i = 0; i < server_languages.size(); ++i) { | 653 for (size_t i = 0; i < server_languages.size(); ++i) { |
651 const std::string& lang = server_languages[i]; | 654 const std::string& lang = server_languages[i]; |
652 if (lang == "xx") | 655 if (lang == "xx") |
653 continue; | 656 continue; |
654 EXPECT_NE(current_supported_languages.end(), | 657 EXPECT_NE(current_supported_languages.end(), |
655 std::find(current_supported_languages.begin(), | 658 std::find(current_supported_languages.begin(), |
656 current_supported_languages.end(), | 659 current_supported_languages.end(), |
657 lang)); | 660 lang)) << "lang=" << lang; |
658 bool is_alpha = | 661 bool is_alpha = |
659 std::find(alpha_languages.begin(), alpha_languages.end(), lang) != | 662 std::find(alpha_languages.begin(), alpha_languages.end(), lang) != |
660 alpha_languages.end(); | 663 alpha_languages.end(); |
661 EXPECT_EQ(TranslateDownloadManager::IsAlphaLanguage(lang), is_alpha); | 664 EXPECT_EQ(TranslateDownloadManager::IsAlphaLanguage(lang), |
| 665 is_alpha) << "lang=" << lang; |
662 } | 666 } |
663 } | 667 } |
664 | 668 |
665 // Test the fetching of languages from the translate server without 'al' | 669 // Test the fetching of languages from the translate server without 'al' |
666 // parameter. | 670 // parameter. |
667 TEST_F(TranslateManagerRenderViewHostTest, | 671 TEST_F(TranslateManagerRenderViewHostTest, |
668 FetchLanguagesFromTranslateServerWithoutAlpha) { | 672 FetchLanguagesFromTranslateServerWithoutAlpha) { |
669 std::vector<std::string> server_languages; | 673 std::vector<std::string> server_languages; |
670 server_languages.push_back("aa"); | 674 for (size_t i = 0; i < arraysize(server_language_list); ++i) |
671 server_languages.push_back("ak"); | 675 server_languages.push_back(server_language_list[i]); |
672 server_languages.push_back("ab"); | |
673 server_languages.push_back("en-CA"); | |
674 server_languages.push_back("zh"); | |
675 server_languages.push_back("yi"); | |
676 server_languages.push_back("fr-FR"); | |
677 server_languages.push_back("xx"); | |
678 | 676 |
679 std::vector<std::string> alpha_languages; | 677 std::vector<std::string> alpha_languages; |
680 alpha_languages.push_back("aa"); | 678 for (size_t i = 0; i < arraysize(alpha_language_list); ++i) |
681 alpha_languages.push_back("yi"); | 679 alpha_languages.push_back(alpha_language_list[i]); |
682 | 680 |
683 // call GetSupportedLanguages to call RequestLanguageList internally. | 681 // call GetSupportedLanguages to call RequestLanguageList internally. |
684 std::vector<std::string> default_supported_languages; | 682 std::vector<std::string> default_supported_languages; |
685 TranslateDownloadManager::GetSupportedLanguages(&default_supported_languages); | 683 TranslateDownloadManager::GetSupportedLanguages(&default_supported_languages); |
686 | 684 |
687 SimulateSupportedLanguagesURLFetch( | 685 SimulateSupportedLanguagesURLFetch( |
688 true, server_languages, false, alpha_languages); | 686 true, server_languages, false, alpha_languages); |
689 | 687 |
690 std::vector<std::string> current_supported_languages; | 688 std::vector<std::string> current_supported_languages; |
691 TranslateDownloadManager::GetSupportedLanguages(¤t_supported_languages); | 689 TranslateDownloadManager::GetSupportedLanguages(¤t_supported_languages); |
692 | 690 |
693 // "xx" can't be displayed in the Translate inforbar, so this is eliminated. | 691 // "xx" can't be displayed in the Translate inforbar, so this is eliminated. |
694 EXPECT_EQ(server_languages.size() - 1, current_supported_languages.size()); | 692 EXPECT_EQ(server_languages.size() - 1, current_supported_languages.size()); |
695 | 693 |
696 for (size_t i = 0; i < server_languages.size(); ++i) { | 694 for (size_t i = 0; i < server_languages.size(); ++i) { |
697 const std::string& lang = server_languages[i]; | 695 const std::string& lang = server_languages[i]; |
698 if (lang == "xx") | 696 if (lang == "xx") |
699 continue; | 697 continue; |
700 EXPECT_NE(current_supported_languages.end(), | 698 EXPECT_NE(current_supported_languages.end(), |
701 std::find(current_supported_languages.begin(), | 699 std::find(current_supported_languages.begin(), |
702 current_supported_languages.end(), | 700 current_supported_languages.end(), |
703 lang)); | 701 lang)) << "lang=" << lang; |
704 EXPECT_FALSE(TranslateDownloadManager::IsAlphaLanguage(lang)); | 702 EXPECT_FALSE(TranslateDownloadManager::IsAlphaLanguage(lang)) << |
| 703 "lang=" << lang; |
705 } | 704 } |
706 } | 705 } |
707 | 706 |
708 // Tests auto-translate on page. | 707 // Tests auto-translate on page. |
709 TEST_F(TranslateManagerRenderViewHostTest, AutoTranslateOnNavigate) { | 708 TEST_F(TranslateManagerRenderViewHostTest, AutoTranslateOnNavigate) { |
710 SimulateNavigation(GURL("http://www.google.fr"), "fr", true); | 709 SimulateNavigation(GURL("http://www.google.fr"), "fr", true); |
711 | 710 |
712 // Simulate the user translating. | 711 // Simulate the user translating. |
713 TranslateInfoBarDelegate* infobar = GetTranslateInfoBar(); | 712 TranslateInfoBarDelegate* infobar = GetTranslateInfoBar(); |
714 ASSERT_TRUE(infobar != NULL); | 713 ASSERT_TRUE(infobar != NULL); |
(...skipping 829 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1544 // Check the bubble exists instead of the infobar. | 1543 // Check the bubble exists instead of the infobar. |
1545 TranslateInfoBarDelegate* infobar = GetTranslateInfoBar(); | 1544 TranslateInfoBarDelegate* infobar = GetTranslateInfoBar(); |
1546 ASSERT_TRUE(infobar == NULL); | 1545 ASSERT_TRUE(infobar == NULL); |
1547 TranslateBubbleModel* bubble = factory->model(); | 1546 TranslateBubbleModel* bubble = factory->model(); |
1548 ASSERT_TRUE(bubble != NULL); | 1547 ASSERT_TRUE(bubble != NULL); |
1549 EXPECT_EQ(TranslateBubbleModel::VIEW_STATE_TRANSLATING, | 1548 EXPECT_EQ(TranslateBubbleModel::VIEW_STATE_TRANSLATING, |
1550 bubble->GetViewState()); | 1549 bubble->GetViewState()); |
1551 } | 1550 } |
1552 | 1551 |
1553 #endif // defined(USE_AURA) | 1552 #endif // defined(USE_AURA) |
OLD | NEW |