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