Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(257)

Side by Side Diff: chrome/browser/translate/translate_manager_render_view_host_unittest.cc

Issue 2821463003: Translate: remove alpha language support (Closed)
Patch Set: Merge branch 'master' into translate_remove_alpha Created 3 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
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
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
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 &current_supported_languages); 582 &current_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 &current_supported_languages); 589 &current_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 &current_supported_languages); 596 &current_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 &current_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
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)
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698