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

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

Issue 143003020: Move TranslateLanguageList to the Translate component (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@removeDelegate
Patch Set: gn build Created 6 years, 10 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 (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 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/command_line.h" 9 #include "base/command_line.h"
10 #include "base/memory/scoped_ptr.h" 10 #include "base/memory/scoped_ptr.h"
11 #include "base/prefs/pref_change_registrar.h" 11 #include "base/prefs/pref_change_registrar.h"
12 #include "base/prefs/pref_service.h" 12 #include "base/prefs/pref_service.h"
13 #include "base/strings/stringprintf.h" 13 #include "base/strings/stringprintf.h"
14 #include "chrome/app/chrome_command_ids.h" 14 #include "chrome/app/chrome_command_ids.h"
15 #include "chrome/browser/chrome_notification_types.h" 15 #include "chrome/browser/chrome_notification_types.h"
16 #include "chrome/browser/extensions/test_extension_system.h" 16 #include "chrome/browser/extensions/test_extension_system.h"
17 #include "chrome/browser/infobars/infobar.h" 17 #include "chrome/browser/infobars/infobar.h"
18 #include "chrome/browser/infobars/infobar_service.h" 18 #include "chrome/browser/infobars/infobar_service.h"
19 #include "chrome/browser/prefs/session_startup_pref.h" 19 #include "chrome/browser/prefs/session_startup_pref.h"
20 #include "chrome/browser/tab_contents/render_view_context_menu.h" 20 #include "chrome/browser/tab_contents/render_view_context_menu.h"
21 #include "chrome/browser/translate/translate_infobar_delegate.h" 21 #include "chrome/browser/translate/translate_infobar_delegate.h"
22 #include "chrome/browser/translate/translate_language_list.h"
23 #include "chrome/browser/translate/translate_manager.h" 22 #include "chrome/browser/translate/translate_manager.h"
24 #include "chrome/browser/translate/translate_prefs.h" 23 #include "chrome/browser/translate/translate_prefs.h"
25 #include "chrome/browser/translate/translate_script.h" 24 #include "chrome/browser/translate/translate_script.h"
26 #include "chrome/browser/translate/translate_service.h" 25 #include "chrome/browser/translate/translate_service.h"
27 #include "chrome/browser/translate/translate_tab_helper.h" 26 #include "chrome/browser/translate/translate_tab_helper.h"
28 #include "chrome/browser/ui/browser.h" 27 #include "chrome/browser/ui/browser.h"
29 #include "chrome/browser/ui/tabs/tab_strip_model.h" 28 #include "chrome/browser/ui/tabs/tab_strip_model.h"
30 #include "chrome/browser/ui/translate/translate_bubble_factory.h" 29 #include "chrome/browser/ui/translate/translate_bubble_factory.h"
31 #include "chrome/browser/ui/translate/translate_bubble_model.h" 30 #include "chrome/browser/ui/translate/translate_bubble_model.h"
32 #include "chrome/browser/ui/translate/translate_bubble_model_impl.h" 31 #include "chrome/browser/ui/translate/translate_bubble_model_impl.h"
33 #include "chrome/common/chrome_switches.h" 32 #include "chrome/common/chrome_switches.h"
34 #include "chrome/common/pref_names.h" 33 #include "chrome/common/pref_names.h"
35 #include "chrome/common/render_messages.h" 34 #include "chrome/common/render_messages.h"
36 #include "chrome/common/url_constants.h" 35 #include "chrome/common/url_constants.h"
37 #include "chrome/test/base/chrome_render_view_host_test_harness.h" 36 #include "chrome/test/base/chrome_render_view_host_test_harness.h"
38 #include "chrome/test/base/in_process_browser_test.h" 37 #include "chrome/test/base/in_process_browser_test.h"
39 #include "chrome/test/base/testing_browser_process.h" 38 #include "chrome/test/base/testing_browser_process.h"
40 #include "chrome/test/base/testing_profile.h" 39 #include "chrome/test/base/testing_profile.h"
41 #include "chrome/test/base/ui_test_utils.h" 40 #include "chrome/test/base/ui_test_utils.h"
42 #include "components/translate/core/browser/translate_download_manager.h" 41 #include "components/translate/core/browser/translate_download_manager.h"
42 #include "components/translate/core/browser/translate_language_list.h"
43 #include "components/translate/core/common/language_detection_details.h" 43 #include "components/translate/core/common/language_detection_details.h"
44 #include "components/translate/core/common/translate_pref_names.h"
44 #include "content/public/browser/navigation_details.h" 45 #include "content/public/browser/navigation_details.h"
45 #include "content/public/browser/navigation_entry.h" 46 #include "content/public/browser/navigation_entry.h"
46 #include "content/public/browser/notification_details.h" 47 #include "content/public/browser/notification_details.h"
47 #include "content/public/browser/notification_registrar.h" 48 #include "content/public/browser/notification_registrar.h"
48 #include "content/public/browser/web_contents.h" 49 #include "content/public/browser/web_contents.h"
49 #include "content/public/test/mock_render_process_host.h" 50 #include "content/public/test/mock_render_process_host.h"
50 #include "content/public/test/test_renderer_host.h" 51 #include "content/public/test/test_renderer_host.h"
51 #include "net/url_request/test_url_fetcher_factory.h" 52 #include "net/url_request/test_url_fetcher_factory.h"
52 #include "net/url_request/url_fetcher_delegate.h" 53 #include "net/url_request/url_fetcher_delegate.h"
53 #include "testing/gmock/include/gmock/gmock.h" 54 #include "testing/gmock/include/gmock/gmock.h"
(...skipping 302 matching lines...) Expand 10 before | Expand all | Expand 10 after
356 TranslateErrors::Type error_type) OVERRIDE { 357 TranslateErrors::Type error_type) OVERRIDE {
357 if (model_) { 358 if (model_) {
358 model_->SetViewState(view_state); 359 model_->SetViewState(view_state);
359 return; 360 return;
360 } 361 }
361 362
362 TranslateTabHelper* translate_tab_helper = 363 TranslateTabHelper* translate_tab_helper =
363 TranslateTabHelper::FromWebContents(web_contents); 364 TranslateTabHelper::FromWebContents(web_contents);
364 std::string source_language = 365 std::string source_language =
365 translate_tab_helper->GetLanguageState().original_language(); 366 translate_tab_helper->GetLanguageState().original_language();
366 std::string target_language = TranslateManager::GetLanguageCode( 367 std::string target_language = TranslateDownloadManager::GetLanguageCode(
367 g_browser_process->GetApplicationLocale()); 368 g_browser_process->GetApplicationLocale());
368 scoped_ptr<TranslateUIDelegate> ui_delegate( 369 scoped_ptr<TranslateUIDelegate> ui_delegate(
369 new TranslateUIDelegate(web_contents, 370 new TranslateUIDelegate(web_contents,
370 source_language, 371 source_language,
371 target_language)); 372 target_language));
372 model_.reset( 373 model_.reset(
373 new TranslateBubbleModelImpl(view_state, ui_delegate.Pass())); 374 new TranslateBubbleModelImpl(view_state, ui_delegate.Pass()));
374 } 375 }
375 376
376 TranslateBubbleModel* model() { return model_.get(); } 377 TranslateBubbleModel* model() { return model_.get(); }
(...skipping 237 matching lines...) Expand 10 before | Expand all | Expand 10 after
614 " language=" << lang); 615 " language=" << lang);
615 616
616 // We should not have a translate infobar. 617 // We should not have a translate infobar.
617 TranslateInfoBarDelegate* infobar = GetTranslateInfoBar(); 618 TranslateInfoBarDelegate* infobar = GetTranslateInfoBar();
618 ASSERT_TRUE(infobar == NULL); 619 ASSERT_TRUE(infobar == NULL);
619 620
620 SimulateNavigation(url, lang, true); 621 SimulateNavigation(url, lang, true);
621 622
622 // Verify we have/don't have an info-bar as expected. 623 // Verify we have/don't have an info-bar as expected.
623 infobar = GetTranslateInfoBar(); 624 infobar = GetTranslateInfoBar();
624 bool expected = TranslateManager::IsSupportedLanguage(lang) && 625 bool expected =
625 lang != "en"; 626 TranslateDownloadManager::IsSupportedLanguage(lang) && lang != "en";
626 EXPECT_EQ(expected, infobar != NULL); 627 EXPECT_EQ(expected, infobar != NULL);
627 628
628 if (infobar != NULL) 629 if (infobar != NULL)
629 EXPECT_TRUE(CloseTranslateInfoBar()); 630 EXPECT_TRUE(CloseTranslateInfoBar());
630 } 631 }
631 } 632 }
632 633
633 // Test the fetching of languages from the translate server 634 // Test the fetching of languages from the translate server
634 TEST_F(TranslateManagerBrowserTest, FetchLanguagesFromTranslateServer) { 635 TEST_F(TranslateManagerBrowserTest, FetchLanguagesFromTranslateServer) {
635 std::vector<std::string> server_languages; 636 std::vector<std::string> server_languages;
636 // A list of languages to fake being returned by the translate server. 637 // A list of languages to fake being returned by the translate server.
637 server_languages.push_back("aa"); 638 server_languages.push_back("aa");
638 server_languages.push_back("ak"); 639 server_languages.push_back("ak");
639 server_languages.push_back("ab"); 640 server_languages.push_back("ab");
640 server_languages.push_back("en-CA"); 641 server_languages.push_back("en-CA");
641 server_languages.push_back("zh"); 642 server_languages.push_back("zh");
642 server_languages.push_back("yi"); 643 server_languages.push_back("yi");
643 server_languages.push_back("fr-FR"); 644 server_languages.push_back("fr-FR");
644 server_languages.push_back("xx"); 645 server_languages.push_back("xx");
645 646
646 std::vector<std::string> alpha_languages; 647 std::vector<std::string> alpha_languages;
647 alpha_languages.push_back("aa"); 648 alpha_languages.push_back("aa");
648 alpha_languages.push_back("yi"); 649 alpha_languages.push_back("yi");
649 650
650 // First, get the default languages list. Note that calling 651 // First, get the default languages list. Note that calling
651 // GetSupportedLanguages() invokes RequestLanguageList() internally. 652 // GetSupportedLanguages() invokes RequestLanguageList() internally.
652 std::vector<std::string> default_supported_languages; 653 std::vector<std::string> default_supported_languages;
653 TranslateManager::GetSupportedLanguages(&default_supported_languages); 654 TranslateDownloadManager::GetSupportedLanguages(&default_supported_languages);
654 // To make sure we got the defaults and don't confuse them with the mocks. 655 // To make sure we got the defaults and don't confuse them with the mocks.
655 ASSERT_NE(default_supported_languages.size(), server_languages.size()); 656 ASSERT_NE(default_supported_languages.size(), server_languages.size());
656 657
657 // Check that we still get the defaults until the URLFetch has completed. 658 // Check that we still get the defaults until the URLFetch has completed.
658 std::vector<std::string> current_supported_languages; 659 std::vector<std::string> current_supported_languages;
659 TranslateManager::GetSupportedLanguages(&current_supported_languages); 660 TranslateDownloadManager::GetSupportedLanguages(&current_supported_languages);
660 EXPECT_EQ(default_supported_languages, current_supported_languages); 661 EXPECT_EQ(default_supported_languages, current_supported_languages);
661 662
662 // Also check that it didn't change if we failed the URL fetch. 663 // Also check that it didn't change if we failed the URL fetch.
663 SimulateSupportedLanguagesURLFetch(false, std::vector<std::string>(), 664 SimulateSupportedLanguagesURLFetch(false, std::vector<std::string>(),
664 true, std::vector<std::string>()); 665 true, std::vector<std::string>());
665 current_supported_languages.clear(); 666 current_supported_languages.clear();
666 TranslateManager::GetSupportedLanguages(&current_supported_languages); 667 TranslateDownloadManager::GetSupportedLanguages(&current_supported_languages);
667 EXPECT_EQ(default_supported_languages, current_supported_languages); 668 EXPECT_EQ(default_supported_languages, current_supported_languages);
668 669
669 // Now check that we got the appropriate set of languages from the server. 670 // Now check that we got the appropriate set of languages from the server.
670 SimulateSupportedLanguagesURLFetch(true, server_languages, 671 SimulateSupportedLanguagesURLFetch(true, server_languages,
671 true, alpha_languages); 672 true, alpha_languages);
672 current_supported_languages.clear(); 673 current_supported_languages.clear();
673 TranslateManager::GetSupportedLanguages(&current_supported_languages); 674 TranslateDownloadManager::GetSupportedLanguages(&current_supported_languages);
674 // "xx" can't be displayed in the Translate inforbar, so this is eliminated. 675 // "xx" can't be displayed in the Translate inforbar, so this is eliminated.
675 EXPECT_EQ(server_languages.size() - 1, current_supported_languages.size()); 676 EXPECT_EQ(server_languages.size() - 1, current_supported_languages.size());
676 // Not sure we need to guarantee the order of languages, so we find them. 677 // Not sure we need to guarantee the order of languages, so we find them.
677 for (size_t i = 0; i < server_languages.size(); ++i) { 678 for (size_t i = 0; i < server_languages.size(); ++i) {
678 const std::string& lang = server_languages[i]; 679 const std::string& lang = server_languages[i];
679 if (lang == "xx") 680 if (lang == "xx")
680 continue; 681 continue;
681 EXPECT_NE(current_supported_languages.end(), 682 EXPECT_NE(current_supported_languages.end(),
682 std::find(current_supported_languages.begin(), 683 std::find(current_supported_languages.begin(),
683 current_supported_languages.end(), 684 current_supported_languages.end(),
684 lang)); 685 lang));
685 bool is_alpha = std::find(alpha_languages.begin(), 686 bool is_alpha = std::find(alpha_languages.begin(),
686 alpha_languages.end(), 687 alpha_languages.end(),
687 lang) != alpha_languages.end(); 688 lang) != alpha_languages.end();
688 EXPECT_EQ(TranslateManager::IsAlphaLanguage(lang), is_alpha); 689 EXPECT_EQ(TranslateDownloadManager::IsAlphaLanguage(lang), is_alpha);
689 } 690 }
690 } 691 }
691 692
692 // Test the fetching of languages from the translate server without 'al' 693 // Test the fetching of languages from the translate server without 'al'
693 // parameter. 694 // parameter.
694 TEST_F(TranslateManagerBrowserTest, 695 TEST_F(TranslateManagerBrowserTest,
695 FetchLanguagesFromTranslateServerWithoutAlpha) { 696 FetchLanguagesFromTranslateServerWithoutAlpha) {
696 std::vector<std::string> server_languages; 697 std::vector<std::string> server_languages;
697 server_languages.push_back("aa"); 698 server_languages.push_back("aa");
698 server_languages.push_back("ak"); 699 server_languages.push_back("ak");
699 server_languages.push_back("ab"); 700 server_languages.push_back("ab");
700 server_languages.push_back("en-CA"); 701 server_languages.push_back("en-CA");
701 server_languages.push_back("zh"); 702 server_languages.push_back("zh");
702 server_languages.push_back("yi"); 703 server_languages.push_back("yi");
703 server_languages.push_back("fr-FR"); 704 server_languages.push_back("fr-FR");
704 server_languages.push_back("xx"); 705 server_languages.push_back("xx");
705 706
706 std::vector<std::string> alpha_languages; 707 std::vector<std::string> alpha_languages;
707 alpha_languages.push_back("aa"); 708 alpha_languages.push_back("aa");
708 alpha_languages.push_back("yi"); 709 alpha_languages.push_back("yi");
709 710
710 // call GetSupportedLanguages to call RequestLanguageList internally. 711 // call GetSupportedLanguages to call RequestLanguageList internally.
711 std::vector<std::string> default_supported_languages; 712 std::vector<std::string> default_supported_languages;
712 TranslateManager::GetSupportedLanguages(&default_supported_languages); 713 TranslateDownloadManager::GetSupportedLanguages(&default_supported_languages);
713 714
714 SimulateSupportedLanguagesURLFetch(true, server_languages, 715 SimulateSupportedLanguagesURLFetch(true, server_languages,
715 false, alpha_languages); 716 false, alpha_languages);
716 717
717 std::vector<std::string> current_supported_languages; 718 std::vector<std::string> current_supported_languages;
718 TranslateManager::GetSupportedLanguages(&current_supported_languages); 719 TranslateDownloadManager::GetSupportedLanguages(&current_supported_languages);
719 720
720 // "xx" can't be displayed in the Translate inforbar, so this is eliminated. 721 // "xx" can't be displayed in the Translate inforbar, so this is eliminated.
721 EXPECT_EQ(server_languages.size() - 1, current_supported_languages.size()); 722 EXPECT_EQ(server_languages.size() - 1, current_supported_languages.size());
722 723
723 for (size_t i = 0; i < server_languages.size(); ++i) { 724 for (size_t i = 0; i < server_languages.size(); ++i) {
724 const std::string& lang = server_languages[i]; 725 const std::string& lang = server_languages[i];
725 if (lang == "xx") 726 if (lang == "xx")
726 continue; 727 continue;
727 EXPECT_NE(current_supported_languages.end(), 728 EXPECT_NE(current_supported_languages.end(),
728 std::find(current_supported_languages.begin(), 729 std::find(current_supported_languages.begin(),
729 current_supported_languages.end(), 730 current_supported_languages.end(),
730 lang)); 731 lang));
731 EXPECT_FALSE(TranslateManager::IsAlphaLanguage(lang)); 732 EXPECT_FALSE(TranslateDownloadManager::IsAlphaLanguage(lang));
732 } 733 }
733 } 734 }
734 735
735 // Tests auto-translate on page. 736 // Tests auto-translate on page.
736 TEST_F(TranslateManagerBrowserTest, AutoTranslateOnNavigate) { 737 TEST_F(TranslateManagerBrowserTest, AutoTranslateOnNavigate) {
737 SimulateNavigation(GURL("http://www.google.fr"), "fr", true); 738 SimulateNavigation(GURL("http://www.google.fr"), "fr", true);
738 739
739 // Simulate the user translating. 740 // Simulate the user translating.
740 TranslateInfoBarDelegate* infobar = GetTranslateInfoBar(); 741 TranslateInfoBarDelegate* infobar = GetTranslateInfoBar();
741 ASSERT_TRUE(infobar != NULL); 742 ASSERT_TRUE(infobar != NULL);
(...skipping 883 matching lines...) Expand 10 before | Expand all | Expand 10 after
1625 content::WebContents* current_web_contents = 1626 content::WebContents* current_web_contents =
1626 browser()->tab_strip_model()->GetActiveWebContents(); 1627 browser()->tab_strip_model()->GetActiveWebContents();
1627 content::Source<content::WebContents> source(current_web_contents); 1628 content::Source<content::WebContents> source(current_web_contents);
1628 1629
1629 ui_test_utils::WindowedNotificationObserverWithDetails< 1630 ui_test_utils::WindowedNotificationObserverWithDetails<
1630 LanguageDetectionDetails> 1631 LanguageDetectionDetails>
1631 fr_language_detected_signal(chrome::NOTIFICATION_TAB_LANGUAGE_DETERMINED, 1632 fr_language_detected_signal(chrome::NOTIFICATION_TAB_LANGUAGE_DETERMINED,
1632 source); 1633 source);
1633 fr_language_detected_signal.Wait(); 1634 fr_language_detected_signal.Wait();
1634 } 1635 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698