| OLD | NEW |
| 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 | 5 |
| 6 #include <algorithm> | 6 #include <algorithm> |
| 7 #include <set> | 7 #include <set> |
| 8 #include <vector> | 8 #include <vector> |
| 9 | 9 |
| 10 #include "base/json/json_writer.h" | 10 #include "base/json/json_writer.h" |
| (...skipping 73 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 84 return details_; | 84 return details_; |
| 85 } | 85 } |
| 86 | 86 |
| 87 private: | 87 private: |
| 88 content::LoadCommittedDetails details_; | 88 content::LoadCommittedDetails details_; |
| 89 content::NotificationRegistrar registrar_; | 89 content::NotificationRegistrar registrar_; |
| 90 | 90 |
| 91 DISALLOW_COPY_AND_ASSIGN(NavEntryCommittedObserver); | 91 DISALLOW_COPY_AND_ASSIGN(NavEntryCommittedObserver); |
| 92 }; | 92 }; |
| 93 | 93 |
| 94 class TranslateManagerTest : public ChromeRenderViewHostTestHarness, | 94 class TranslateManagerBrowserTest : public ChromeRenderViewHostTestHarness, |
| 95 public content::NotificationObserver { | 95 public content::NotificationObserver { |
| 96 public: | 96 public: |
| 97 TranslateManagerTest() | 97 TranslateManagerBrowserTest() |
| 98 : pref_callback_(base::Bind(&TranslateManagerTest::OnPreferenceChanged, | 98 : pref_callback_( |
| 99 base::Unretained(this))), | 99 base::Bind(&TranslateManagerBrowserTest::OnPreferenceChanged, |
| 100 base::Unretained(this))), |
| 100 ui_thread_(BrowserThread::UI, &message_loop_) { | 101 ui_thread_(BrowserThread::UI, &message_loop_) { |
| 101 } | 102 } |
| 102 | 103 |
| 103 // Simulates navigating to a page and getting the page contents and language | 104 // Simulates navigating to a page and getting the page contents and language |
| 104 // for that navigation. | 105 // for that navigation. |
| 105 void SimulateNavigation(const GURL& url, | 106 void SimulateNavigation(const GURL& url, |
| 106 const std::string& lang, | 107 const std::string& lang, |
| 107 bool page_translatable) { | 108 bool page_translatable) { |
| 108 NavigateAndCommit(url); | 109 NavigateAndCommit(url); |
| 109 SimulateOnTranslateLanguageDetermined(lang, page_translatable); | 110 SimulateOnTranslateLanguageDetermined(lang, page_translatable); |
| (...skipping 197 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 307 content::NotificationRegistrar notification_registrar_; | 308 content::NotificationRegistrar notification_registrar_; |
| 308 net::TestURLFetcherFactory url_fetcher_factory_; | 309 net::TestURLFetcherFactory url_fetcher_factory_; |
| 309 content::TestBrowserThread ui_thread_; | 310 content::TestBrowserThread ui_thread_; |
| 310 content::RenderViewTest::RendererWebKitPlatformSupportImplNoSandbox | 311 content::RenderViewTest::RendererWebKitPlatformSupportImplNoSandbox |
| 311 webkit_platform_support_; | 312 webkit_platform_support_; |
| 312 | 313 |
| 313 // The infobars that have been removed. | 314 // The infobars that have been removed. |
| 314 // WARNING: the pointers point to deleted objects, use only for comparison. | 315 // WARNING: the pointers point to deleted objects, use only for comparison. |
| 315 std::set<InfoBarDelegate*> removed_infobars_; | 316 std::set<InfoBarDelegate*> removed_infobars_; |
| 316 | 317 |
| 317 DISALLOW_COPY_AND_ASSIGN(TranslateManagerTest); | 318 DISALLOW_COPY_AND_ASSIGN(TranslateManagerBrowserTest); |
| 318 }; | 319 }; |
| 319 | 320 |
| 320 namespace { | 321 namespace { |
| 321 | 322 |
| 322 class TestRenderViewContextMenu : public RenderViewContextMenu { | 323 class TestRenderViewContextMenu : public RenderViewContextMenu { |
| 323 public: | 324 public: |
| 324 static TestRenderViewContextMenu* CreateContextMenu( | 325 static TestRenderViewContextMenu* CreateContextMenu( |
| 325 WebContents* web_contents) { | 326 WebContents* web_contents) { |
| 326 content::ContextMenuParams params; | 327 content::ContextMenuParams params; |
| 327 params.media_type = WebKit::WebContextMenuData::MediaTypeNone; | 328 params.media_type = WebKit::WebContextMenuData::MediaTypeNone; |
| (...skipping 27 matching lines...) Expand all Loading... |
| 355 TestRenderViewContextMenu(WebContents* web_contents, | 356 TestRenderViewContextMenu(WebContents* web_contents, |
| 356 const content::ContextMenuParams& params) | 357 const content::ContextMenuParams& params) |
| 357 : RenderViewContextMenu(web_contents, params) { | 358 : RenderViewContextMenu(web_contents, params) { |
| 358 } | 359 } |
| 359 | 360 |
| 360 DISALLOW_COPY_AND_ASSIGN(TestRenderViewContextMenu); | 361 DISALLOW_COPY_AND_ASSIGN(TestRenderViewContextMenu); |
| 361 }; | 362 }; |
| 362 | 363 |
| 363 } // namespace | 364 } // namespace |
| 364 | 365 |
| 365 TEST_F(TranslateManagerTest, NormalTranslate) { | 366 TEST_F(TranslateManagerBrowserTest, NormalTranslate) { |
| 366 // Simulate navigating to a page. | 367 // Simulate navigating to a page. |
| 367 SimulateNavigation(GURL("http://www.google.fr"), "fr", true); | 368 SimulateNavigation(GURL("http://www.google.fr"), "fr", true); |
| 368 | 369 |
| 369 // We should have an infobar. | 370 // We should have an infobar. |
| 370 TranslateInfoBarDelegate* infobar = GetTranslateInfoBar(); | 371 TranslateInfoBarDelegate* infobar = GetTranslateInfoBar(); |
| 371 ASSERT_TRUE(infobar != NULL); | 372 ASSERT_TRUE(infobar != NULL); |
| 372 EXPECT_EQ(TranslateInfoBarDelegate::BEFORE_TRANSLATE, | 373 EXPECT_EQ(TranslateInfoBarDelegate::BEFORE_TRANSLATE, |
| 373 infobar->infobar_type()); | 374 infobar->infobar_type()); |
| 374 | 375 |
| 375 // Simulate clicking translate. | 376 // Simulate clicking translate. |
| (...skipping 62 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 438 new_infobar = GetTranslateInfoBar(); | 439 new_infobar = GetTranslateInfoBar(); |
| 439 ASSERT_TRUE(new_infobar != NULL); | 440 ASSERT_TRUE(new_infobar != NULL); |
| 440 | 441 |
| 441 // Verify reload keeps the same settings. | 442 // Verify reload keeps the same settings. |
| 442 ReloadAndWait(true); | 443 ReloadAndWait(true); |
| 443 new_infobar = GetTranslateInfoBar(); | 444 new_infobar = GetTranslateInfoBar(); |
| 444 ASSERT_TRUE(new_infobar != NULL); | 445 ASSERT_TRUE(new_infobar != NULL); |
| 445 ASSERT_EQ(new_target_lang, infobar->target_language_code()); | 446 ASSERT_EQ(new_target_lang, infobar->target_language_code()); |
| 446 } | 447 } |
| 447 | 448 |
| 448 TEST_F(TranslateManagerTest, TranslateScriptNotAvailable) { | 449 TEST_F(TranslateManagerBrowserTest, TranslateScriptNotAvailable) { |
| 449 // Simulate navigating to a page. | 450 // Simulate navigating to a page. |
| 450 SimulateNavigation(GURL("http://www.google.fr"), "fr", true); | 451 SimulateNavigation(GURL("http://www.google.fr"), "fr", true); |
| 451 | 452 |
| 452 // We should have an infobar. | 453 // We should have an infobar. |
| 453 TranslateInfoBarDelegate* infobar = GetTranslateInfoBar(); | 454 TranslateInfoBarDelegate* infobar = GetTranslateInfoBar(); |
| 454 ASSERT_TRUE(infobar != NULL); | 455 ASSERT_TRUE(infobar != NULL); |
| 455 EXPECT_EQ(TranslateInfoBarDelegate::BEFORE_TRANSLATE, | 456 EXPECT_EQ(TranslateInfoBarDelegate::BEFORE_TRANSLATE, |
| 456 infobar->infobar_type()); | 457 infobar->infobar_type()); |
| 457 | 458 |
| 458 // Simulate clicking translate. | 459 // Simulate clicking translate. |
| 459 process()->sink().ClearMessages(); | 460 process()->sink().ClearMessages(); |
| 460 infobar->Translate(); | 461 infobar->Translate(); |
| 461 // Simulate a failure retrieving the translate script. | 462 // Simulate a failure retrieving the translate script. |
| 462 SimulateTranslateScriptURLFetch(false); | 463 SimulateTranslateScriptURLFetch(false); |
| 463 | 464 |
| 464 // We should not have sent any message to translate to the renderer. | 465 // We should not have sent any message to translate to the renderer. |
| 465 EXPECT_FALSE(GetTranslateMessage(NULL, NULL, NULL)); | 466 EXPECT_FALSE(GetTranslateMessage(NULL, NULL, NULL)); |
| 466 | 467 |
| 467 // And we should have an error infobar showing. | 468 // And we should have an error infobar showing. |
| 468 infobar = GetTranslateInfoBar(); | 469 infobar = GetTranslateInfoBar(); |
| 469 ASSERT_TRUE(infobar != NULL); | 470 ASSERT_TRUE(infobar != NULL); |
| 470 EXPECT_EQ(TranslateInfoBarDelegate::TRANSLATION_ERROR, | 471 EXPECT_EQ(TranslateInfoBarDelegate::TRANSLATION_ERROR, |
| 471 infobar->infobar_type()); | 472 infobar->infobar_type()); |
| 472 } | 473 } |
| 473 | 474 |
| 474 // Ensures we deal correctly with pages for which the browser does not recognize | 475 // Ensures we deal correctly with pages for which the browser does not recognize |
| 475 // the language (the translate server may or not detect the language). | 476 // the language (the translate server may or not detect the language). |
| 476 TEST_F(TranslateManagerTest, TranslateUnknownLanguage) { | 477 TEST_F(TranslateManagerBrowserTest, TranslateUnknownLanguage) { |
| 477 // Simulate navigating to a page ("und" is the string returned by the CLD for | 478 // Simulate navigating to a page ("und" is the string returned by the CLD for |
| 478 // languages it does not recognize). | 479 // languages it does not recognize). |
| 479 SimulateNavigation(GURL("http://www.google.mys"), "und", true); | 480 SimulateNavigation(GURL("http://www.google.mys"), "und", true); |
| 480 | 481 |
| 481 // We should not have an infobar as we don't know the language. | 482 // We should not have an infobar as we don't know the language. |
| 482 ASSERT_TRUE(GetTranslateInfoBar() == NULL); | 483 ASSERT_TRUE(GetTranslateInfoBar() == NULL); |
| 483 | 484 |
| 484 // Translate the page anyway throught the context menu. | 485 // Translate the page anyway throught the context menu. |
| 485 scoped_ptr<TestRenderViewContextMenu> menu( | 486 scoped_ptr<TestRenderViewContextMenu> menu( |
| 486 TestRenderViewContextMenu::CreateContextMenu(web_contents())); | 487 TestRenderViewContextMenu::CreateContextMenu(web_contents())); |
| (...skipping 53 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 540 2, 0, "", "en", TranslateErrors::UNKNOWN_LANGUAGE)); | 541 2, 0, "", "en", TranslateErrors::UNKNOWN_LANGUAGE)); |
| 541 infobar = GetTranslateInfoBar(); | 542 infobar = GetTranslateInfoBar(); |
| 542 ASSERT_TRUE(infobar != NULL); | 543 ASSERT_TRUE(infobar != NULL); |
| 543 EXPECT_EQ(TranslateInfoBarDelegate::TRANSLATION_ERROR, | 544 EXPECT_EQ(TranslateInfoBarDelegate::TRANSLATION_ERROR, |
| 544 infobar->infobar_type()); | 545 infobar->infobar_type()); |
| 545 EXPECT_EQ(TranslateErrors::UNKNOWN_LANGUAGE, infobar->error_type()); | 546 EXPECT_EQ(TranslateErrors::UNKNOWN_LANGUAGE, infobar->error_type()); |
| 546 } | 547 } |
| 547 | 548 |
| 548 // Tests that we show/don't show an info-bar for all languages the CLD can | 549 // Tests that we show/don't show an info-bar for all languages the CLD can |
| 549 // report. | 550 // report. |
| 550 TEST_F(TranslateManagerTest, TestAllLanguages) { | 551 TEST_F(TranslateManagerBrowserTest, TestAllLanguages) { |
| 551 // The index in kExpectation are the Language enum (see languages.pb.h). | 552 // The index in kExpectation are the Language enum (see languages.pb.h). |
| 552 // true if we expect a translate infobar for that language. | 553 // true if we expect a translate infobar for that language. |
| 553 // Note the supported languages are in translation_manager.cc, see | 554 // Note the supported languages are in translation_manager.cc, see |
| 554 // kSupportedLanguages. | 555 // kSupportedLanguages. |
| 555 bool kExpectations[] = { | 556 bool kExpectations[] = { |
| 556 // 0-9 | 557 // 0-9 |
| 557 false, true, true, true, true, true, false, true, true, true, | 558 false, true, true, true, true, true, false, true, true, true, |
| 558 // 10-19 | 559 // 10-19 |
| 559 false, true, true, true, true, true, true, true, true, true, | 560 false, true, true, true, true, true, true, true, true, true, |
| 560 // 20-29 | 561 // 20-29 |
| (...skipping 48 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 609 infobar = GetTranslateInfoBar(); | 610 infobar = GetTranslateInfoBar(); |
| 610 EXPECT_EQ(kExpectations[i], infobar != NULL); | 611 EXPECT_EQ(kExpectations[i], infobar != NULL); |
| 611 | 612 |
| 612 // Close the info-bar if applicable. | 613 // Close the info-bar if applicable. |
| 613 if (infobar != NULL) | 614 if (infobar != NULL) |
| 614 EXPECT_TRUE(CloseTranslateInfoBar()); | 615 EXPECT_TRUE(CloseTranslateInfoBar()); |
| 615 } | 616 } |
| 616 } | 617 } |
| 617 | 618 |
| 618 // Test the fetching of languages from the translate server | 619 // Test the fetching of languages from the translate server |
| 619 TEST_F(TranslateManagerTest, FetchLanguagesFromTranslateServer) { | 620 TEST_F(TranslateManagerBrowserTest, FetchLanguagesFromTranslateServer) { |
| 620 std::vector<std::string> server_languages; | 621 std::vector<std::string> server_languages; |
| 621 // A list of languages to fake being returned by the translate server. | 622 // A list of languages to fake being returned by the translate server. |
| 622 server_languages.push_back("aa"); | 623 server_languages.push_back("aa"); |
| 623 server_languages.push_back("bb"); | 624 server_languages.push_back("bb"); |
| 624 server_languages.push_back("ab"); | 625 server_languages.push_back("ab"); |
| 625 server_languages.push_back("en-CA"); | 626 server_languages.push_back("en-CA"); |
| 626 server_languages.push_back("zz"); | 627 server_languages.push_back("zz"); |
| 627 server_languages.push_back("yy"); | 628 server_languages.push_back("yy"); |
| 628 server_languages.push_back("fr-FR"); | 629 server_languages.push_back("fr-FR"); |
| 629 | 630 |
| (...skipping 53 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 683 language_list_dict.Set("tl", target_languages_dict.release()); | 684 language_list_dict.Set("tl", target_languages_dict.release()); |
| 684 std::string language_list_json_str; | 685 std::string language_list_json_str; |
| 685 base::JSONWriter::Write(&language_list_dict, &language_list_json_str); | 686 base::JSONWriter::Write(&language_list_dict, &language_list_json_str); |
| 686 std::string language_list_str("sl("); | 687 std::string language_list_str("sl("); |
| 687 language_list_str += language_list_json_str; | 688 language_list_str += language_list_json_str; |
| 688 language_list_str += ")"; | 689 language_list_str += ")"; |
| 689 return language_list_str; | 690 return language_list_str; |
| 690 } | 691 } |
| 691 | 692 |
| 692 // Tests auto-translate on page. | 693 // Tests auto-translate on page. |
| 693 TEST_F(TranslateManagerTest, AutoTranslateOnNavigate) { | 694 TEST_F(TranslateManagerBrowserTest, AutoTranslateOnNavigate) { |
| 694 // Simulate navigating to a page and getting its language. | 695 // Simulate navigating to a page and getting its language. |
| 695 SimulateNavigation(GURL("http://www.google.fr"), "fr", true); | 696 SimulateNavigation(GURL("http://www.google.fr"), "fr", true); |
| 696 | 697 |
| 697 // Simulate the user translating. | 698 // Simulate the user translating. |
| 698 TranslateInfoBarDelegate* infobar = GetTranslateInfoBar(); | 699 TranslateInfoBarDelegate* infobar = GetTranslateInfoBar(); |
| 699 ASSERT_TRUE(infobar != NULL); | 700 ASSERT_TRUE(infobar != NULL); |
| 700 infobar->Translate(); | 701 infobar->Translate(); |
| 701 // Simulate the translate script being retrieved. | 702 // Simulate the translate script being retrieved. |
| 702 SimulateTranslateScriptURLFetch(true); | 703 SimulateTranslateScriptURLFetch(true); |
| 703 | 704 |
| (...skipping 16 matching lines...) Expand all Loading... |
| 720 | 721 |
| 721 // Now navigate to a page in a different language. | 722 // Now navigate to a page in a different language. |
| 722 process()->sink().ClearMessages(); | 723 process()->sink().ClearMessages(); |
| 723 SimulateNavigation(GURL("http://news.google.es"), "es", true); | 724 SimulateNavigation(GURL("http://news.google.es"), "es", true); |
| 724 | 725 |
| 725 // This should not have triggered a translate. | 726 // This should not have triggered a translate. |
| 726 EXPECT_FALSE(GetTranslateMessage(&page_id, &original_lang, &target_lang)); | 727 EXPECT_FALSE(GetTranslateMessage(&page_id, &original_lang, &target_lang)); |
| 727 } | 728 } |
| 728 | 729 |
| 729 // Tests that multiple OnPageContents do not cause multiple infobars. | 730 // Tests that multiple OnPageContents do not cause multiple infobars. |
| 730 TEST_F(TranslateManagerTest, MultipleOnPageContents) { | 731 TEST_F(TranslateManagerBrowserTest, MultipleOnPageContents) { |
| 731 // Simulate navigating to a page and getting its language. | 732 // Simulate navigating to a page and getting its language. |
| 732 SimulateNavigation(GURL("http://www.google.fr"), "fr", true); | 733 SimulateNavigation(GURL("http://www.google.fr"), "fr", true); |
| 733 | 734 |
| 734 // Simulate clicking 'Nope' (don't translate). | 735 // Simulate clicking 'Nope' (don't translate). |
| 735 EXPECT_TRUE(DenyTranslation()); | 736 EXPECT_TRUE(DenyTranslation()); |
| 736 EXPECT_EQ(0U, infobar_service()->GetInfoBarCount()); | 737 EXPECT_EQ(0U, infobar_service()->GetInfoBarCount()); |
| 737 | 738 |
| 738 // Send a new PageContents, we should not show an infobar. | 739 // Send a new PageContents, we should not show an infobar. |
| 739 SimulateOnTranslateLanguageDetermined("fr", true); | 740 SimulateOnTranslateLanguageDetermined("fr", true); |
| 740 EXPECT_EQ(0U, infobar_service()->GetInfoBarCount()); | 741 EXPECT_EQ(0U, infobar_service()->GetInfoBarCount()); |
| 741 | 742 |
| 742 // Do the same steps but simulate closing the infobar this time. | 743 // Do the same steps but simulate closing the infobar this time. |
| 743 SimulateNavigation(GURL("http://www.youtube.fr"), "fr", true); | 744 SimulateNavigation(GURL("http://www.youtube.fr"), "fr", true); |
| 744 EXPECT_TRUE(CloseTranslateInfoBar()); | 745 EXPECT_TRUE(CloseTranslateInfoBar()); |
| 745 EXPECT_EQ(0U, infobar_service()->GetInfoBarCount()); | 746 EXPECT_EQ(0U, infobar_service()->GetInfoBarCount()); |
| 746 SimulateOnTranslateLanguageDetermined("fr", true); | 747 SimulateOnTranslateLanguageDetermined("fr", true); |
| 747 EXPECT_EQ(0U, infobar_service()->GetInfoBarCount()); | 748 EXPECT_EQ(0U, infobar_service()->GetInfoBarCount()); |
| 748 } | 749 } |
| 749 | 750 |
| 750 // Test that reloading the page brings back the infobar if the | 751 // Test that reloading the page brings back the infobar if the |
| 751 // reload succeeded and does not bring it back the reload fails. | 752 // reload succeeded and does not bring it back the reload fails. |
| 752 TEST_F(TranslateManagerTest, Reload) { | 753 TEST_F(TranslateManagerBrowserTest, Reload) { |
| 753 // Simulate navigating to a page and getting its language. | 754 // Simulate navigating to a page and getting its language. |
| 754 SimulateNavigation(GURL("http://www.google.fr"), "fr", true); | 755 SimulateNavigation(GURL("http://www.google.fr"), "fr", true); |
| 755 | 756 |
| 756 // Close the infobar. | 757 // Close the infobar. |
| 757 EXPECT_TRUE(CloseTranslateInfoBar()); | 758 EXPECT_TRUE(CloseTranslateInfoBar()); |
| 758 | 759 |
| 759 // Reload should bring back the infobar if the page succeds | 760 // Reload should bring back the infobar if the page succeds |
| 760 ReloadAndWait(true); | 761 ReloadAndWait(true); |
| 761 EXPECT_TRUE(GetTranslateInfoBar() != NULL); | 762 EXPECT_TRUE(GetTranslateInfoBar() != NULL); |
| 762 | 763 |
| 763 // Close the infobar. | 764 // Close the infobar. |
| 764 EXPECT_TRUE(CloseTranslateInfoBar()); | 765 EXPECT_TRUE(CloseTranslateInfoBar()); |
| 765 | 766 |
| 766 // And not show it if the reload fails | 767 // And not show it if the reload fails |
| 767 ReloadAndWait(false); | 768 ReloadAndWait(false); |
| 768 EXPECT_EQ(NULL, GetTranslateInfoBar()); | 769 EXPECT_EQ(NULL, GetTranslateInfoBar()); |
| 769 } | 770 } |
| 770 | 771 |
| 771 // Test that reloading the page by way of typing again the URL in the | 772 // Test that reloading the page by way of typing again the URL in the |
| 772 // location bar brings back the infobar. | 773 // location bar brings back the infobar. |
| 773 TEST_F(TranslateManagerTest, ReloadFromLocationBar) { | 774 TEST_F(TranslateManagerBrowserTest, ReloadFromLocationBar) { |
| 774 GURL url("http://www.google.fr"); | 775 GURL url("http://www.google.fr"); |
| 775 | 776 |
| 776 // Simulate navigating to a page and getting its language. | 777 // Simulate navigating to a page and getting its language. |
| 777 SimulateNavigation(url, "fr", true); | 778 SimulateNavigation(url, "fr", true); |
| 778 | 779 |
| 779 // Close the infobar. | 780 // Close the infobar. |
| 780 EXPECT_TRUE(CloseTranslateInfoBar()); | 781 EXPECT_TRUE(CloseTranslateInfoBar()); |
| 781 | 782 |
| 782 // Create a pending navigation and simulate a page load. That should be the | 783 // Create a pending navigation and simulate a page load. That should be the |
| 783 // equivalent of typing the URL again in the location bar. | 784 // equivalent of typing the URL again in the location bar. |
| (...skipping 11 matching lines...) Expand all Loading... |
| 795 EXPECT_EQ(content::NAVIGATION_TYPE_SAME_PAGE, nav_details.type); | 796 EXPECT_EQ(content::NAVIGATION_TYPE_SAME_PAGE, nav_details.type); |
| 796 | 797 |
| 797 // The TranslateManager class processes the navigation entry committed | 798 // The TranslateManager class processes the navigation entry committed |
| 798 // notification in a posted task; process that task. | 799 // notification in a posted task; process that task. |
| 799 MessageLoop::current()->RunUntilIdle(); | 800 MessageLoop::current()->RunUntilIdle(); |
| 800 EXPECT_TRUE(GetTranslateInfoBar() != NULL); | 801 EXPECT_TRUE(GetTranslateInfoBar() != NULL); |
| 801 } | 802 } |
| 802 | 803 |
| 803 // Tests that a closed translate infobar does not reappear when navigating | 804 // Tests that a closed translate infobar does not reappear when navigating |
| 804 // in-page. | 805 // in-page. |
| 805 TEST_F(TranslateManagerTest, CloseInfoBarInPageNavigation) { | 806 TEST_F(TranslateManagerBrowserTest, CloseInfoBarInPageNavigation) { |
| 806 // Simulate navigating to a page and getting its language. | 807 // Simulate navigating to a page and getting its language. |
| 807 SimulateNavigation(GURL("http://www.google.fr"), "fr", true); | 808 SimulateNavigation(GURL("http://www.google.fr"), "fr", true); |
| 808 | 809 |
| 809 // Close the infobar. | 810 // Close the infobar. |
| 810 EXPECT_TRUE(CloseTranslateInfoBar()); | 811 EXPECT_TRUE(CloseTranslateInfoBar()); |
| 811 | 812 |
| 812 // Navigate in page, no infobar should be shown. | 813 // Navigate in page, no infobar should be shown. |
| 813 SimulateNavigation(GURL("http://www.google.fr/#ref1"), "fr", | 814 SimulateNavigation(GURL("http://www.google.fr/#ref1"), "fr", |
| 814 true); | 815 true); |
| 815 EXPECT_TRUE(GetTranslateInfoBar() == NULL); | 816 EXPECT_TRUE(GetTranslateInfoBar() == NULL); |
| 816 | 817 |
| 817 // Navigate out of page, a new infobar should show. | 818 // Navigate out of page, a new infobar should show. |
| 818 SimulateNavigation(GURL("http://www.google.fr/foot"), "fr", true); | 819 SimulateNavigation(GURL("http://www.google.fr/foot"), "fr", true); |
| 819 EXPECT_TRUE(GetTranslateInfoBar() != NULL); | 820 EXPECT_TRUE(GetTranslateInfoBar() != NULL); |
| 820 } | 821 } |
| 821 | 822 |
| 822 // Tests that a closed translate infobar does not reappear when navigating | 823 // Tests that a closed translate infobar does not reappear when navigating |
| 823 // in a subframe. (http://crbug.com/48215) | 824 // in a subframe. (http://crbug.com/48215) |
| 824 TEST_F(TranslateManagerTest, CloseInfoBarInSubframeNavigation) { | 825 TEST_F(TranslateManagerBrowserTest, CloseInfoBarInSubframeNavigation) { |
| 825 // Simulate navigating to a page and getting its language. | 826 // Simulate navigating to a page and getting its language. |
| 826 SimulateNavigation(GURL("http://www.google.fr"), "fr", true); | 827 SimulateNavigation(GURL("http://www.google.fr"), "fr", true); |
| 827 | 828 |
| 828 // Close the infobar. | 829 // Close the infobar. |
| 829 EXPECT_TRUE(CloseTranslateInfoBar()); | 830 EXPECT_TRUE(CloseTranslateInfoBar()); |
| 830 | 831 |
| 831 // Simulate a sub-frame auto-navigating. | 832 // Simulate a sub-frame auto-navigating. |
| 832 rvh_tester()->SendNavigateWithTransition( | 833 rvh_tester()->SendNavigateWithTransition( |
| 833 1, GURL("http://pub.com"), content::PAGE_TRANSITION_AUTO_SUBFRAME); | 834 1, GURL("http://pub.com"), content::PAGE_TRANSITION_AUTO_SUBFRAME); |
| 834 EXPECT_TRUE(GetTranslateInfoBar() == NULL); | 835 EXPECT_TRUE(GetTranslateInfoBar() == NULL); |
| 835 | 836 |
| 836 // Simulate the user navigating in a sub-frame. | 837 // Simulate the user navigating in a sub-frame. |
| 837 rvh_tester()->SendNavigateWithTransition( | 838 rvh_tester()->SendNavigateWithTransition( |
| 838 2, GURL("http://pub.com"), content::PAGE_TRANSITION_MANUAL_SUBFRAME); | 839 2, GURL("http://pub.com"), content::PAGE_TRANSITION_MANUAL_SUBFRAME); |
| 839 EXPECT_TRUE(GetTranslateInfoBar() == NULL); | 840 EXPECT_TRUE(GetTranslateInfoBar() == NULL); |
| 840 | 841 |
| 841 // Navigate out of page, a new infobar should show. | 842 // Navigate out of page, a new infobar should show. |
| 842 SimulateNavigation(GURL("http://www.google.fr/foot"), "fr", true); | 843 SimulateNavigation(GURL("http://www.google.fr/foot"), "fr", true); |
| 843 EXPECT_TRUE(GetTranslateInfoBar() != NULL); | 844 EXPECT_TRUE(GetTranslateInfoBar() != NULL); |
| 844 } | 845 } |
| 845 | 846 |
| 846 // Tests that denying translation is sticky when navigating in page. | 847 // Tests that denying translation is sticky when navigating in page. |
| 847 TEST_F(TranslateManagerTest, DenyTranslateInPageNavigation) { | 848 TEST_F(TranslateManagerBrowserTest, DenyTranslateInPageNavigation) { |
| 848 // Simulate navigating to a page and getting its language. | 849 // Simulate navigating to a page and getting its language. |
| 849 SimulateNavigation(GURL("http://www.google.fr"), "fr", true); | 850 SimulateNavigation(GURL("http://www.google.fr"), "fr", true); |
| 850 | 851 |
| 851 // Simulate clicking 'Nope' (don't translate). | 852 // Simulate clicking 'Nope' (don't translate). |
| 852 EXPECT_TRUE(DenyTranslation()); | 853 EXPECT_TRUE(DenyTranslation()); |
| 853 | 854 |
| 854 // Navigate in page, no infobar should be shown. | 855 // Navigate in page, no infobar should be shown. |
| 855 SimulateNavigation(GURL("http://www.google.fr/#ref1"), "fr", true); | 856 SimulateNavigation(GURL("http://www.google.fr/#ref1"), "fr", true); |
| 856 EXPECT_TRUE(GetTranslateInfoBar() == NULL); | 857 EXPECT_TRUE(GetTranslateInfoBar() == NULL); |
| 857 | 858 |
| 858 // Navigate out of page, a new infobar should show. | 859 // Navigate out of page, a new infobar should show. |
| 859 SimulateNavigation(GURL("http://www.google.fr/foot"), "fr", true); | 860 SimulateNavigation(GURL("http://www.google.fr/foot"), "fr", true); |
| 860 EXPECT_TRUE(GetTranslateInfoBar() != NULL); | 861 EXPECT_TRUE(GetTranslateInfoBar() != NULL); |
| 861 } | 862 } |
| 862 | 863 |
| 863 // Tests that after translating and closing the infobar, the infobar does not | 864 // Tests that after translating and closing the infobar, the infobar does not |
| 864 // return when navigating in page. | 865 // return when navigating in page. |
| 865 TEST_F(TranslateManagerTest, TranslateCloseInfoBarInPageNavigation) { | 866 TEST_F(TranslateManagerBrowserTest, TranslateCloseInfoBarInPageNavigation) { |
| 866 // Simulate navigating to a page and getting its language. | 867 // Simulate navigating to a page and getting its language. |
| 867 SimulateNavigation(GURL("http://www.google.fr"), "fr", true); | 868 SimulateNavigation(GURL("http://www.google.fr"), "fr", true); |
| 868 | 869 |
| 869 // Simulate the user translating. | 870 // Simulate the user translating. |
| 870 TranslateInfoBarDelegate* infobar = GetTranslateInfoBar(); | 871 TranslateInfoBarDelegate* infobar = GetTranslateInfoBar(); |
| 871 ASSERT_TRUE(infobar != NULL); | 872 ASSERT_TRUE(infobar != NULL); |
| 872 infobar->Translate(); | 873 infobar->Translate(); |
| 873 // Simulate the translate script being retrieved. | 874 // Simulate the translate script being retrieved. |
| 874 SimulateTranslateScriptURLFetch(true); | 875 SimulateTranslateScriptURLFetch(true); |
| 875 RenderViewHostTester::TestOnMessageReceived( | 876 RenderViewHostTester::TestOnMessageReceived( |
| (...skipping 11 matching lines...) Expand all Loading... |
| 887 // Navigate out of page, a new infobar should show. | 888 // Navigate out of page, a new infobar should show. |
| 888 // Note that we navigate to a page in a different language so we don't trigger | 889 // Note that we navigate to a page in a different language so we don't trigger |
| 889 // the auto-translate feature (it would translate the page automatically and | 890 // the auto-translate feature (it would translate the page automatically and |
| 890 // the before translate inforbar would not be shown). | 891 // the before translate inforbar would not be shown). |
| 891 SimulateNavigation(GURL("http://www.google.de"), "de", true); | 892 SimulateNavigation(GURL("http://www.google.de"), "de", true); |
| 892 EXPECT_TRUE(GetTranslateInfoBar() != NULL); | 893 EXPECT_TRUE(GetTranslateInfoBar() != NULL); |
| 893 } | 894 } |
| 894 | 895 |
| 895 // Tests that the after translate the infobar still shows when navigating | 896 // Tests that the after translate the infobar still shows when navigating |
| 896 // in-page. | 897 // in-page. |
| 897 TEST_F(TranslateManagerTest, TranslateInPageNavigation) { | 898 TEST_F(TranslateManagerBrowserTest, TranslateInPageNavigation) { |
| 898 // Simulate navigating to a page and getting its language. | 899 // Simulate navigating to a page and getting its language. |
| 899 SimulateNavigation(GURL("http://www.google.fr"), "fr", true); | 900 SimulateNavigation(GURL("http://www.google.fr"), "fr", true); |
| 900 | 901 |
| 901 // Simulate the user translating. | 902 // Simulate the user translating. |
| 902 TranslateInfoBarDelegate* infobar = GetTranslateInfoBar(); | 903 TranslateInfoBarDelegate* infobar = GetTranslateInfoBar(); |
| 903 ASSERT_TRUE(infobar != NULL); | 904 ASSERT_TRUE(infobar != NULL); |
| 904 infobar->Translate(); | 905 infobar->Translate(); |
| 905 // Simulate the translate script being retrieved. | 906 // Simulate the translate script being retrieved. |
| 906 SimulateTranslateScriptURLFetch(true); | 907 SimulateTranslateScriptURLFetch(true); |
| 907 RenderViewHostTester::TestOnMessageReceived( | 908 RenderViewHostTester::TestOnMessageReceived( |
| 908 rvh(), | 909 rvh(), |
| 909 ChromeViewHostMsg_PageTranslated( | 910 ChromeViewHostMsg_PageTranslated( |
| 910 0, 0, "fr", "en", TranslateErrors::NONE)); | 911 0, 0, "fr", "en", TranslateErrors::NONE)); |
| 911 // The after translate infobar is showing. | 912 // The after translate infobar is showing. |
| 912 infobar = GetTranslateInfoBar(); | 913 infobar = GetTranslateInfoBar(); |
| 913 ASSERT_TRUE(infobar != NULL); | 914 ASSERT_TRUE(infobar != NULL); |
| 914 | 915 |
| 915 // Navigate out of page, a new infobar should show. | 916 // Navigate out of page, a new infobar should show. |
| 916 // See note in TranslateCloseInfoBarInPageNavigation test on why it is | 917 // See note in TranslateCloseInfoBarInPageNavigation test on why it is |
| 917 // important to navigate to a page in a different language for this test. | 918 // important to navigate to a page in a different language for this test. |
| 918 SimulateNavigation(GURL("http://www.google.de"), "de", true); | 919 SimulateNavigation(GURL("http://www.google.de"), "de", true); |
| 919 // The old infobar is gone. | 920 // The old infobar is gone. |
| 920 EXPECT_TRUE(CheckInfoBarRemovedAndReset(infobar)); | 921 EXPECT_TRUE(CheckInfoBarRemovedAndReset(infobar)); |
| 921 // And there is a new one. | 922 // And there is a new one. |
| 922 EXPECT_TRUE(GetTranslateInfoBar() != NULL); | 923 EXPECT_TRUE(GetTranslateInfoBar() != NULL); |
| 923 } | 924 } |
| 924 | 925 |
| 925 // Tests that no translate infobar is shown when navigating to a page in an | 926 // Tests that no translate infobar is shown when navigating to a page in an |
| 926 // unsupported language. | 927 // unsupported language. |
| 927 TEST_F(TranslateManagerTest, CLDReportsUnsupportedPageLanguage) { | 928 TEST_F(TranslateManagerBrowserTest, CLDReportsUnsupportedPageLanguage) { |
| 928 // Simulate navigating to a page and getting an unsupported language. | 929 // Simulate navigating to a page and getting an unsupported language. |
| 929 SimulateNavigation(GURL("http://www.google.com"), "qbz", true); | 930 SimulateNavigation(GURL("http://www.google.com"), "qbz", true); |
| 930 | 931 |
| 931 // No info-bar should be shown. | 932 // No info-bar should be shown. |
| 932 EXPECT_TRUE(GetTranslateInfoBar() == NULL); | 933 EXPECT_TRUE(GetTranslateInfoBar() == NULL); |
| 933 } | 934 } |
| 934 | 935 |
| 935 // Tests that we deal correctly with unsupported languages returned by the | 936 // Tests that we deal correctly with unsupported languages returned by the |
| 936 // server. | 937 // server. |
| 937 // The translation server might return a language we don't support. | 938 // The translation server might return a language we don't support. |
| 938 TEST_F(TranslateManagerTest, ServerReportsUnsupportedLanguage) { | 939 TEST_F(TranslateManagerBrowserTest, ServerReportsUnsupportedLanguage) { |
| 939 // Simulate navigating to a page and translating it. | 940 // Simulate navigating to a page and translating it. |
| 940 SimulateNavigation(GURL("http://mail.google.fr"), "fr", true); | 941 SimulateNavigation(GURL("http://mail.google.fr"), "fr", true); |
| 941 TranslateInfoBarDelegate* infobar = GetTranslateInfoBar(); | 942 TranslateInfoBarDelegate* infobar = GetTranslateInfoBar(); |
| 942 ASSERT_TRUE(infobar != NULL); | 943 ASSERT_TRUE(infobar != NULL); |
| 943 process()->sink().ClearMessages(); | 944 process()->sink().ClearMessages(); |
| 944 infobar->Translate(); | 945 infobar->Translate(); |
| 945 SimulateTranslateScriptURLFetch(true); | 946 SimulateTranslateScriptURLFetch(true); |
| 946 // Simulate the render notifying the translation has been done, but it | 947 // Simulate the render notifying the translation has been done, but it |
| 947 // reports a language we don't support. | 948 // reports a language we don't support. |
| 948 RenderViewHostTester::TestOnMessageReceived( | 949 RenderViewHostTester::TestOnMessageReceived( |
| (...skipping 17 matching lines...) Expand all Loading... |
| 966 const IPC::Message* message = | 967 const IPC::Message* message = |
| 967 process()->sink().GetFirstMessageMatching( | 968 process()->sink().GetFirstMessageMatching( |
| 968 ChromeViewMsg_RevertTranslation::ID); | 969 ChromeViewMsg_RevertTranslation::ID); |
| 969 EXPECT_TRUE(message != NULL); | 970 EXPECT_TRUE(message != NULL); |
| 970 // And it should have removed the infobar. | 971 // And it should have removed the infobar. |
| 971 EXPECT_TRUE(GetTranslateInfoBar() == NULL); | 972 EXPECT_TRUE(GetTranslateInfoBar() == NULL); |
| 972 } | 973 } |
| 973 | 974 |
| 974 // Tests that no translate infobar is shown and context menu is disabled, when | 975 // Tests that no translate infobar is shown and context menu is disabled, when |
| 975 // Chrome is in a language that the translate server does not support. | 976 // Chrome is in a language that the translate server does not support. |
| 976 TEST_F(TranslateManagerTest, UnsupportedUILanguage) { | 977 TEST_F(TranslateManagerBrowserTest, UnsupportedUILanguage) { |
| 977 std::string original_lang = g_browser_process->GetApplicationLocale(); | 978 std::string original_lang = g_browser_process->GetApplicationLocale(); |
| 978 g_browser_process->SetApplicationLocale("qbz"); | 979 g_browser_process->SetApplicationLocale("qbz"); |
| 979 | 980 |
| 980 // Make sure that the accept language list only contains unsupported languages | 981 // Make sure that the accept language list only contains unsupported languages |
| 981 Profile* profile = | 982 Profile* profile = |
| 982 Profile::FromBrowserContext(web_contents()->GetBrowserContext()); | 983 Profile::FromBrowserContext(web_contents()->GetBrowserContext()); |
| 983 PrefService* prefs = profile->GetPrefs(); | 984 PrefService* prefs = profile->GetPrefs(); |
| 984 prefs->SetString(prefs::kAcceptLanguages, "qbz"); | 985 prefs->SetString(prefs::kAcceptLanguages, "qbz"); |
| 985 | 986 |
| 986 // Simulate navigating to a page in a language supported by the translate | 987 // Simulate navigating to a page in a language supported by the translate |
| 987 // server. | 988 // server. |
| 988 SimulateNavigation(GURL("http://www.google.com"), "en", true); | 989 SimulateNavigation(GURL("http://www.google.com"), "en", true); |
| 989 | 990 |
| 990 // No info-bar should be shown. | 991 // No info-bar should be shown. |
| 991 EXPECT_TRUE(GetTranslateInfoBar() == NULL); | 992 EXPECT_TRUE(GetTranslateInfoBar() == NULL); |
| 992 | 993 |
| 993 // And the context menu option should be disabled too. | 994 // And the context menu option should be disabled too. |
| 994 scoped_ptr<TestRenderViewContextMenu> menu( | 995 scoped_ptr<TestRenderViewContextMenu> menu( |
| 995 TestRenderViewContextMenu::CreateContextMenu(web_contents())); | 996 TestRenderViewContextMenu::CreateContextMenu(web_contents())); |
| 996 menu->Init(); | 997 menu->Init(); |
| 997 EXPECT_TRUE(menu->IsItemPresent(IDC_CONTENT_CONTEXT_TRANSLATE)); | 998 EXPECT_TRUE(menu->IsItemPresent(IDC_CONTENT_CONTEXT_TRANSLATE)); |
| 998 EXPECT_FALSE(menu->IsCommandIdEnabled(IDC_CONTENT_CONTEXT_TRANSLATE)); | 999 EXPECT_FALSE(menu->IsCommandIdEnabled(IDC_CONTENT_CONTEXT_TRANSLATE)); |
| 999 | 1000 |
| 1000 g_browser_process->SetApplicationLocale(original_lang); | 1001 g_browser_process->SetApplicationLocale(original_lang); |
| 1001 } | 1002 } |
| 1002 | 1003 |
| 1003 // Tests that the first supported accept language is selected | 1004 // Tests that the first supported accept language is selected |
| 1004 TEST_F(TranslateManagerTest, TranslateAcceptLanguage) { | 1005 TEST_F(TranslateManagerBrowserTest, TranslateAcceptLanguage) { |
| 1005 // Set locate to non-existant language | 1006 // Set locate to non-existant language |
| 1006 std::string original_lang = g_browser_process->GetApplicationLocale(); | 1007 std::string original_lang = g_browser_process->GetApplicationLocale(); |
| 1007 g_browser_process->SetApplicationLocale("qbz"); | 1008 g_browser_process->SetApplicationLocale("qbz"); |
| 1008 | 1009 |
| 1009 // Set Qbz and French as the only accepted languages | 1010 // Set Qbz and French as the only accepted languages |
| 1010 Profile* profile = | 1011 Profile* profile = |
| 1011 Profile::FromBrowserContext(web_contents()->GetBrowserContext()); | 1012 Profile::FromBrowserContext(web_contents()->GetBrowserContext()); |
| 1012 PrefService* prefs = profile->GetPrefs(); | 1013 PrefService* prefs = profile->GetPrefs(); |
| 1013 prefs->SetString(prefs::kAcceptLanguages, "qbz,fr"); | 1014 prefs->SetString(prefs::kAcceptLanguages, "qbz,fr"); |
| 1014 | 1015 |
| 1015 // Go to a German page | 1016 // Go to a German page |
| 1016 SimulateNavigation(GURL("http://google.de"), "de", true); | 1017 SimulateNavigation(GURL("http://google.de"), "de", true); |
| 1017 | 1018 |
| 1018 // Expect the infobar to pop up | 1019 // Expect the infobar to pop up |
| 1019 EXPECT_TRUE(GetTranslateInfoBar() != NULL); | 1020 EXPECT_TRUE(GetTranslateInfoBar() != NULL); |
| 1020 | 1021 |
| 1021 // Set Qbz and English-US as the only accepted languages to test the country | 1022 // Set Qbz and English-US as the only accepted languages to test the country |
| 1022 // code removal code which was causing a crash as filed in Issue 90106, | 1023 // code removal code which was causing a crash as filed in Issue 90106, |
| 1023 // a crash caused by a language with a country code that wasn't recognized. | 1024 // a crash caused by a language with a country code that wasn't recognized. |
| 1024 prefs->SetString(prefs::kAcceptLanguages, "qbz,en-us"); | 1025 prefs->SetString(prefs::kAcceptLanguages, "qbz,en-us"); |
| 1025 | 1026 |
| 1026 // Go to a German page | 1027 // Go to a German page |
| 1027 SimulateNavigation(GURL("http://google.de"), "de", true); | 1028 SimulateNavigation(GURL("http://google.de"), "de", true); |
| 1028 | 1029 |
| 1029 // Expect the infobar to pop up | 1030 // Expect the infobar to pop up |
| 1030 EXPECT_TRUE(GetTranslateInfoBar() != NULL); | 1031 EXPECT_TRUE(GetTranslateInfoBar() != NULL); |
| 1031 } | 1032 } |
| 1032 | 1033 |
| 1033 // Tests that the translate enabled preference is honored. | 1034 // Tests that the translate enabled preference is honored. |
| 1034 TEST_F(TranslateManagerTest, TranslateEnabledPref) { | 1035 TEST_F(TranslateManagerBrowserTest, TranslateEnabledPref) { |
| 1035 // Make sure the pref allows translate. | 1036 // Make sure the pref allows translate. |
| 1036 Profile* profile = | 1037 Profile* profile = |
| 1037 Profile::FromBrowserContext(web_contents()->GetBrowserContext()); | 1038 Profile::FromBrowserContext(web_contents()->GetBrowserContext()); |
| 1038 PrefService* prefs = profile->GetPrefs(); | 1039 PrefService* prefs = profile->GetPrefs(); |
| 1039 prefs->SetBoolean(prefs::kEnableTranslate, true); | 1040 prefs->SetBoolean(prefs::kEnableTranslate, true); |
| 1040 | 1041 |
| 1041 // Simulate navigating to a page and getting its language. | 1042 // Simulate navigating to a page and getting its language. |
| 1042 SimulateNavigation(GURL("http://www.google.fr"), "fr", true); | 1043 SimulateNavigation(GURL("http://www.google.fr"), "fr", true); |
| 1043 | 1044 |
| 1044 // An infobar should be shown. | 1045 // An infobar should be shown. |
| (...skipping 10 matching lines...) Expand all Loading... |
| 1055 EXPECT_TRUE(infobar == NULL); | 1056 EXPECT_TRUE(infobar == NULL); |
| 1056 | 1057 |
| 1057 // Simulate getting the page contents and language, that should not trigger | 1058 // Simulate getting the page contents and language, that should not trigger |
| 1058 // a translate infobar. | 1059 // a translate infobar. |
| 1059 SimulateOnTranslateLanguageDetermined("fr", true); | 1060 SimulateOnTranslateLanguageDetermined("fr", true); |
| 1060 infobar = GetTranslateInfoBar(); | 1061 infobar = GetTranslateInfoBar(); |
| 1061 EXPECT_TRUE(infobar == NULL); | 1062 EXPECT_TRUE(infobar == NULL); |
| 1062 } | 1063 } |
| 1063 | 1064 |
| 1064 // Tests the "Never translate <language>" pref. | 1065 // Tests the "Never translate <language>" pref. |
| 1065 TEST_F(TranslateManagerTest, NeverTranslateLanguagePref) { | 1066 TEST_F(TranslateManagerBrowserTest, NeverTranslateLanguagePref) { |
| 1066 // Simulate navigating to a page and getting its language. | 1067 // Simulate navigating to a page and getting its language. |
| 1067 GURL url("http://www.google.fr"); | 1068 GURL url("http://www.google.fr"); |
| 1068 SimulateNavigation(url, "fr", true); | 1069 SimulateNavigation(url, "fr", true); |
| 1069 | 1070 |
| 1070 // An infobar should be shown. | 1071 // An infobar should be shown. |
| 1071 EXPECT_TRUE(GetTranslateInfoBar() != NULL); | 1072 EXPECT_TRUE(GetTranslateInfoBar() != NULL); |
| 1072 | 1073 |
| 1073 // Select never translate this language. | 1074 // Select never translate this language. |
| 1074 Profile* profile = | 1075 Profile* profile = |
| 1075 Profile::FromBrowserContext(web_contents()->GetBrowserContext()); | 1076 Profile::FromBrowserContext(web_contents()->GetBrowserContext()); |
| (...skipping 26 matching lines...) Expand all Loading... |
| 1102 EXPECT_TRUE(translate_prefs.CanTranslate(prefs, "fr", url)); | 1103 EXPECT_TRUE(translate_prefs.CanTranslate(prefs, "fr", url)); |
| 1103 | 1104 |
| 1104 // Navigate to a page in French. | 1105 // Navigate to a page in French. |
| 1105 SimulateNavigation(url, "fr", true); | 1106 SimulateNavigation(url, "fr", true); |
| 1106 | 1107 |
| 1107 // There should be a translate infobar. | 1108 // There should be a translate infobar. |
| 1108 EXPECT_TRUE(GetTranslateInfoBar() != NULL); | 1109 EXPECT_TRUE(GetTranslateInfoBar() != NULL); |
| 1109 } | 1110 } |
| 1110 | 1111 |
| 1111 // Tests the "Never translate this site" pref. | 1112 // Tests the "Never translate this site" pref. |
| 1112 TEST_F(TranslateManagerTest, NeverTranslateSitePref) { | 1113 TEST_F(TranslateManagerBrowserTest, NeverTranslateSitePref) { |
| 1113 // Simulate navigating to a page and getting its language. | 1114 // Simulate navigating to a page and getting its language. |
| 1114 GURL url("http://www.google.fr"); | 1115 GURL url("http://www.google.fr"); |
| 1115 std::string host(url.host()); | 1116 std::string host(url.host()); |
| 1116 SimulateNavigation(url, "fr", true); | 1117 SimulateNavigation(url, "fr", true); |
| 1117 | 1118 |
| 1118 // An infobar should be shown. | 1119 // An infobar should be shown. |
| 1119 EXPECT_TRUE(GetTranslateInfoBar() != NULL); | 1120 EXPECT_TRUE(GetTranslateInfoBar() != NULL); |
| 1120 | 1121 |
| 1121 // Select never translate this site. | 1122 // Select never translate this site. |
| 1122 Profile* profile = | 1123 Profile* profile = |
| (...skipping 26 matching lines...) Expand all Loading... |
| 1149 EXPECT_TRUE(translate_prefs.CanTranslate(prefs, "fr", url)); | 1150 EXPECT_TRUE(translate_prefs.CanTranslate(prefs, "fr", url)); |
| 1150 | 1151 |
| 1151 // Navigate to a page in French. | 1152 // Navigate to a page in French. |
| 1152 SimulateNavigation(url, "fr", true); | 1153 SimulateNavigation(url, "fr", true); |
| 1153 | 1154 |
| 1154 // There should be a translate infobar. | 1155 // There should be a translate infobar. |
| 1155 EXPECT_TRUE(GetTranslateInfoBar() != NULL); | 1156 EXPECT_TRUE(GetTranslateInfoBar() != NULL); |
| 1156 } | 1157 } |
| 1157 | 1158 |
| 1158 // Tests the "Always translate this language" pref. | 1159 // Tests the "Always translate this language" pref. |
| 1159 TEST_F(TranslateManagerTest, AlwaysTranslateLanguagePref) { | 1160 TEST_F(TranslateManagerBrowserTest, AlwaysTranslateLanguagePref) { |
| 1160 // Select always translate French to English. | 1161 // Select always translate French to English. |
| 1161 Profile* profile = | 1162 Profile* profile = |
| 1162 Profile::FromBrowserContext(web_contents()->GetBrowserContext()); | 1163 Profile::FromBrowserContext(web_contents()->GetBrowserContext()); |
| 1163 PrefService* prefs = profile->GetPrefs(); | 1164 PrefService* prefs = profile->GetPrefs(); |
| 1164 PrefChangeRegistrar registrar; | 1165 PrefChangeRegistrar registrar; |
| 1165 registrar.Init(prefs); | 1166 registrar.Init(prefs); |
| 1166 registrar.Add(TranslatePrefs::kPrefTranslateWhitelists, pref_callback_); | 1167 registrar.Add(TranslatePrefs::kPrefTranslateWhitelists, pref_callback_); |
| 1167 TranslatePrefs translate_prefs(prefs); | 1168 TranslatePrefs translate_prefs(prefs); |
| 1168 SetPrefObserverExpectation(TranslatePrefs::kPrefTranslateWhitelists); | 1169 SetPrefObserverExpectation(TranslatePrefs::kPrefTranslateWhitelists); |
| 1169 translate_prefs.WhitelistLanguagePair("fr", "en"); | 1170 translate_prefs.WhitelistLanguagePair("fr", "en"); |
| (...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1209 translate_prefs.RemoveLanguagePairFromWhitelist("fr", "en"); | 1210 translate_prefs.RemoveLanguagePairFromWhitelist("fr", "en"); |
| 1210 SimulateNavigation(GURL("http://www.google.fr"), "fr", true); | 1211 SimulateNavigation(GURL("http://www.google.fr"), "fr", true); |
| 1211 EXPECT_FALSE(GetTranslateMessage(&page_id, &original_lang, &target_lang)); | 1212 EXPECT_FALSE(GetTranslateMessage(&page_id, &original_lang, &target_lang)); |
| 1212 infobar = GetTranslateInfoBar(); | 1213 infobar = GetTranslateInfoBar(); |
| 1213 ASSERT_TRUE(infobar != NULL); | 1214 ASSERT_TRUE(infobar != NULL); |
| 1214 EXPECT_EQ(TranslateInfoBarDelegate::BEFORE_TRANSLATE, | 1215 EXPECT_EQ(TranslateInfoBarDelegate::BEFORE_TRANSLATE, |
| 1215 infobar->infobar_type()); | 1216 infobar->infobar_type()); |
| 1216 } | 1217 } |
| 1217 | 1218 |
| 1218 // Context menu. | 1219 // Context menu. |
| 1219 TEST_F(TranslateManagerTest, ContextMenu) { | 1220 TEST_F(TranslateManagerBrowserTest, ContextMenu) { |
| 1220 // Blacklist www.google.fr and French for translation. | 1221 // Blacklist www.google.fr and French for translation. |
| 1221 GURL url("http://www.google.fr"); | 1222 GURL url("http://www.google.fr"); |
| 1222 Profile* profile = | 1223 Profile* profile = |
| 1223 Profile::FromBrowserContext(web_contents()->GetBrowserContext()); | 1224 Profile::FromBrowserContext(web_contents()->GetBrowserContext()); |
| 1224 TranslatePrefs translate_prefs(profile->GetPrefs()); | 1225 TranslatePrefs translate_prefs(profile->GetPrefs()); |
| 1225 translate_prefs.BlacklistLanguage("fr"); | 1226 translate_prefs.BlacklistLanguage("fr"); |
| 1226 translate_prefs.BlacklistSite(url.host()); | 1227 translate_prefs.BlacklistSite(url.host()); |
| 1227 EXPECT_TRUE(translate_prefs.IsLanguageBlacklisted("fr")); | 1228 EXPECT_TRUE(translate_prefs.IsLanguageBlacklisted("fr")); |
| 1228 EXPECT_TRUE(translate_prefs.IsSiteBlacklisted(url.host())); | 1229 EXPECT_TRUE(translate_prefs.IsSiteBlacklisted(url.host())); |
| 1229 | 1230 |
| (...skipping 94 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1324 SimulateNavigation(url, "qbz", true); | 1325 SimulateNavigation(url, "qbz", true); |
| 1325 menu.reset(TestRenderViewContextMenu::CreateContextMenu(web_contents())); | 1326 menu.reset(TestRenderViewContextMenu::CreateContextMenu(web_contents())); |
| 1326 menu->Init(); | 1327 menu->Init(); |
| 1327 EXPECT_TRUE(menu->IsItemPresent(IDC_CONTENT_CONTEXT_TRANSLATE)); | 1328 EXPECT_TRUE(menu->IsItemPresent(IDC_CONTENT_CONTEXT_TRANSLATE)); |
| 1328 EXPECT_FALSE(menu->IsCommandIdEnabled(IDC_CONTENT_CONTEXT_TRANSLATE)); | 1329 EXPECT_FALSE(menu->IsCommandIdEnabled(IDC_CONTENT_CONTEXT_TRANSLATE)); |
| 1329 } | 1330 } |
| 1330 | 1331 |
| 1331 // Tests that an extra always/never translate button is shown on the "before | 1332 // Tests that an extra always/never translate button is shown on the "before |
| 1332 // translate" infobar when the translation is accepted/declined 3 times, | 1333 // translate" infobar when the translation is accepted/declined 3 times, |
| 1333 // only when not in incognito mode. | 1334 // only when not in incognito mode. |
| 1334 TEST_F(TranslateManagerTest, BeforeTranslateExtraButtons) { | 1335 TEST_F(TranslateManagerBrowserTest, BeforeTranslateExtraButtons) { |
| 1335 Profile* profile = | 1336 Profile* profile = |
| 1336 Profile::FromBrowserContext(web_contents()->GetBrowserContext()); | 1337 Profile::FromBrowserContext(web_contents()->GetBrowserContext()); |
| 1337 TranslatePrefs translate_prefs(profile->GetPrefs()); | 1338 TranslatePrefs translate_prefs(profile->GetPrefs()); |
| 1338 translate_prefs.ResetTranslationAcceptedCount("fr"); | 1339 translate_prefs.ResetTranslationAcceptedCount("fr"); |
| 1339 translate_prefs.ResetTranslationDeniedCount("fr"); | 1340 translate_prefs.ResetTranslationDeniedCount("fr"); |
| 1340 translate_prefs.ResetTranslationAcceptedCount("de"); | 1341 translate_prefs.ResetTranslationAcceptedCount("de"); |
| 1341 translate_prefs.ResetTranslationDeniedCount("de"); | 1342 translate_prefs.ResetTranslationDeniedCount("de"); |
| 1342 | 1343 |
| 1343 // We'll do 4 times in incognito mode first to make sure the button is not | 1344 // We'll do 4 times in incognito mode first to make sure the button is not |
| 1344 // shown in that case, then 4 times in normal mode. | 1345 // shown in that case, then 4 times in normal mode. |
| (...skipping 58 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1403 infobar->NeverTranslatePageLanguage(); | 1404 infobar->NeverTranslatePageLanguage(); |
| 1404 EXPECT_TRUE(translate_prefs.IsLanguageBlacklisted("de")); | 1405 EXPECT_TRUE(translate_prefs.IsLanguageBlacklisted("de")); |
| 1405 // No translation should have occured and the infobar should be gone. | 1406 // No translation should have occured and the infobar should be gone. |
| 1406 EXPECT_FALSE(GetTranslateMessage(&page_id, &original_lang, &target_lang)); | 1407 EXPECT_FALSE(GetTranslateMessage(&page_id, &original_lang, &target_lang)); |
| 1407 process()->sink().ClearMessages(); | 1408 process()->sink().ClearMessages(); |
| 1408 ASSERT_TRUE(GetTranslateInfoBar() == NULL); | 1409 ASSERT_TRUE(GetTranslateInfoBar() == NULL); |
| 1409 } | 1410 } |
| 1410 | 1411 |
| 1411 // Tests that we don't show a translate infobar when a page instructs that it | 1412 // Tests that we don't show a translate infobar when a page instructs that it |
| 1412 // should not be translated. | 1413 // should not be translated. |
| 1413 TEST_F(TranslateManagerTest, NonTranslatablePage) { | 1414 TEST_F(TranslateManagerBrowserTest, NonTranslatablePage) { |
| 1414 // Simulate navigating to a page. | 1415 // Simulate navigating to a page. |
| 1415 SimulateNavigation(GURL("http://mail.google.fr"), "fr", false); | 1416 SimulateNavigation(GURL("http://mail.google.fr"), "fr", false); |
| 1416 | 1417 |
| 1417 // We should not have an infobar. | 1418 // We should not have an infobar. |
| 1418 EXPECT_TRUE(GetTranslateInfoBar() == NULL); | 1419 EXPECT_TRUE(GetTranslateInfoBar() == NULL); |
| 1419 | 1420 |
| 1420 // The context menu should be disabled. | 1421 // The context menu should be disabled. |
| 1421 scoped_ptr<TestRenderViewContextMenu> menu( | 1422 scoped_ptr<TestRenderViewContextMenu> menu( |
| 1422 TestRenderViewContextMenu::CreateContextMenu(web_contents())); | 1423 TestRenderViewContextMenu::CreateContextMenu(web_contents())); |
| 1423 menu->Init(); | 1424 menu->Init(); |
| 1424 EXPECT_TRUE(menu->IsItemPresent(IDC_CONTENT_CONTEXT_TRANSLATE)); | 1425 EXPECT_TRUE(menu->IsItemPresent(IDC_CONTENT_CONTEXT_TRANSLATE)); |
| 1425 EXPECT_FALSE(menu->IsCommandIdEnabled(IDC_CONTENT_CONTEXT_TRANSLATE)); | 1426 EXPECT_FALSE(menu->IsCommandIdEnabled(IDC_CONTENT_CONTEXT_TRANSLATE)); |
| 1426 } | 1427 } |
| 1427 | 1428 |
| 1428 // Tests that the script is expired and refetched as expected. | 1429 // Tests that the script is expired and refetched as expected. |
| 1429 TEST_F(TranslateManagerTest, ScriptExpires) { | 1430 TEST_F(TranslateManagerBrowserTest, ScriptExpires) { |
| 1430 ExpireTranslateScriptImmediately(); | 1431 ExpireTranslateScriptImmediately(); |
| 1431 | 1432 |
| 1432 // Simulate navigating to a page and translating it. | 1433 // Simulate navigating to a page and translating it. |
| 1433 SimulateNavigation(GURL("http://www.google.fr"), "fr", true); | 1434 SimulateNavigation(GURL("http://www.google.fr"), "fr", true); |
| 1434 TranslateInfoBarDelegate* infobar = GetTranslateInfoBar(); | 1435 TranslateInfoBarDelegate* infobar = GetTranslateInfoBar(); |
| 1435 ASSERT_TRUE(infobar != NULL); | 1436 ASSERT_TRUE(infobar != NULL); |
| 1436 process()->sink().ClearMessages(); | 1437 process()->sink().ClearMessages(); |
| 1437 infobar->Translate(); | 1438 infobar->Translate(); |
| 1438 SimulateTranslateScriptURLFetch(true); | 1439 SimulateTranslateScriptURLFetch(true); |
| 1439 RenderViewHostTester::TestOnMessageReceived( | 1440 RenderViewHostTester::TestOnMessageReceived( |
| (...skipping 19 matching lines...) Expand all Loading... |
| 1459 // Now simulate the URL fetch. | 1460 // Now simulate the URL fetch. |
| 1460 SimulateTranslateScriptURLFetch(true); | 1461 SimulateTranslateScriptURLFetch(true); |
| 1461 // Now the message should have been sent. | 1462 // Now the message should have been sent. |
| 1462 int page_id = 0; | 1463 int page_id = 0; |
| 1463 std::string original_lang, target_lang; | 1464 std::string original_lang, target_lang; |
| 1464 EXPECT_TRUE(GetTranslateMessage(&page_id, &original_lang, &target_lang)); | 1465 EXPECT_TRUE(GetTranslateMessage(&page_id, &original_lang, &target_lang)); |
| 1465 EXPECT_EQ("es", original_lang); | 1466 EXPECT_EQ("es", original_lang); |
| 1466 EXPECT_EQ("en", target_lang); | 1467 EXPECT_EQ("en", target_lang); |
| 1467 } | 1468 } |
| 1468 | 1469 |
| 1469 TEST_F(TranslateManagerTest, DownloadsAndHistoryNotTranslated) { | 1470 TEST_F(TranslateManagerBrowserTest, DownloadsAndHistoryNotTranslated) { |
| 1470 ASSERT_FALSE(TranslateManager::IsTranslatableURL( | 1471 ASSERT_FALSE(TranslateManager::IsTranslatableURL( |
| 1471 GURL(chrome::kChromeUIDownloadsURL))); | 1472 GURL(chrome::kChromeUIDownloadsURL))); |
| 1472 ASSERT_FALSE(TranslateManager::IsTranslatableURL( | 1473 ASSERT_FALSE(TranslateManager::IsTranslatableURL( |
| 1473 GURL(chrome::kChromeUIHistoryURL))); | 1474 GURL(chrome::kChromeUIHistoryURL))); |
| 1474 } | 1475 } |
| 1475 | 1476 |
| 1476 // Test is flaky on Win http://crbug.com/166334 | 1477 // Test is flaky on Win http://crbug.com/166334 |
| 1477 #if defined(OS_WIN) | 1478 #if defined(OS_WIN) |
| 1478 #define MAYBE_PRE_TranslateSessionRestore DISABLED_PRE_TranslateSessionRestore | 1479 #define MAYBE_PRE_TranslateSessionRestore DISABLED_PRE_TranslateSessionRestore |
| 1479 #else | 1480 #else |
| (...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1515 IN_PROC_BROWSER_TEST_F(InProcessBrowserTest, MAYBE_TranslateSessionRestore) { | 1516 IN_PROC_BROWSER_TEST_F(InProcessBrowserTest, MAYBE_TranslateSessionRestore) { |
| 1516 WebContents* current_web_contents = | 1517 WebContents* current_web_contents = |
| 1517 browser()->tab_strip_model()->GetActiveWebContents(); | 1518 browser()->tab_strip_model()->GetActiveWebContents(); |
| 1518 content::Source<WebContents> source(current_web_contents); | 1519 content::Source<WebContents> source(current_web_contents); |
| 1519 | 1520 |
| 1520 ui_test_utils::WindowedNotificationObserverWithDetails<std::string> | 1521 ui_test_utils::WindowedNotificationObserverWithDetails<std::string> |
| 1521 fr_language_detected_signal(chrome::NOTIFICATION_TAB_LANGUAGE_DETERMINED, | 1522 fr_language_detected_signal(chrome::NOTIFICATION_TAB_LANGUAGE_DETERMINED, |
| 1522 source); | 1523 source); |
| 1523 fr_language_detected_signal.Wait(); | 1524 fr_language_detected_signal.Wait(); |
| 1524 } | 1525 } |
| OLD | NEW |