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