| 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 |