| 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 <stddef.h> | 5 #include <stddef.h> |
| 6 | 6 |
| 7 #include <algorithm> | 7 #include <algorithm> |
| 8 #include <memory> | 8 #include <memory> |
| 9 #include <set> | 9 #include <set> |
| 10 #include <tuple> | 10 #include <tuple> |
| (...skipping 488 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 499 ASSERT_TRUE(fetcher); | 499 ASSERT_TRUE(fetcher); |
| 500 net::Error error = success ? net::OK : net::ERR_FAILED; | 500 net::Error error = success ? net::OK : net::ERR_FAILED; |
| 501 fetcher->set_url(fetcher->GetOriginalURL()); | 501 fetcher->set_url(fetcher->GetOriginalURL()); |
| 502 fetcher->set_status(net::URLRequestStatus::FromError(error)); | 502 fetcher->set_status(net::URLRequestStatus::FromError(error)); |
| 503 fetcher->set_response_code(success ? 200 : 500); | 503 fetcher->set_response_code(success ? 200 : 500); |
| 504 fetcher->delegate()->OnURLFetchComplete(fetcher); | 504 fetcher->delegate()->OnURLFetchComplete(fetcher); |
| 505 } | 505 } |
| 506 | 506 |
| 507 void SimulateSupportedLanguagesURLFetch( | 507 void SimulateSupportedLanguagesURLFetch( |
| 508 bool success, | 508 bool success, |
| 509 const std::vector<std::string>& languages, | 509 const std::vector<std::string>& languages) { |
| 510 bool use_alpha_languages, | |
| 511 const std::vector<std::string>& alpha_languages) { | |
| 512 net::Error error = success ? net::OK : net::ERR_FAILED; | 510 net::Error error = success ? net::OK : net::ERR_FAILED; |
| 513 | 511 |
| 514 std::string data; | 512 std::string data; |
| 515 if (success) { | 513 if (success) { |
| 516 data = base::StringPrintf( | 514 data = base::StringPrintf( |
| 517 "{\"sl\": {\"bla\": \"bla\"}, \"%s\": {", | 515 "{\"sl\": {\"bla\": \"bla\"}, \"%s\": {", |
| 518 translate::TranslateLanguageList::kTargetLanguagesKey); | 516 translate::TranslateLanguageList::kTargetLanguagesKey); |
| 519 const char* comma = ""; | 517 const char* comma = ""; |
| 520 for (size_t i = 0; i < languages.size(); ++i) { | 518 for (size_t i = 0; i < languages.size(); ++i) { |
| 521 data += base::StringPrintf( | 519 data += base::StringPrintf( |
| 522 "%s\"%s\": \"UnusedFullName\"", comma, languages[i].c_str()); | 520 "%s\"%s\": \"UnusedFullName\"", comma, languages[i].c_str()); |
| 523 if (i == 0) | 521 if (i == 0) |
| 524 comma = ","; | 522 comma = ","; |
| 525 } | 523 } |
| 526 | |
| 527 if (use_alpha_languages) { | |
| 528 data += base::StringPrintf( | |
| 529 "},\"%s\": {", | |
| 530 translate::TranslateLanguageList::kAlphaLanguagesKey); | |
| 531 comma = ""; | |
| 532 for (size_t i = 0; i < alpha_languages.size(); ++i) { | |
| 533 data += base::StringPrintf( | |
| 534 "%s\"%s\": 1", comma, alpha_languages[i].c_str()); | |
| 535 if (i == 0) | |
| 536 comma = ","; | |
| 537 } | |
| 538 } | |
| 539 | |
| 540 data += "}}"; | 524 data += "}}"; |
| 541 } | 525 } |
| 542 net::TestURLFetcher* fetcher = url_fetcher_factory_.GetFetcherByID( | 526 net::TestURLFetcher* fetcher = url_fetcher_factory_.GetFetcherByID( |
| 543 translate::TranslateLanguageList::kFetcherId); | 527 translate::TranslateLanguageList::kFetcherId); |
| 544 ASSERT_TRUE(fetcher != NULL); | 528 ASSERT_TRUE(fetcher != NULL); |
| 545 fetcher->set_url(fetcher->GetOriginalURL()); | 529 fetcher->set_url(fetcher->GetOriginalURL()); |
| 546 fetcher->set_status(net::URLRequestStatus::FromError(error)); | 530 fetcher->set_status(net::URLRequestStatus::FromError(error)); |
| 547 fetcher->set_response_code(success ? 200 : 500); | 531 fetcher->set_response_code(success ? 200 : 500); |
| 548 fetcher->SetResponseString(data); | 532 fetcher->SetResponseString(data); |
| 549 fetcher->delegate()->OnURLFetchComplete(fetcher); | 533 fetcher->delegate()->OnURLFetchComplete(fetcher); |
| (...skipping 20 matching lines...) Expand all Loading... |
| 570 }; | 554 }; |
| 571 | 555 |
| 572 | 556 |
| 573 // A list of languages to fake being returned by the translate server. | 557 // A list of languages to fake being returned by the translate server. |
| 574 // Use only langauges for which Chrome's copy of ICU has | 558 // Use only langauges for which Chrome's copy of ICU has |
| 575 // display names in English locale. To save space, Chrome's copy of ICU | 559 // display names in English locale. To save space, Chrome's copy of ICU |
| 576 // does not have the display name for a language unless it's in the | 560 // does not have the display name for a language unless it's in the |
| 577 // Accept-Language list. | 561 // Accept-Language list. |
| 578 static const char* server_language_list[] = | 562 static const char* server_language_list[] = |
| 579 {"ach", "ak", "af", "en-CA", "zh", "yi", "fr-FR", "tl", "iw", "in", "xx"}; | 563 {"ach", "ak", "af", "en-CA", "zh", "yi", "fr-FR", "tl", "iw", "in", "xx"}; |
| 580 static const char* alpha_language_list[] = {"ach", "yi"}; | |
| 581 | 564 |
| 582 // Test the fetching of languages from the translate server | 565 // Test the fetching of languages from the translate server |
| 583 TEST_F(TranslateManagerRenderViewHostTest, FetchLanguagesFromTranslateServer) { | 566 TEST_F(TranslateManagerRenderViewHostTest, FetchLanguagesFromTranslateServer) { |
| 584 std::vector<std::string> server_languages; | 567 std::vector<std::string> server_languages; |
| 585 for (size_t i = 0; i < arraysize(server_language_list); ++i) | 568 for (size_t i = 0; i < arraysize(server_language_list); ++i) |
| 586 server_languages.push_back(server_language_list[i]); | 569 server_languages.push_back(server_language_list[i]); |
| 587 | 570 |
| 588 std::vector<std::string> alpha_languages; | |
| 589 for (size_t i = 0; i < arraysize(alpha_language_list); ++i) | |
| 590 alpha_languages.push_back(alpha_language_list[i]); | |
| 591 | |
| 592 // First, get the default languages list. Note that calling | 571 // First, get the default languages list. Note that calling |
| 593 // GetSupportedLanguages() invokes RequestLanguageList() internally. | 572 // GetSupportedLanguages() invokes RequestLanguageList() internally. |
| 594 std::vector<std::string> default_supported_languages; | 573 std::vector<std::string> default_supported_languages; |
| 595 translate::TranslateDownloadManager::GetSupportedLanguages( | 574 translate::TranslateDownloadManager::GetSupportedLanguages( |
| 596 &default_supported_languages); | 575 &default_supported_languages); |
| 597 // To make sure we got the defaults and don't confuse them with the mocks. | 576 // To make sure we got the defaults and don't confuse them with the mocks. |
| 598 ASSERT_NE(default_supported_languages.size(), server_languages.size()); | 577 ASSERT_NE(default_supported_languages.size(), server_languages.size()); |
| 599 | 578 |
| 600 // Check that we still get the defaults until the URLFetch has completed. | 579 // Check that we still get the defaults until the URLFetch has completed. |
| 601 std::vector<std::string> current_supported_languages; | 580 std::vector<std::string> current_supported_languages; |
| 602 translate::TranslateDownloadManager::GetSupportedLanguages( | 581 translate::TranslateDownloadManager::GetSupportedLanguages( |
| 603 ¤t_supported_languages); | 582 ¤t_supported_languages); |
| 604 EXPECT_EQ(default_supported_languages, current_supported_languages); | 583 EXPECT_EQ(default_supported_languages, current_supported_languages); |
| 605 | 584 |
| 606 // Also check that it didn't change if we failed the URL fetch. | 585 // Also check that it didn't change if we failed the URL fetch. |
| 607 SimulateSupportedLanguagesURLFetch( | 586 SimulateSupportedLanguagesURLFetch(false, std::vector<std::string>()); |
| 608 false, std::vector<std::string>(), true, std::vector<std::string>()); | |
| 609 current_supported_languages.clear(); | 587 current_supported_languages.clear(); |
| 610 translate::TranslateDownloadManager::GetSupportedLanguages( | 588 translate::TranslateDownloadManager::GetSupportedLanguages( |
| 611 ¤t_supported_languages); | 589 ¤t_supported_languages); |
| 612 EXPECT_EQ(default_supported_languages, current_supported_languages); | 590 EXPECT_EQ(default_supported_languages, current_supported_languages); |
| 613 | 591 |
| 614 // Now check that we got the appropriate set of languages from the server. | 592 // Now check that we got the appropriate set of languages from the server. |
| 615 SimulateSupportedLanguagesURLFetch( | 593 SimulateSupportedLanguagesURLFetch(true, server_languages); |
| 616 true, server_languages, true, alpha_languages); | |
| 617 current_supported_languages.clear(); | 594 current_supported_languages.clear(); |
| 618 translate::TranslateDownloadManager::GetSupportedLanguages( | 595 translate::TranslateDownloadManager::GetSupportedLanguages( |
| 619 ¤t_supported_languages); | 596 ¤t_supported_languages); |
| 620 // "xx" can't be displayed in the Translate infobar, so this is eliminated. | 597 // "xx" can't be displayed in the Translate infobar, so this is eliminated. |
| 621 EXPECT_EQ(server_languages.size() - 1, current_supported_languages.size()); | 598 EXPECT_EQ(server_languages.size() - 1, current_supported_languages.size()); |
| 622 // Not sure we need to guarantee the order of languages, so we find them. | 599 // Not sure we need to guarantee the order of languages, so we find them. |
| 623 for (size_t i = 0; i < server_languages.size(); ++i) { | 600 for (size_t i = 0; i < server_languages.size(); ++i) { |
| 624 const std::string& lang = server_languages[i]; | 601 const std::string& lang = server_languages[i]; |
| 625 if (lang == "xx") | 602 if (lang == "xx") |
| 626 continue; | 603 continue; |
| 627 EXPECT_NE(current_supported_languages.end(), | 604 EXPECT_NE(current_supported_languages.end(), |
| 628 std::find(current_supported_languages.begin(), | 605 std::find(current_supported_languages.begin(), |
| 629 current_supported_languages.end(), | 606 current_supported_languages.end(), lang)) |
| 630 lang)) << "lang=" << lang; | |
| 631 bool is_alpha = | |
| 632 std::find(alpha_languages.begin(), alpha_languages.end(), lang) != | |
| 633 alpha_languages.end(); | |
| 634 EXPECT_EQ(translate::TranslateDownloadManager::IsAlphaLanguage(lang), | |
| 635 is_alpha) | |
| 636 << "lang=" << lang; | 607 << "lang=" << lang; |
| 637 } | 608 } |
| 638 } | 609 } |
| 639 | |
| 640 // Test the fetching of languages from the translate server without 'al' | |
| 641 // parameter. | |
| 642 TEST_F(TranslateManagerRenderViewHostTest, | |
| 643 FetchLanguagesFromTranslateServerWithoutAlpha) { | |
| 644 std::vector<std::string> server_languages; | |
| 645 for (size_t i = 0; i < arraysize(server_language_list); ++i) | |
| 646 server_languages.push_back(server_language_list[i]); | |
| 647 | |
| 648 std::vector<std::string> alpha_languages; | |
| 649 for (size_t i = 0; i < arraysize(alpha_language_list); ++i) | |
| 650 alpha_languages.push_back(alpha_language_list[i]); | |
| 651 | |
| 652 // call GetSupportedLanguages to call RequestLanguageList internally. | |
| 653 std::vector<std::string> default_supported_languages; | |
| 654 translate::TranslateDownloadManager::GetSupportedLanguages( | |
| 655 &default_supported_languages); | |
| 656 | |
| 657 SimulateSupportedLanguagesURLFetch( | |
| 658 true, server_languages, false, alpha_languages); | |
| 659 | |
| 660 std::vector<std::string> current_supported_languages; | |
| 661 translate::TranslateDownloadManager::GetSupportedLanguages( | |
| 662 ¤t_supported_languages); | |
| 663 | |
| 664 // "xx" can't be displayed in the Translate infobar, so this is eliminated. | |
| 665 EXPECT_EQ(server_languages.size() - 1, current_supported_languages.size()); | |
| 666 | |
| 667 for (size_t i = 0; i < server_languages.size(); ++i) { | |
| 668 const std::string& lang = server_languages[i]; | |
| 669 if (lang == "xx") | |
| 670 continue; | |
| 671 EXPECT_NE(current_supported_languages.end(), | |
| 672 std::find(current_supported_languages.begin(), | |
| 673 current_supported_languages.end(), | |
| 674 lang)) << "lang=" << lang; | |
| 675 EXPECT_FALSE(translate::TranslateDownloadManager::IsAlphaLanguage(lang)) | |
| 676 << "lang=" << lang; | |
| 677 } | |
| 678 } | |
| 679 | 610 |
| 680 // The rest of the tests in this file depend on the translate infobar. They | 611 // The rest of the tests in this file depend on the translate infobar. They |
| 681 // should be ported to use the translate bubble. On Aura there is no infobar | 612 // should be ported to use the translate bubble. On Aura there is no infobar |
| 682 // so the tests are not compiled. | 613 // so the tests are not compiled. |
| 683 #if !defined(USE_AURA) | 614 #if !defined(USE_AURA) |
| 684 TEST_F(TranslateManagerRenderViewHostTest, NormalTranslate) { | 615 TEST_F(TranslateManagerRenderViewHostTest, NormalTranslate) { |
| 685 // See BubbleNormalTranslate for corresponding bubble UX testing. | 616 // See BubbleNormalTranslate for corresponding bubble UX testing. |
| 686 if (TranslateService::IsTranslateBubbleEnabled()) | 617 if (TranslateService::IsTranslateBubbleEnabled()) |
| 687 return; | 618 return; |
| 688 | 619 |
| (...skipping 1127 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1816 | 1747 |
| 1817 // Check the bubble exists instead of the infobar. | 1748 // Check the bubble exists instead of the infobar. |
| 1818 translate::TranslateInfoBarDelegate* infobar = GetTranslateInfoBar(); | 1749 translate::TranslateInfoBarDelegate* infobar = GetTranslateInfoBar(); |
| 1819 ASSERT_TRUE(infobar == NULL); | 1750 ASSERT_TRUE(infobar == NULL); |
| 1820 TranslateBubbleModel* bubble = factory->model(); | 1751 TranslateBubbleModel* bubble = factory->model(); |
| 1821 ASSERT_TRUE(bubble != NULL); | 1752 ASSERT_TRUE(bubble != NULL); |
| 1822 EXPECT_EQ(TranslateBubbleModel::VIEW_STATE_TRANSLATING, | 1753 EXPECT_EQ(TranslateBubbleModel::VIEW_STATE_TRANSLATING, |
| 1823 bubble->GetViewState()); | 1754 bubble->GetViewState()); |
| 1824 } | 1755 } |
| 1825 #endif // defined(USE_AURA) | 1756 #endif // defined(USE_AURA) |
| OLD | NEW |