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/chrome_translate_client.h" | 19 #include "chrome/browser/translate/chrome_translate_client.h" |
(...skipping 592 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
611 infobar = GetTranslateInfoBar(); | 612 infobar = GetTranslateInfoBar(); |
612 bool expected = | 613 bool expected = |
613 TranslateDownloadManager::IsSupportedLanguage(lang) && lang != "en"; | 614 TranslateDownloadManager::IsSupportedLanguage(lang) && lang != "en"; |
614 EXPECT_EQ(expected, infobar != NULL); | 615 EXPECT_EQ(expected, infobar != NULL); |
615 | 616 |
616 if (infobar != NULL) | 617 if (infobar != NULL) |
617 EXPECT_TRUE(CloseTranslateInfoBar()); | 618 EXPECT_TRUE(CloseTranslateInfoBar()); |
618 } | 619 } |
619 } | 620 } |
620 | 621 |
| 622 // A list of languages to fake being returned by the translate server. |
| 623 // Use only langauges for which Chrome's copy of ICU has |
| 624 // display names in English locale. To save space, Chrome's copy of ICU |
| 625 // does not have the display name for a language unless it's in the |
| 626 // Accept-Language list. |
| 627 static const char* server_language_list[] = |
| 628 {"ach", "ak", "af", "en-CA", "zh", "yi", "fr-FR", "tl", "iw", "in", "xx"}; |
| 629 static const char* alpha_language_list[] = {"ach", "yi"}; |
| 630 |
621 // Test the fetching of languages from the translate server | 631 // Test the fetching of languages from the translate server |
622 TEST_F(TranslateManagerRenderViewHostTest, FetchLanguagesFromTranslateServer) { | 632 TEST_F(TranslateManagerRenderViewHostTest, FetchLanguagesFromTranslateServer) { |
623 std::vector<std::string> server_languages; | 633 std::vector<std::string> server_languages; |
624 // A list of languages to fake being returned by the translate server. | 634 for (size_t i = 0; i < arraysize(server_language_list); ++i) |
625 server_languages.push_back("aa"); | 635 server_languages.push_back(server_language_list[i]); |
626 server_languages.push_back("ak"); | |
627 server_languages.push_back("ab"); | |
628 server_languages.push_back("en-CA"); | |
629 server_languages.push_back("zh"); | |
630 server_languages.push_back("yi"); | |
631 server_languages.push_back("fr-FR"); | |
632 server_languages.push_back("xx"); | |
633 | 636 |
634 std::vector<std::string> alpha_languages; | 637 std::vector<std::string> alpha_languages; |
635 alpha_languages.push_back("aa"); | 638 for (size_t i = 0; i < arraysize(alpha_language_list); ++i) |
636 alpha_languages.push_back("yi"); | 639 alpha_languages.push_back(alpha_language_list[i]); |
637 | 640 |
638 // First, get the default languages list. Note that calling | 641 // First, get the default languages list. Note that calling |
639 // GetSupportedLanguages() invokes RequestLanguageList() internally. | 642 // GetSupportedLanguages() invokes RequestLanguageList() internally. |
640 std::vector<std::string> default_supported_languages; | 643 std::vector<std::string> default_supported_languages; |
641 TranslateDownloadManager::GetSupportedLanguages(&default_supported_languages); | 644 TranslateDownloadManager::GetSupportedLanguages(&default_supported_languages); |
642 // To make sure we got the defaults and don't confuse them with the mocks. | 645 // To make sure we got the defaults and don't confuse them with the mocks. |
643 ASSERT_NE(default_supported_languages.size(), server_languages.size()); | 646 ASSERT_NE(default_supported_languages.size(), server_languages.size()); |
644 | 647 |
645 // Check that we still get the defaults until the URLFetch has completed. | 648 // Check that we still get the defaults until the URLFetch has completed. |
646 std::vector<std::string> current_supported_languages; | 649 std::vector<std::string> current_supported_languages; |
(...skipping 15 matching lines...) Expand all Loading... |
662 // "xx" can't be displayed in the Translate infobar, so this is eliminated. | 665 // "xx" can't be displayed in the Translate infobar, so this is eliminated. |
663 EXPECT_EQ(server_languages.size() - 1, current_supported_languages.size()); | 666 EXPECT_EQ(server_languages.size() - 1, current_supported_languages.size()); |
664 // Not sure we need to guarantee the order of languages, so we find them. | 667 // Not sure we need to guarantee the order of languages, so we find them. |
665 for (size_t i = 0; i < server_languages.size(); ++i) { | 668 for (size_t i = 0; i < server_languages.size(); ++i) { |
666 const std::string& lang = server_languages[i]; | 669 const std::string& lang = server_languages[i]; |
667 if (lang == "xx") | 670 if (lang == "xx") |
668 continue; | 671 continue; |
669 EXPECT_NE(current_supported_languages.end(), | 672 EXPECT_NE(current_supported_languages.end(), |
670 std::find(current_supported_languages.begin(), | 673 std::find(current_supported_languages.begin(), |
671 current_supported_languages.end(), | 674 current_supported_languages.end(), |
672 lang)); | 675 lang)) << "lang=" << lang; |
673 bool is_alpha = | 676 bool is_alpha = |
674 std::find(alpha_languages.begin(), alpha_languages.end(), lang) != | 677 std::find(alpha_languages.begin(), alpha_languages.end(), lang) != |
675 alpha_languages.end(); | 678 alpha_languages.end(); |
676 EXPECT_EQ(TranslateDownloadManager::IsAlphaLanguage(lang), is_alpha); | 679 EXPECT_EQ(TranslateDownloadManager::IsAlphaLanguage(lang), |
| 680 is_alpha) << "lang=" << lang; |
677 } | 681 } |
678 } | 682 } |
679 | 683 |
680 // Test the fetching of languages from the translate server without 'al' | 684 // Test the fetching of languages from the translate server without 'al' |
681 // parameter. | 685 // parameter. |
682 TEST_F(TranslateManagerRenderViewHostTest, | 686 TEST_F(TranslateManagerRenderViewHostTest, |
683 FetchLanguagesFromTranslateServerWithoutAlpha) { | 687 FetchLanguagesFromTranslateServerWithoutAlpha) { |
684 std::vector<std::string> server_languages; | 688 std::vector<std::string> server_languages; |
685 server_languages.push_back("aa"); | 689 for (size_t i = 0; i < arraysize(server_language_list); ++i) |
686 server_languages.push_back("ak"); | 690 server_languages.push_back(server_language_list[i]); |
687 server_languages.push_back("ab"); | |
688 server_languages.push_back("en-CA"); | |
689 server_languages.push_back("zh"); | |
690 server_languages.push_back("yi"); | |
691 server_languages.push_back("fr-FR"); | |
692 server_languages.push_back("xx"); | |
693 | 691 |
694 std::vector<std::string> alpha_languages; | 692 std::vector<std::string> alpha_languages; |
695 alpha_languages.push_back("aa"); | 693 for (size_t i = 0; i < arraysize(alpha_language_list); ++i) |
696 alpha_languages.push_back("yi"); | 694 alpha_languages.push_back(alpha_language_list[i]); |
697 | 695 |
698 // call GetSupportedLanguages to call RequestLanguageList internally. | 696 // call GetSupportedLanguages to call RequestLanguageList internally. |
699 std::vector<std::string> default_supported_languages; | 697 std::vector<std::string> default_supported_languages; |
700 TranslateDownloadManager::GetSupportedLanguages(&default_supported_languages); | 698 TranslateDownloadManager::GetSupportedLanguages(&default_supported_languages); |
701 | 699 |
702 SimulateSupportedLanguagesURLFetch( | 700 SimulateSupportedLanguagesURLFetch( |
703 true, server_languages, false, alpha_languages); | 701 true, server_languages, false, alpha_languages); |
704 | 702 |
705 std::vector<std::string> current_supported_languages; | 703 std::vector<std::string> current_supported_languages; |
706 TranslateDownloadManager::GetSupportedLanguages(¤t_supported_languages); | 704 TranslateDownloadManager::GetSupportedLanguages(¤t_supported_languages); |
707 | 705 |
708 // "xx" can't be displayed in the Translate infobar, so this is eliminated. | 706 // "xx" can't be displayed in the Translate infobar, so this is eliminated. |
709 EXPECT_EQ(server_languages.size() - 1, current_supported_languages.size()); | 707 EXPECT_EQ(server_languages.size() - 1, current_supported_languages.size()); |
710 | 708 |
711 for (size_t i = 0; i < server_languages.size(); ++i) { | 709 for (size_t i = 0; i < server_languages.size(); ++i) { |
712 const std::string& lang = server_languages[i]; | 710 const std::string& lang = server_languages[i]; |
713 if (lang == "xx") | 711 if (lang == "xx") |
714 continue; | 712 continue; |
715 EXPECT_NE(current_supported_languages.end(), | 713 EXPECT_NE(current_supported_languages.end(), |
716 std::find(current_supported_languages.begin(), | 714 std::find(current_supported_languages.begin(), |
717 current_supported_languages.end(), | 715 current_supported_languages.end(), |
718 lang)); | 716 lang)) << "lang=" << lang; |
719 EXPECT_FALSE(TranslateDownloadManager::IsAlphaLanguage(lang)); | 717 EXPECT_FALSE(TranslateDownloadManager::IsAlphaLanguage(lang)) << |
| 718 "lang=" << lang; |
720 } | 719 } |
721 } | 720 } |
722 | 721 |
723 // Tests auto-translate on page. | 722 // Tests auto-translate on page. |
724 TEST_F(TranslateManagerRenderViewHostTest, AutoTranslateOnNavigate) { | 723 TEST_F(TranslateManagerRenderViewHostTest, AutoTranslateOnNavigate) { |
725 // TODO(port): Test corresponding bubble translate UX: http://crbug.com/383235 | 724 // TODO(port): Test corresponding bubble translate UX: http://crbug.com/383235 |
726 if (TranslateService::IsTranslateBubbleEnabled()) | 725 if (TranslateService::IsTranslateBubbleEnabled()) |
727 return; | 726 return; |
728 | 727 |
729 SimulateNavigation(GURL("http://www.google.fr"), "fr", true); | 728 SimulateNavigation(GURL("http://www.google.fr"), "fr", true); |
(...skipping 915 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1645 menu->ExecuteCommand(IDC_CONTENT_CONTEXT_TRANSLATE, 0); | 1644 menu->ExecuteCommand(IDC_CONTENT_CONTEXT_TRANSLATE, 0); |
1646 | 1645 |
1647 // Check the bubble exists instead of the infobar. | 1646 // Check the bubble exists instead of the infobar. |
1648 TranslateInfoBarDelegate* infobar = GetTranslateInfoBar(); | 1647 TranslateInfoBarDelegate* infobar = GetTranslateInfoBar(); |
1649 ASSERT_TRUE(infobar == NULL); | 1648 ASSERT_TRUE(infobar == NULL); |
1650 TranslateBubbleModel* bubble = factory->model(); | 1649 TranslateBubbleModel* bubble = factory->model(); |
1651 ASSERT_TRUE(bubble != NULL); | 1650 ASSERT_TRUE(bubble != NULL); |
1652 EXPECT_EQ(TranslateBubbleModel::VIEW_STATE_TRANSLATING, | 1651 EXPECT_EQ(TranslateBubbleModel::VIEW_STATE_TRANSLATING, |
1653 bubble->GetViewState()); | 1652 bubble->GetViewState()); |
1654 } | 1653 } |
OLD | NEW |