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

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: rebase 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 303 matching lines...) Expand 10 before | Expand all | Expand 10 after
357 TranslateErrors::Type error_type) OVERRIDE { 358 TranslateErrors::Type error_type) OVERRIDE {
358 if (model_) { 359 if (model_) {
359 model_->SetViewState(view_state); 360 model_->SetViewState(view_state);
360 return; 361 return;
361 } 362 }
362 363
363 TranslateTabHelper* translate_tab_helper = 364 TranslateTabHelper* translate_tab_helper =
364 TranslateTabHelper::FromWebContents(web_contents); 365 TranslateTabHelper::FromWebContents(web_contents);
365 std::string source_language = 366 std::string source_language =
366 translate_tab_helper->GetLanguageState().original_language(); 367 translate_tab_helper->GetLanguageState().original_language();
367 std::string target_language = TranslateManager::GetLanguageCode( 368 std::string target_language = TranslateDownloadManager::GetLanguageCode(
368 g_browser_process->GetApplicationLocale()); 369 g_browser_process->GetApplicationLocale());
369 scoped_ptr<TranslateUIDelegate> ui_delegate( 370 scoped_ptr<TranslateUIDelegate> ui_delegate(
370 new TranslateUIDelegate(web_contents, 371 new TranslateUIDelegate(web_contents,
371 source_language, 372 source_language,
372 target_language)); 373 target_language));
373 model_.reset( 374 model_.reset(
374 new TranslateBubbleModelImpl(view_state, ui_delegate.Pass())); 375 new TranslateBubbleModelImpl(view_state, ui_delegate.Pass()));
375 } 376 }
376 377
377 TranslateBubbleModel* model() { return model_.get(); } 378 TranslateBubbleModel* model() { return model_.get(); }
(...skipping 237 matching lines...) Expand 10 before | Expand all | Expand 10 after
615 " language=" << lang); 616 " language=" << lang);
616 617
617 // We should not have a translate infobar. 618 // We should not have a translate infobar.
618 TranslateInfoBarDelegate* infobar = GetTranslateInfoBar(); 619 TranslateInfoBarDelegate* infobar = GetTranslateInfoBar();
619 ASSERT_TRUE(infobar == NULL); 620 ASSERT_TRUE(infobar == NULL);
620 621
621 SimulateNavigation(url, lang, true); 622 SimulateNavigation(url, lang, true);
622 623
623 // Verify we have/don't have an info-bar as expected. 624 // Verify we have/don't have an info-bar as expected.
624 infobar = GetTranslateInfoBar(); 625 infobar = GetTranslateInfoBar();
625 bool expected = TranslateManager::IsSupportedLanguage(lang) && 626 bool expected =
626 lang != "en"; 627 TranslateDownloadManager::IsSupportedLanguage(lang) && lang != "en";
627 EXPECT_EQ(expected, infobar != NULL); 628 EXPECT_EQ(expected, infobar != NULL);
628 629
629 if (infobar != NULL) 630 if (infobar != NULL)
630 EXPECT_TRUE(CloseTranslateInfoBar()); 631 EXPECT_TRUE(CloseTranslateInfoBar());
631 } 632 }
632 } 633 }
633 634
634 // Test the fetching of languages from the translate server 635 // Test the fetching of languages from the translate server
635 TEST_F(TranslateManagerBrowserTest, FetchLanguagesFromTranslateServer) { 636 TEST_F(TranslateManagerBrowserTest, FetchLanguagesFromTranslateServer) {
636 std::vector<std::string> server_languages; 637 std::vector<std::string> server_languages;
637 // A list of languages to fake being returned by the translate server. 638 // A list of languages to fake being returned by the translate server.
638 server_languages.push_back("aa"); 639 server_languages.push_back("aa");
639 server_languages.push_back("ak"); 640 server_languages.push_back("ak");
640 server_languages.push_back("ab"); 641 server_languages.push_back("ab");
641 server_languages.push_back("en-CA"); 642 server_languages.push_back("en-CA");
642 server_languages.push_back("zh"); 643 server_languages.push_back("zh");
643 server_languages.push_back("yi"); 644 server_languages.push_back("yi");
644 server_languages.push_back("fr-FR"); 645 server_languages.push_back("fr-FR");
645 server_languages.push_back("xx"); 646 server_languages.push_back("xx");
646 647
647 std::vector<std::string> alpha_languages; 648 std::vector<std::string> alpha_languages;
648 alpha_languages.push_back("aa"); 649 alpha_languages.push_back("aa");
649 alpha_languages.push_back("yi"); 650 alpha_languages.push_back("yi");
650 651
651 // First, get the default languages list. Note that calling 652 // First, get the default languages list. Note that calling
652 // GetSupportedLanguages() invokes RequestLanguageList() internally. 653 // GetSupportedLanguages() invokes RequestLanguageList() internally.
653 std::vector<std::string> default_supported_languages; 654 std::vector<std::string> default_supported_languages;
654 TranslateManager::GetSupportedLanguages(&default_supported_languages); 655 TranslateDownloadManager::GetSupportedLanguages(&default_supported_languages);
655 // To make sure we got the defaults and don't confuse them with the mocks. 656 // To make sure we got the defaults and don't confuse them with the mocks.
656 ASSERT_NE(default_supported_languages.size(), server_languages.size()); 657 ASSERT_NE(default_supported_languages.size(), server_languages.size());
657 658
658 // Check that we still get the defaults until the URLFetch has completed. 659 // Check that we still get the defaults until the URLFetch has completed.
659 std::vector<std::string> current_supported_languages; 660 std::vector<std::string> current_supported_languages;
660 TranslateManager::GetSupportedLanguages(&current_supported_languages); 661 TranslateDownloadManager::GetSupportedLanguages(&current_supported_languages);
661 EXPECT_EQ(default_supported_languages, current_supported_languages); 662 EXPECT_EQ(default_supported_languages, current_supported_languages);
662 663
663 // Also check that it didn't change if we failed the URL fetch. 664 // Also check that it didn't change if we failed the URL fetch.
664 SimulateSupportedLanguagesURLFetch(false, std::vector<std::string>(), 665 SimulateSupportedLanguagesURLFetch(false, std::vector<std::string>(),
665 true, std::vector<std::string>()); 666 true, std::vector<std::string>());
666 current_supported_languages.clear(); 667 current_supported_languages.clear();
667 TranslateManager::GetSupportedLanguages(&current_supported_languages); 668 TranslateDownloadManager::GetSupportedLanguages(&current_supported_languages);
668 EXPECT_EQ(default_supported_languages, current_supported_languages); 669 EXPECT_EQ(default_supported_languages, current_supported_languages);
669 670
670 // Now check that we got the appropriate set of languages from the server. 671 // Now check that we got the appropriate set of languages from the server.
671 SimulateSupportedLanguagesURLFetch(true, server_languages, 672 SimulateSupportedLanguagesURLFetch(true, server_languages,
672 true, alpha_languages); 673 true, alpha_languages);
673 current_supported_languages.clear(); 674 current_supported_languages.clear();
674 TranslateManager::GetSupportedLanguages(&current_supported_languages); 675 TranslateDownloadManager::GetSupportedLanguages(&current_supported_languages);
675 // "xx" can't be displayed in the Translate inforbar, so this is eliminated. 676 // "xx" can't be displayed in the Translate inforbar, so this is eliminated.
676 EXPECT_EQ(server_languages.size() - 1, current_supported_languages.size()); 677 EXPECT_EQ(server_languages.size() - 1, current_supported_languages.size());
677 // Not sure we need to guarantee the order of languages, so we find them. 678 // Not sure we need to guarantee the order of languages, so we find them.
678 for (size_t i = 0; i < server_languages.size(); ++i) { 679 for (size_t i = 0; i < server_languages.size(); ++i) {
679 const std::string& lang = server_languages[i]; 680 const std::string& lang = server_languages[i];
680 if (lang == "xx") 681 if (lang == "xx")
681 continue; 682 continue;
682 EXPECT_NE(current_supported_languages.end(), 683 EXPECT_NE(current_supported_languages.end(),
683 std::find(current_supported_languages.begin(), 684 std::find(current_supported_languages.begin(),
684 current_supported_languages.end(), 685 current_supported_languages.end(),
685 lang)); 686 lang));
686 bool is_alpha = std::find(alpha_languages.begin(), 687 bool is_alpha = std::find(alpha_languages.begin(),
687 alpha_languages.end(), 688 alpha_languages.end(),
688 lang) != alpha_languages.end(); 689 lang) != alpha_languages.end();
689 EXPECT_EQ(TranslateManager::IsAlphaLanguage(lang), is_alpha); 690 EXPECT_EQ(TranslateDownloadManager::IsAlphaLanguage(lang), is_alpha);
690 } 691 }
691 } 692 }
692 693
693 // Test the fetching of languages from the translate server without 'al' 694 // Test the fetching of languages from the translate server without 'al'
694 // parameter. 695 // parameter.
695 TEST_F(TranslateManagerBrowserTest, 696 TEST_F(TranslateManagerBrowserTest,
696 FetchLanguagesFromTranslateServerWithoutAlpha) { 697 FetchLanguagesFromTranslateServerWithoutAlpha) {
697 std::vector<std::string> server_languages; 698 std::vector<std::string> server_languages;
698 server_languages.push_back("aa"); 699 server_languages.push_back("aa");
699 server_languages.push_back("ak"); 700 server_languages.push_back("ak");
700 server_languages.push_back("ab"); 701 server_languages.push_back("ab");
701 server_languages.push_back("en-CA"); 702 server_languages.push_back("en-CA");
702 server_languages.push_back("zh"); 703 server_languages.push_back("zh");
703 server_languages.push_back("yi"); 704 server_languages.push_back("yi");
704 server_languages.push_back("fr-FR"); 705 server_languages.push_back("fr-FR");
705 server_languages.push_back("xx"); 706 server_languages.push_back("xx");
706 707
707 std::vector<std::string> alpha_languages; 708 std::vector<std::string> alpha_languages;
708 alpha_languages.push_back("aa"); 709 alpha_languages.push_back("aa");
709 alpha_languages.push_back("yi"); 710 alpha_languages.push_back("yi");
710 711
711 // call GetSupportedLanguages to call RequestLanguageList internally. 712 // call GetSupportedLanguages to call RequestLanguageList internally.
712 std::vector<std::string> default_supported_languages; 713 std::vector<std::string> default_supported_languages;
713 TranslateManager::GetSupportedLanguages(&default_supported_languages); 714 TranslateDownloadManager::GetSupportedLanguages(&default_supported_languages);
714 715
715 SimulateSupportedLanguagesURLFetch(true, server_languages, 716 SimulateSupportedLanguagesURLFetch(true, server_languages,
716 false, alpha_languages); 717 false, alpha_languages);
717 718
718 std::vector<std::string> current_supported_languages; 719 std::vector<std::string> current_supported_languages;
719 TranslateManager::GetSupportedLanguages(&current_supported_languages); 720 TranslateDownloadManager::GetSupportedLanguages(&current_supported_languages);
720 721
721 // "xx" can't be displayed in the Translate inforbar, so this is eliminated. 722 // "xx" can't be displayed in the Translate inforbar, so this is eliminated.
722 EXPECT_EQ(server_languages.size() - 1, current_supported_languages.size()); 723 EXPECT_EQ(server_languages.size() - 1, current_supported_languages.size());
723 724
724 for (size_t i = 0; i < server_languages.size(); ++i) { 725 for (size_t i = 0; i < server_languages.size(); ++i) {
725 const std::string& lang = server_languages[i]; 726 const std::string& lang = server_languages[i];
726 if (lang == "xx") 727 if (lang == "xx")
727 continue; 728 continue;
728 EXPECT_NE(current_supported_languages.end(), 729 EXPECT_NE(current_supported_languages.end(),
729 std::find(current_supported_languages.begin(), 730 std::find(current_supported_languages.begin(),
730 current_supported_languages.end(), 731 current_supported_languages.end(),
731 lang)); 732 lang));
732 EXPECT_FALSE(TranslateManager::IsAlphaLanguage(lang)); 733 EXPECT_FALSE(TranslateDownloadManager::IsAlphaLanguage(lang));
733 } 734 }
734 } 735 }
735 736
736 // Tests auto-translate on page. 737 // Tests auto-translate on page.
737 TEST_F(TranslateManagerBrowserTest, AutoTranslateOnNavigate) { 738 TEST_F(TranslateManagerBrowserTest, AutoTranslateOnNavigate) {
738 SimulateNavigation(GURL("http://www.google.fr"), "fr", true); 739 SimulateNavigation(GURL("http://www.google.fr"), "fr", true);
739 740
740 // Simulate the user translating. 741 // Simulate the user translating.
741 TranslateInfoBarDelegate* infobar = GetTranslateInfoBar(); 742 TranslateInfoBarDelegate* infobar = GetTranslateInfoBar();
742 ASSERT_TRUE(infobar != NULL); 743 ASSERT_TRUE(infobar != NULL);
(...skipping 880 matching lines...) Expand 10 before | Expand all | Expand 10 after
1623 content::WebContents* current_web_contents = 1624 content::WebContents* current_web_contents =
1624 browser()->tab_strip_model()->GetActiveWebContents(); 1625 browser()->tab_strip_model()->GetActiveWebContents();
1625 content::Source<content::WebContents> source(current_web_contents); 1626 content::Source<content::WebContents> source(current_web_contents);
1626 1627
1627 ui_test_utils::WindowedNotificationObserverWithDetails< 1628 ui_test_utils::WindowedNotificationObserverWithDetails<
1628 LanguageDetectionDetails> 1629 LanguageDetectionDetails>
1629 fr_language_detected_signal(chrome::NOTIFICATION_TAB_LANGUAGE_DETERMINED, 1630 fr_language_detected_signal(chrome::NOTIFICATION_TAB_LANGUAGE_DETERMINED,
1630 source); 1631 source);
1631 fr_language_detected_signal.Wait(); 1632 fr_language_detected_signal.Wait();
1632 } 1633 }
OLDNEW
« no previous file with comments | « chrome/browser/translate/translate_manager.cc ('k') | chrome/browser/translate/translate_prefs.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698