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

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

Issue 2143383002: [Translate] Migrate IPCs to Mojo interfaces. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Fix unit tests Created 4 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 // Copyright 2014 The Chromium Authors. All rights reserved. 1 // Copyright 2014 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include <stddef.h> 5 #include <stddef.h>
6 6
7 #include <algorithm> 7 #include <algorithm>
8 #include <memory> 8 #include <memory>
9 #include <set> 9 #include <set>
10 #include <tuple> 10 #include <tuple>
(...skipping 18 matching lines...) Expand all
29 #include "chrome/common/chrome_switches.h" 29 #include "chrome/common/chrome_switches.h"
30 #include "chrome/common/pref_names.h" 30 #include "chrome/common/pref_names.h"
31 #include "chrome/common/url_constants.h" 31 #include "chrome/common/url_constants.h"
32 #include "chrome/test/base/chrome_render_view_host_test_harness.h" 32 #include "chrome/test/base/chrome_render_view_host_test_harness.h"
33 #include "chrome/test/base/testing_browser_process.h" 33 #include "chrome/test/base/testing_browser_process.h"
34 #include "chrome/test/base/testing_profile.h" 34 #include "chrome/test/base/testing_profile.h"
35 #include "components/infobars/core/infobar.h" 35 #include "components/infobars/core/infobar.h"
36 #include "components/prefs/pref_change_registrar.h" 36 #include "components/prefs/pref_change_registrar.h"
37 #include "components/prefs/pref_service.h" 37 #include "components/prefs/pref_service.h"
38 #include "components/translate/content/browser/content_translate_driver.h" 38 #include "components/translate/content/browser/content_translate_driver.h"
39 #include "components/translate/content/common/translate_messages.h" 39 #include "components/translate/content/public/interfaces/translate.mojom.h"
40 #include "components/translate/core/browser/translate_accept_languages.h" 40 #include "components/translate/core/browser/translate_accept_languages.h"
41 #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" 42 #include "components/translate/core/browser/translate_language_list.h"
43 #include "components/translate/core/browser/translate_manager.h" 43 #include "components/translate/core/browser/translate_manager.h"
44 #include "components/translate/core/browser/translate_prefs.h" 44 #include "components/translate/core/browser/translate_prefs.h"
45 #include "components/translate/core/browser/translate_script.h" 45 #include "components/translate/core/browser/translate_script.h"
46 #include "components/translate/core/browser/translate_ui_delegate.h" 46 #include "components/translate/core/browser/translate_ui_delegate.h"
47 #include "components/translate/core/common/language_detection_details.h" 47 #include "components/translate/core/common/language_detection_details.h"
48 #include "components/translate/core/common/translate_pref_names.h" 48 #include "components/translate/core/common/translate_pref_names.h"
49 #include "content/public/browser/navigation_details.h" 49 #include "content/public/browser/navigation_details.h"
50 #include "content/public/browser/navigation_entry.h" 50 #include "content/public/browser/navigation_entry.h"
51 #include "content/public/browser/notification_details.h" 51 #include "content/public/browser/notification_details.h"
52 #include "content/public/browser/notification_registrar.h" 52 #include "content/public/browser/notification_registrar.h"
53 #include "content/public/browser/web_contents.h" 53 #include "content/public/browser/web_contents.h"
54 #include "content/public/common/url_constants.h" 54 #include "content/public/common/url_constants.h"
55 #include "content/public/test/mock_render_process_host.h"
56 #include "content/public/test/test_renderer_host.h" 55 #include "content/public/test/test_renderer_host.h"
56 #include "mojo/public/cpp/bindings/binding.h"
57 #include "net/base/net_errors.h" 57 #include "net/base/net_errors.h"
58 #include "net/url_request/test_url_fetcher_factory.h" 58 #include "net/url_request/test_url_fetcher_factory.h"
59 #include "net/url_request/url_fetcher_delegate.h" 59 #include "net/url_request/url_fetcher_delegate.h"
60 #include "net/url_request/url_request_status.h" 60 #include "net/url_request/url_request_status.h"
61 #include "testing/gmock/include/gmock/gmock.h" 61 #include "testing/gmock/include/gmock/gmock.h"
62 #include "third_party/WebKit/public/web/WebContextMenuData.h" 62 #include "third_party/WebKit/public/web/WebContextMenuData.h"
63 #include "url/gurl.h" 63 #include "url/gurl.h"
64 64
65 #if !defined(USE_AURA) 65 #if !defined(USE_AURA)
66 #include "components/translate/core/browser/translate_infobar_delegate.h" 66 #include "components/translate/core/browser/translate_infobar_delegate.h"
(...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after
108 } 108 }
109 109
110 TranslateBubbleModel* model() { return model_.get(); } 110 TranslateBubbleModel* model() { return model_.get(); }
111 111
112 private: 112 private:
113 std::unique_ptr<TranslateBubbleModel> model_; 113 std::unique_ptr<TranslateBubbleModel> model_;
114 114
115 DISALLOW_COPY_AND_ASSIGN(MockTranslateBubbleFactory); 115 DISALLOW_COPY_AND_ASSIGN(MockTranslateBubbleFactory);
116 }; 116 };
117 117
118 class FakePageImpl : public translate::mojom::Page {
119 public:
120 FakePageImpl()
121 : called_translate_(false),
122 called_revert_translation_(false),
123 binding_(this) {}
124 ~FakePageImpl() override {}
125
126 translate::mojom::PagePtr BindToNewPagePtr() {
127 binding_.Close();
128 translate_callback_pending_.Reset();
129 return binding_.CreateInterfacePtrAndBind();
130 }
131
132 // translate::mojom::Page implementation.
133 void Translate(const std::string& translate_script,
134 const std::string& source_lang,
135 const std::string& target_lang,
136 const TranslateCallback& callback) override {
137 // Ensure pending callback get called.
138 if (translate_callback_pending_) {
139 translate_callback_pending_.Run(true, "", "",
140 translate::TranslateErrors::NONE);
141 translate_callback_pending_.Reset();
142 }
143
144 called_translate_ = true;
145 source_lang_ = source_lang;
146 target_lang_ = target_lang;
147
148 translate_callback_pending_ = callback;
149 }
150
151 void RevertTranslation() override { called_revert_translation_ = true; }
152
153 void PageTranslated(bool cancelled,
154 const std::string& source_lang,
155 const std::string& target_lang,
156 translate::TranslateErrors::Type error) {
157 translate_callback_pending_.Run(cancelled, source_lang, target_lang, error);
158 translate_callback_pending_.Reset();
159 }
160
161 bool called_translate_;
162 base::Optional<std::string> source_lang_;
163 base::Optional<std::string> target_lang_;
164 bool called_revert_translation_;
165
166 private:
167 TranslateCallback translate_callback_pending_;
168
169 mojo::Binding<translate::mojom::Page> binding_;
170
171 DISALLOW_COPY_AND_ASSIGN(FakePageImpl);
172 };
173
118 } // namespace 174 } // namespace
119 175
120 // An observer that keeps track of whether a navigation entry was committed. 176 // An observer that keeps track of whether a navigation entry was committed.
121 class NavEntryCommittedObserver : public content::NotificationObserver { 177 class NavEntryCommittedObserver : public content::NotificationObserver {
122 public: 178 public:
123 explicit NavEntryCommittedObserver(content::WebContents* web_contents) { 179 explicit NavEntryCommittedObserver(content::WebContents* web_contents) {
124 registrar_.Add(this, 180 registrar_.Add(this,
125 content::NOTIFICATION_NAV_ENTRY_COMMITTED, 181 content::NOTIFICATION_NAV_ENTRY_COMMITTED,
126 content::Source<content::NavigationController>( 182 content::Source<content::NavigationController>(
127 &web_contents->GetController())); 183 &web_contents->GetController()));
(...skipping 103 matching lines...) Expand 10 before | Expand all | Expand 10 after
231 Reload(); 287 Reload();
232 else 288 else
233 NavigateAndCommit(url); 289 NavigateAndCommit(url);
234 SimulateOnTranslateLanguageDetermined(lang, page_translatable); 290 SimulateOnTranslateLanguageDetermined(lang, page_translatable);
235 } 291 }
236 292
237 void SimulateOnTranslateLanguageDetermined(const std::string& lang, 293 void SimulateOnTranslateLanguageDetermined(const std::string& lang,
238 bool page_translatable) { 294 bool page_translatable) {
239 translate::LanguageDetectionDetails details; 295 translate::LanguageDetectionDetails details;
240 details.adopted_language = lang; 296 details.adopted_language = lang;
241 main_rfh()->OnMessageReceived( 297 ChromeTranslateClient::FromWebContents(web_contents())
242 ChromeFrameHostMsg_TranslateLanguageDetermined(0, details, 298 ->translate_driver()
243 page_translatable)); 299 .NewPage(fake_page_.BindToNewPagePtr(), details, page_translatable);
244 } 300 }
245 301
246 void SimulateOnPageTranslated(int routing_id, 302 void SimulateOnPageTranslated(const std::string& source_lang,
247 const std::string& source_lang,
248 const std::string& target_lang, 303 const std::string& target_lang,
249 translate::TranslateErrors::Type error) { 304 translate::TranslateErrors::Type error) {
250 main_rfh()->OnMessageReceived(ChromeFrameHostMsg_PageTranslated( 305 // Ensure fake_page_ Translate() call get dispatched.
251 routing_id, source_lang, target_lang, error)); 306 base::RunLoop().RunUntilIdle();
307
308 fake_page_.PageTranslated(false, source_lang, target_lang, error);
309
310 // Ensure fake_page_ Translate() response callback get dispatched.
311 base::RunLoop().RunUntilIdle();
252 } 312 }
253 313
254 void SimulateOnPageTranslated(const std::string& source_lang, 314 void SimulateOnPageTranslated(const std::string& source_lang,
255 const std::string& target_lang) { 315 const std::string& target_lang) {
256 SimulateOnPageTranslated( 316 SimulateOnPageTranslated(source_lang, target_lang,
257 0, source_lang, target_lang, translate::TranslateErrors::NONE); 317 translate::TranslateErrors::NONE);
258 } 318 }
259 319
260 bool GetTranslateMessage(std::string* original_lang, 320 bool GetTranslateMessage(std::string* original_lang,
261 std::string* target_lang) { 321 std::string* target_lang) {
262 const IPC::Message* message = process()->sink().GetFirstMessageMatching( 322 base::RunLoop().RunUntilIdle();
263 ChromeFrameMsg_TranslatePage::ID); 323
264 if (!message) 324 if (!fake_page_.called_translate_)
265 return false; 325 return false;
266 std::tuple<int, std::string, std::string, std::string> translate_param; 326 EXPECT_TRUE(fake_page_.source_lang_);
267 ChromeFrameMsg_TranslatePage::Read(message, &translate_param); 327 EXPECT_TRUE(fake_page_.target_lang_);
268 // Ignore get<0>(translate_param) which is the page seq no. 328
269 // Ignore get<1>(translate_param) which is the script injected in the page.
270 if (original_lang) 329 if (original_lang)
271 *original_lang = std::get<2>(translate_param); 330 *original_lang = *fake_page_.source_lang_;
272 if (target_lang) 331 if (target_lang)
273 *target_lang = std::get<3>(translate_param); 332 *target_lang = *fake_page_.target_lang_;
333
334 // Reset
335 fake_page_.called_translate_ = false;
336 fake_page_.source_lang_ = base::nullopt;
337 fake_page_.target_lang_ = base::nullopt;
338
274 return true; 339 return true;
275 } 340 }
276 341
342 bool IsTranslationReverted() {
343 base::RunLoop().RunUntilIdle();
344 return fake_page_.called_revert_translation_;
345 }
346
277 InfoBarService* infobar_service() { 347 InfoBarService* infobar_service() {
278 return InfoBarService::FromWebContents(web_contents()); 348 return InfoBarService::FromWebContents(web_contents());
279 } 349 }
280 350
281 #if !defined(USE_AURA) 351 #if !defined(USE_AURA)
282 // Returns the translate infobar if there is 1 infobar and it is a translate 352 // Returns the translate infobar if there is 1 infobar and it is a translate
283 // infobar. 353 // infobar.
284 translate::TranslateInfoBarDelegate* GetTranslateInfoBar() { 354 translate::TranslateInfoBarDelegate* GetTranslateInfoBar() {
285 return (infobar_service()->infobar_count() == 1) ? 355 return (infobar_service()->infobar_count() == 1) ?
286 infobar_service()->infobar_at(0)->delegate()-> 356 infobar_service()->infobar_at(0)->delegate()->
(...skipping 110 matching lines...) Expand 10 before | Expand all | Expand 10 after
397 ->translate_driver() 467 ->translate_driver()
398 .set_translate_max_reload_attempts(0); 468 .set_translate_max_reload_attempts(0);
399 469
400 notification_registrar_.Add( 470 notification_registrar_.Add(
401 this, 471 this,
402 chrome::NOTIFICATION_TAB_CONTENTS_INFOBAR_REMOVED, 472 chrome::NOTIFICATION_TAB_CONTENTS_INFOBAR_REMOVED,
403 content::Source<InfoBarService>(infobar_service())); 473 content::Source<InfoBarService>(infobar_service()));
404 } 474 }
405 475
406 virtual void TearDown() { 476 virtual void TearDown() {
407 process()->sink().ClearMessages();
408
409 notification_registrar_.Remove( 477 notification_registrar_.Remove(
410 this, 478 this,
411 chrome::NOTIFICATION_TAB_CONTENTS_INFOBAR_REMOVED, 479 chrome::NOTIFICATION_TAB_CONTENTS_INFOBAR_REMOVED,
412 content::Source<InfoBarService>(infobar_service())); 480 content::Source<InfoBarService>(infobar_service()));
413 481
414 ChromeRenderViewHostTestHarness::TearDown(); 482 ChromeRenderViewHostTestHarness::TearDown();
415 TranslateService::ShutdownForTesting(); 483 TranslateService::ShutdownForTesting();
416 } 484 }
417 485
418 void SetApplicationLocale(const std::string& locale) { 486 void SetApplicationLocale(const std::string& locale) {
(...skipping 66 matching lines...) Expand 10 before | Expand all | Expand 10 after
485 553
486 private: 554 private:
487 content::NotificationRegistrar notification_registrar_; 555 content::NotificationRegistrar notification_registrar_;
488 net::TestURLFetcherFactory url_fetcher_factory_; 556 net::TestURLFetcherFactory url_fetcher_factory_;
489 557
490 // The infobars that have been removed. 558 // The infobars that have been removed.
491 // WARNING: the pointers point to deleted objects, use only for comparison. 559 // WARNING: the pointers point to deleted objects, use only for comparison.
492 std::set<infobars::InfoBarDelegate*> removed_infobars_; 560 std::set<infobars::InfoBarDelegate*> removed_infobars_;
493 561
494 std::unique_ptr<MockTranslateBubbleFactory> bubble_factory_; 562 std::unique_ptr<MockTranslateBubbleFactory> bubble_factory_;
563 FakePageImpl fake_page_;
564
495 DISALLOW_COPY_AND_ASSIGN(TranslateManagerRenderViewHostTest); 565 DISALLOW_COPY_AND_ASSIGN(TranslateManagerRenderViewHostTest);
496 }; 566 };
497 567
498 568
499 // A list of languages to fake being returned by the translate server. 569 // A list of languages to fake being returned by the translate server.
500 // Use only langauges for which Chrome's copy of ICU has 570 // Use only langauges for which Chrome's copy of ICU has
501 // display names in English locale. To save space, Chrome's copy of ICU 571 // display names in English locale. To save space, Chrome's copy of ICU
502 // does not have the display name for a language unless it's in the 572 // does not have the display name for a language unless it's in the
503 // Accept-Language list. 573 // Accept-Language list.
504 static const char* server_language_list[] = 574 static const char* server_language_list[] =
(...skipping 109 matching lines...) Expand 10 before | Expand all | Expand 10 after
614 684
615 SimulateNavigation(GURL("http://www.google.fr"), "fr", true); 685 SimulateNavigation(GURL("http://www.google.fr"), "fr", true);
616 686
617 // We should have an infobar. 687 // We should have an infobar.
618 translate::TranslateInfoBarDelegate* infobar = GetTranslateInfoBar(); 688 translate::TranslateInfoBarDelegate* infobar = GetTranslateInfoBar();
619 ASSERT_TRUE(infobar != NULL); 689 ASSERT_TRUE(infobar != NULL);
620 EXPECT_EQ(translate::TRANSLATE_STEP_BEFORE_TRANSLATE, 690 EXPECT_EQ(translate::TRANSLATE_STEP_BEFORE_TRANSLATE,
621 infobar->translate_step()); 691 infobar->translate_step());
622 692
623 // Simulate clicking translate. 693 // Simulate clicking translate.
624 process()->sink().ClearMessages();
625 infobar->Translate(); 694 infobar->Translate();
626 695
627 // The "Translating..." infobar should be showing. 696 // The "Translating..." infobar should be showing.
628 infobar = GetTranslateInfoBar(); 697 infobar = GetTranslateInfoBar();
629 ASSERT_TRUE(infobar != NULL); 698 ASSERT_TRUE(infobar != NULL);
630 EXPECT_EQ(translate::TRANSLATE_STEP_TRANSLATING, infobar->translate_step()); 699 EXPECT_EQ(translate::TRANSLATE_STEP_TRANSLATING, infobar->translate_step());
631 700
632 // Simulate the translate script being retrieved (it only needs to be done 701 // Simulate the translate script being retrieved (it only needs to be done
633 // once in the test as it is cached). 702 // once in the test as it is cached).
634 SimulateTranslateScriptURLFetch(true); 703 SimulateTranslateScriptURLFetch(true);
635 704
636 // Test that we sent the right message to the renderer. 705 // Test that we sent the right message to the renderer.
637 std::string original_lang, target_lang; 706 std::string original_lang, target_lang;
638 EXPECT_TRUE(GetTranslateMessage(&original_lang, &target_lang)); 707 EXPECT_TRUE(GetTranslateMessage(&original_lang, &target_lang));
639 EXPECT_EQ("fr", original_lang); 708 EXPECT_EQ("fr", original_lang);
640 EXPECT_EQ("en", target_lang); 709 EXPECT_EQ("en", target_lang);
641 710
642 // Simulate the render notifying the translation has been done. 711 // Simulate the render notifying the translation has been done.
643 SimulateOnPageTranslated("fr", "en"); 712 SimulateOnPageTranslated("fr", "en");
644 713
645 // The after translate infobar should be showing. 714 // The after translate infobar should be showing.
646 infobar = GetTranslateInfoBar(); 715 infobar = GetTranslateInfoBar();
647 ASSERT_TRUE(infobar != NULL); 716 ASSERT_TRUE(infobar != NULL);
648 EXPECT_EQ(translate::TRANSLATE_STEP_AFTER_TRANSLATE, 717 EXPECT_EQ(translate::TRANSLATE_STEP_AFTER_TRANSLATE,
649 infobar->translate_step()); 718 infobar->translate_step());
650 719
651 // Simulate changing the original language and translating. 720 // Simulate changing the original language and translating.
652 process()->sink().ClearMessages();
653 std::string new_original_lang = infobar->language_code_at(0); 721 std::string new_original_lang = infobar->language_code_at(0);
654 infobar->UpdateOriginalLanguage(new_original_lang); 722 infobar->UpdateOriginalLanguage(new_original_lang);
655 infobar->Translate(); 723 infobar->Translate();
656 EXPECT_TRUE(GetTranslateMessage(&original_lang, &target_lang)); 724 EXPECT_TRUE(GetTranslateMessage(&original_lang, &target_lang));
657 EXPECT_EQ(new_original_lang, original_lang); 725 EXPECT_EQ(new_original_lang, original_lang);
658 EXPECT_EQ("en", target_lang); 726 EXPECT_EQ("en", target_lang);
659 // Simulate the render notifying the translation has been done. 727 // Simulate the render notifying the translation has been done.
660 SimulateOnPageTranslated(new_original_lang, "en"); 728 SimulateOnPageTranslated(new_original_lang, "en");
661 infobar = GetTranslateInfoBar(); 729 infobar = GetTranslateInfoBar();
662 ASSERT_TRUE(infobar != NULL); 730 ASSERT_TRUE(infobar != NULL);
663 731
664 // Simulate changing the target language and translating. 732 // Simulate changing the target language and translating.
665 process()->sink().ClearMessages();
666 std::string new_target_lang = infobar->language_code_at(1); 733 std::string new_target_lang = infobar->language_code_at(1);
667 infobar->UpdateTargetLanguage(new_target_lang); 734 infobar->UpdateTargetLanguage(new_target_lang);
668 infobar->Translate(); 735 infobar->Translate();
669 EXPECT_TRUE(GetTranslateMessage(&original_lang, &target_lang)); 736 EXPECT_TRUE(GetTranslateMessage(&original_lang, &target_lang));
670 EXPECT_EQ(new_original_lang, original_lang); 737 EXPECT_EQ(new_original_lang, original_lang);
671 EXPECT_EQ(new_target_lang, target_lang); 738 EXPECT_EQ(new_target_lang, target_lang);
672 // Simulate the render notifying the translation has been done. 739 // Simulate the render notifying the translation has been done.
673 SimulateOnPageTranslated(new_original_lang, new_target_lang); 740 SimulateOnPageTranslated(new_original_lang, new_target_lang);
674 infobar = GetTranslateInfoBar(); 741 infobar = GetTranslateInfoBar();
675 ASSERT_TRUE(infobar != NULL); 742 ASSERT_TRUE(infobar != NULL);
(...skipping 21 matching lines...) Expand all
697 764
698 SimulateNavigation(GURL("http://www.google.fr"), "fr", true); 765 SimulateNavigation(GURL("http://www.google.fr"), "fr", true);
699 766
700 // We should have an infobar. 767 // We should have an infobar.
701 translate::TranslateInfoBarDelegate* infobar = GetTranslateInfoBar(); 768 translate::TranslateInfoBarDelegate* infobar = GetTranslateInfoBar();
702 ASSERT_TRUE(infobar != NULL); 769 ASSERT_TRUE(infobar != NULL);
703 EXPECT_EQ(translate::TRANSLATE_STEP_BEFORE_TRANSLATE, 770 EXPECT_EQ(translate::TRANSLATE_STEP_BEFORE_TRANSLATE,
704 infobar->translate_step()); 771 infobar->translate_step());
705 772
706 // Simulate clicking translate. 773 // Simulate clicking translate.
707 process()->sink().ClearMessages();
708 infobar->Translate(); 774 infobar->Translate();
709 SimulateTranslateScriptURLFetch(false); 775 SimulateTranslateScriptURLFetch(false);
710 776
711 // We should not have sent any message to translate to the renderer. 777 // We should not have sent any message to translate to the renderer.
712 EXPECT_FALSE(GetTranslateMessage(NULL, NULL)); 778 EXPECT_FALSE(GetTranslateMessage(NULL, NULL));
713 779
714 // And we should have an error infobar showing. 780 // And we should have an error infobar showing.
715 infobar = GetTranslateInfoBar(); 781 infobar = GetTranslateInfoBar();
716 ASSERT_TRUE(infobar != NULL); 782 ASSERT_TRUE(infobar != NULL);
717 EXPECT_EQ(translate::TRANSLATE_STEP_TRANSLATE_ERROR, 783 EXPECT_EQ(translate::TRANSLATE_STEP_TRANSLATE_ERROR,
(...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after
759 infobar->translate_step()); 825 infobar->translate_step());
760 EXPECT_EQ("fr", infobar->original_language_code()); 826 EXPECT_EQ("fr", infobar->original_language_code());
761 EXPECT_EQ("en", infobar->target_language_code()); 827 EXPECT_EQ("en", infobar->target_language_code());
762 828
763 // Let's run the same steps but this time the server detects the page is 829 // Let's run the same steps but this time the server detects the page is
764 // already in English. 830 // already in English.
765 SimulateNavigation(GURL("http://www.google.com"), "und", true); 831 SimulateNavigation(GURL("http://www.google.com"), "und", true);
766 menu.reset(CreateContextMenu()); 832 menu.reset(CreateContextMenu());
767 menu->Init(); 833 menu->Init();
768 menu->ExecuteCommand(IDC_CONTENT_CONTEXT_TRANSLATE, 0); 834 menu->ExecuteCommand(IDC_CONTENT_CONTEXT_TRANSLATE, 0);
769 SimulateOnPageTranslated( 835 SimulateOnPageTranslated("en", "en",
770 1, "en", "en", translate::TranslateErrors::IDENTICAL_LANGUAGES); 836 translate::TranslateErrors::IDENTICAL_LANGUAGES);
771 infobar = GetTranslateInfoBar(); 837 infobar = GetTranslateInfoBar();
772 ASSERT_TRUE(infobar != NULL); 838 ASSERT_TRUE(infobar != NULL);
773 EXPECT_EQ(translate::TRANSLATE_STEP_TRANSLATE_ERROR, 839 EXPECT_EQ(translate::TRANSLATE_STEP_TRANSLATE_ERROR,
774 infobar->translate_step()); 840 infobar->translate_step());
775 EXPECT_EQ(translate::TranslateErrors::IDENTICAL_LANGUAGES, 841 EXPECT_EQ(translate::TranslateErrors::IDENTICAL_LANGUAGES,
776 infobar->error_type()); 842 infobar->error_type());
777 843
778 // Let's run the same steps again but this time the server fails to detect the 844 // Let's run the same steps again but this time the server fails to detect the
779 // page's language (it returns an empty string). 845 // page's language (it returns an empty string).
780 SimulateNavigation(GURL("http://www.google.com"), "und", true); 846 SimulateNavigation(GURL("http://www.google.com"), "und", true);
781 menu.reset(CreateContextMenu()); 847 menu.reset(CreateContextMenu());
782 menu->Init(); 848 menu->Init();
783 menu->ExecuteCommand(IDC_CONTENT_CONTEXT_TRANSLATE, 0); 849 menu->ExecuteCommand(IDC_CONTENT_CONTEXT_TRANSLATE, 0);
784 SimulateOnPageTranslated( 850 SimulateOnPageTranslated(std::string(), "en",
785 2, std::string(), "en", translate::TranslateErrors::UNKNOWN_LANGUAGE); 851 translate::TranslateErrors::UNKNOWN_LANGUAGE);
786 infobar = GetTranslateInfoBar(); 852 infobar = GetTranslateInfoBar();
787 ASSERT_TRUE(infobar != NULL); 853 ASSERT_TRUE(infobar != NULL);
788 EXPECT_EQ(translate::TRANSLATE_STEP_TRANSLATE_ERROR, 854 EXPECT_EQ(translate::TRANSLATE_STEP_TRANSLATE_ERROR,
789 infobar->translate_step()); 855 infobar->translate_step());
790 EXPECT_EQ(translate::TranslateErrors::UNKNOWN_LANGUAGE, 856 EXPECT_EQ(translate::TranslateErrors::UNKNOWN_LANGUAGE,
791 infobar->error_type()); 857 infobar->error_type());
792 } 858 }
793 859
794 // Tests that we show/don't show an info-bar for the languages. 860 // Tests that we show/don't show an info-bar for the languages.
795 TEST_F(TranslateManagerRenderViewHostTest, TestLanguages) { 861 TEST_F(TranslateManagerRenderViewHostTest, TestLanguages) {
(...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after
836 TEST_F(TranslateManagerRenderViewHostTest, AutoTranslateOnNavigate) { 902 TEST_F(TranslateManagerRenderViewHostTest, AutoTranslateOnNavigate) {
837 EnableBubbleTest(); 903 EnableBubbleTest();
838 904
839 SimulateNavigation(GURL("http://www.google.fr"), "fr", true); 905 SimulateNavigation(GURL("http://www.google.fr"), "fr", true);
840 906
841 SimulateTranslatePress(); 907 SimulateTranslatePress();
842 SimulateTranslateScriptURLFetch(true); 908 SimulateTranslateScriptURLFetch(true);
843 SimulateOnPageTranslated("fr", "en"); 909 SimulateOnPageTranslated("fr", "en");
844 910
845 // Now navigate to a new page in the same language. 911 // Now navigate to a new page in the same language.
846 process()->sink().ClearMessages();
847 SimulateNavigation(GURL("http://news.google.fr"), "fr", true); 912 SimulateNavigation(GURL("http://news.google.fr"), "fr", true);
848 913
849 // This should have automatically triggered a translation. 914 // This should have automatically triggered a translation.
850 std::string original_lang, target_lang; 915 std::string original_lang, target_lang;
851 EXPECT_TRUE(GetTranslateMessage(&original_lang, &target_lang)); 916 EXPECT_TRUE(GetTranslateMessage(&original_lang, &target_lang));
852 EXPECT_EQ("fr", original_lang); 917 EXPECT_EQ("fr", original_lang);
853 EXPECT_EQ("en", target_lang); 918 EXPECT_EQ("en", target_lang);
854 919
855 // Now navigate to a page in a different language. 920 // Now navigate to a page in a different language.
856 process()->sink().ClearMessages();
857 SimulateNavigation(GURL("http://news.google.es"), "es", true); 921 SimulateNavigation(GURL("http://news.google.es"), "es", true);
858 922
859 // This should not have triggered a translate. 923 // This should not have triggered a translate.
860 EXPECT_FALSE(GetTranslateMessage(&original_lang, &target_lang)); 924 EXPECT_FALSE(GetTranslateMessage(&original_lang, &target_lang));
861 } 925 }
862 926
863 // Tests that multiple OnPageContents do not cause multiple infobars. 927 // Tests that multiple OnPageContents do not cause multiple infobars.
864 TEST_F(TranslateManagerRenderViewHostTest, MultipleOnPageContents) { 928 TEST_F(TranslateManagerRenderViewHostTest, MultipleOnPageContents) {
865 EnableBubbleTest(); 929 EnableBubbleTest();
866 930
(...skipping 223 matching lines...) Expand 10 before | Expand all | Expand 10 after
1090 EXPECT_FALSE(TranslateUiVisible()); 1154 EXPECT_FALSE(TranslateUiVisible());
1091 } 1155 }
1092 1156
1093 // Tests that we deal correctly with unsupported languages returned by the 1157 // Tests that we deal correctly with unsupported languages returned by the
1094 // server. 1158 // server.
1095 // The translation server might return a language we don't support. 1159 // The translation server might return a language we don't support.
1096 TEST_F(TranslateManagerRenderViewHostTest, ServerReportsUnsupportedLanguage) { 1160 TEST_F(TranslateManagerRenderViewHostTest, ServerReportsUnsupportedLanguage) {
1097 EnableBubbleTest(); 1161 EnableBubbleTest();
1098 1162
1099 SimulateNavigation(GURL("http://mail.google.fr"), "fr", true); 1163 SimulateNavigation(GURL("http://mail.google.fr"), "fr", true);
1100 process()->sink().ClearMessages();
1101 SimulateTranslatePress(); 1164 SimulateTranslatePress();
1102 SimulateTranslateScriptURLFetch(true); 1165 SimulateTranslateScriptURLFetch(true);
1103 // Simulate the render notifying the translation has been done, but it 1166 // Simulate the render notifying the translation has been done, but it
1104 // reports a language we don't support. 1167 // reports a language we don't support.
1105 SimulateOnPageTranslated("qbz", "en"); 1168 SimulateOnPageTranslated("qbz", "en");
1106 1169
1107 // An error infobar should be showing to report that we don't support this 1170 // An error infobar should be showing to report that we don't support this
1108 // language. 1171 // language.
1109 EXPECT_EQ(translate::TRANSLATE_STEP_TRANSLATE_ERROR, CurrentStep()); 1172 EXPECT_EQ(translate::TRANSLATE_STEP_TRANSLATE_ERROR, CurrentStep());
1110 1173
1111 // This infobar should have a button (so the string should not be empty). 1174 // This infobar should have a button (so the string should not be empty).
1112 // The error string on bubbles is currently not retrievable. 1175 // The error string on bubbles is currently not retrievable.
1113 // TODO(http://crbug.com/589301): OSX does not have an error view (yet). 1176 // TODO(http://crbug.com/589301): OSX does not have an error view (yet).
1114 if (!TranslateService::IsTranslateBubbleEnabled()) { 1177 if (!TranslateService::IsTranslateBubbleEnabled()) {
1115 translate::TranslateInfoBarDelegate* infobar = GetTranslateInfoBar(); 1178 translate::TranslateInfoBarDelegate* infobar = GetTranslateInfoBar();
1116 ASSERT_TRUE(infobar); 1179 ASSERT_TRUE(infobar);
1117 ASSERT_FALSE(infobar->GetMessageInfoBarButtonText().empty()); 1180 ASSERT_FALSE(infobar->GetMessageInfoBarButtonText().empty());
1118 1181
1119 // Pressing the button on that infobar should revert to the original 1182 // Pressing the button on that infobar should revert to the original
1120 // language. 1183 // language.
1121 process()->sink().ClearMessages();
1122 infobar->MessageInfoBarButtonPressed(); 1184 infobar->MessageInfoBarButtonPressed();
1123 const IPC::Message* message = process()->sink().GetFirstMessageMatching( 1185 EXPECT_TRUE(IsTranslationReverted());
1124 ChromeFrameMsg_RevertTranslation::ID);
1125 EXPECT_TRUE(message != NULL);
1126 // And it should have removed the infobar. 1186 // And it should have removed the infobar.
1127 EXPECT_TRUE(GetTranslateInfoBar() == NULL); 1187 EXPECT_TRUE(GetTranslateInfoBar() == NULL);
1128 } 1188 }
1129 } 1189 }
1130 1190
1131 // Tests that no translate infobar is shown and context menu is disabled, when 1191 // Tests that no translate infobar is shown and context menu is disabled, when
1132 // Chrome is in a language that the translate server does not support. 1192 // Chrome is in a language that the translate server does not support.
1133 TEST_F(TranslateManagerRenderViewHostTest, UnsupportedUILanguage) { 1193 TEST_F(TranslateManagerRenderViewHostTest, UnsupportedUILanguage) {
1134 // TODO(port): Test corresponding bubble translate UX: http://crbug.com/383235 1194 // TODO(port): Test corresponding bubble translate UX: http://crbug.com/383235
1135 if (TranslateService::IsTranslateBubbleEnabled()) 1195 if (TranslateService::IsTranslateBubbleEnabled())
(...skipping 230 matching lines...) Expand 10 before | Expand all | Expand 10 after
1366 1426
1367 // The translating infobar should be showing. 1427 // The translating infobar should be showing.
1368 translate::TranslateInfoBarDelegate* infobar = GetTranslateInfoBar(); 1428 translate::TranslateInfoBarDelegate* infobar = GetTranslateInfoBar();
1369 ASSERT_TRUE(infobar != NULL); 1429 ASSERT_TRUE(infobar != NULL);
1370 EXPECT_EQ(translate::TRANSLATE_STEP_TRANSLATING, infobar->translate_step()); 1430 EXPECT_EQ(translate::TRANSLATE_STEP_TRANSLATING, infobar->translate_step());
1371 SimulateTranslateScriptURLFetch(true); 1431 SimulateTranslateScriptURLFetch(true);
1372 std::string original_lang, target_lang; 1432 std::string original_lang, target_lang;
1373 EXPECT_TRUE(GetTranslateMessage(&original_lang, &target_lang)); 1433 EXPECT_TRUE(GetTranslateMessage(&original_lang, &target_lang));
1374 EXPECT_EQ("fr", original_lang); 1434 EXPECT_EQ("fr", original_lang);
1375 EXPECT_EQ("en", target_lang); 1435 EXPECT_EQ("en", target_lang);
1376 process()->sink().ClearMessages();
1377 1436
1378 // Try another language, it should not be autotranslated. 1437 // Try another language, it should not be autotranslated.
1379 SimulateNavigation(GURL("http://www.google.es"), "es", true); 1438 SimulateNavigation(GURL("http://www.google.es"), "es", true);
1380 EXPECT_FALSE(GetTranslateMessage(&original_lang, &target_lang)); 1439 EXPECT_FALSE(GetTranslateMessage(&original_lang, &target_lang));
1381 EXPECT_TRUE(GetTranslateInfoBar() != NULL); 1440 EXPECT_TRUE(GetTranslateInfoBar() != NULL);
1382 EXPECT_TRUE(CloseTranslateInfoBar()); 1441 EXPECT_TRUE(CloseTranslateInfoBar());
1383 1442
1384 // Let's switch to incognito mode, it should not be autotranslated in that 1443 // Let's switch to incognito mode, it should not be autotranslated in that
1385 // case either. 1444 // case either.
1386 TestingProfile* test_profile = 1445 TestingProfile* test_profile =
(...skipping 56 matching lines...) Expand 10 before | Expand all | Expand 10 after
1443 // That should have triggered a translation. 1502 // That should have triggered a translation.
1444 // The "translating..." infobar should be showing. 1503 // The "translating..." infobar should be showing.
1445 translate::TranslateInfoBarDelegate* infobar = GetTranslateInfoBar(); 1504 translate::TranslateInfoBarDelegate* infobar = GetTranslateInfoBar();
1446 ASSERT_TRUE(infobar != NULL); 1505 ASSERT_TRUE(infobar != NULL);
1447 EXPECT_EQ(translate::TRANSLATE_STEP_TRANSLATING, infobar->translate_step()); 1506 EXPECT_EQ(translate::TRANSLATE_STEP_TRANSLATING, infobar->translate_step());
1448 SimulateTranslateScriptURLFetch(true); 1507 SimulateTranslateScriptURLFetch(true);
1449 std::string original_lang, target_lang; 1508 std::string original_lang, target_lang;
1450 EXPECT_TRUE(GetTranslateMessage(&original_lang, &target_lang)); 1509 EXPECT_TRUE(GetTranslateMessage(&original_lang, &target_lang));
1451 EXPECT_EQ("fr", original_lang); 1510 EXPECT_EQ("fr", original_lang);
1452 EXPECT_EQ("en", target_lang); 1511 EXPECT_EQ("en", target_lang);
1453 process()->sink().ClearMessages();
1454 1512
1455 // This should also have reverted the blacklisting of this site and language. 1513 // This should also have reverted the blacklisting of this site and language.
1456 EXPECT_FALSE(translate_prefs->IsBlockedLanguage("fr")); 1514 EXPECT_FALSE(translate_prefs->IsBlockedLanguage("fr"));
1457 EXPECT_FALSE(translate_prefs->IsSiteBlacklisted(url.host())); 1515 EXPECT_FALSE(translate_prefs->IsSiteBlacklisted(url.host()));
1458 1516
1459 // Let's simulate the page being translated. 1517 // Let's simulate the page being translated.
1460 SimulateOnPageTranslated("fr", "en"); 1518 SimulateOnPageTranslated("fr", "en");
1461 1519
1462 // The translate menu should now be disabled. 1520 // The translate menu should now be disabled.
1463 menu.reset(CreateContextMenu()); 1521 menu.reset(CreateContextMenu());
1464 menu->Init(); 1522 menu->Init();
1465 EXPECT_TRUE(menu->IsItemPresent(IDC_CONTENT_CONTEXT_TRANSLATE)); 1523 EXPECT_TRUE(menu->IsItemPresent(IDC_CONTENT_CONTEXT_TRANSLATE));
1466 EXPECT_FALSE(menu->IsCommandIdEnabled(IDC_CONTENT_CONTEXT_TRANSLATE)); 1524 EXPECT_FALSE(menu->IsCommandIdEnabled(IDC_CONTENT_CONTEXT_TRANSLATE));
1467 1525
1468 // Test that selecting translate in the context menu WHILE the page is being 1526 // Test that selecting translate in the context menu WHILE the page is being
1469 // translated does nothing (this could happen if autotranslate kicks-in and 1527 // translated does nothing (this could happen if autotranslate kicks-in and
1470 // the user selects the menu while the translation is being performed). 1528 // the user selects the menu while the translation is being performed).
1471 SimulateNavigation(GURL("http://www.google.es"), "es", true); 1529 SimulateNavigation(GURL("http://www.google.es"), "es", true);
1472 infobar = GetTranslateInfoBar(); 1530 infobar = GetTranslateInfoBar();
1473 ASSERT_TRUE(infobar != NULL); 1531 ASSERT_TRUE(infobar != NULL);
1474 infobar->Translate(); 1532 infobar->Translate();
1475 EXPECT_TRUE(GetTranslateMessage(&original_lang, &target_lang)); 1533 EXPECT_TRUE(GetTranslateMessage(&original_lang, &target_lang));
1476 process()->sink().ClearMessages();
1477 menu.reset(CreateContextMenu()); 1534 menu.reset(CreateContextMenu());
1478 menu->Init(); 1535 menu->Init();
1479 EXPECT_TRUE(menu->IsCommandIdEnabled(IDC_CONTENT_CONTEXT_TRANSLATE)); 1536 EXPECT_TRUE(menu->IsCommandIdEnabled(IDC_CONTENT_CONTEXT_TRANSLATE));
1480 menu->ExecuteCommand(IDC_CONTENT_CONTEXT_TRANSLATE, 0); 1537 menu->ExecuteCommand(IDC_CONTENT_CONTEXT_TRANSLATE, 0);
1481 // No message expected since the translation should have been ignored. 1538 // No message expected since the translation should have been ignored.
1482 EXPECT_FALSE(GetTranslateMessage(&original_lang, &target_lang)); 1539 EXPECT_FALSE(GetTranslateMessage(&original_lang, &target_lang));
1483 1540
1484 // Now test that selecting translate in the context menu AFTER the page has 1541 // Now test that selecting translate in the context menu AFTER the page has
1485 // been translated does nothing. 1542 // been translated does nothing.
1486 SimulateNavigation(GURL("http://www.google.de"), "de", true); 1543 SimulateNavigation(GURL("http://www.google.de"), "de", true);
1487 infobar = GetTranslateInfoBar(); 1544 infobar = GetTranslateInfoBar();
1488 ASSERT_TRUE(infobar != NULL); 1545 ASSERT_TRUE(infobar != NULL);
1489 infobar->Translate(); 1546 infobar->Translate();
1490 EXPECT_TRUE(GetTranslateMessage(&original_lang, &target_lang)); 1547 EXPECT_TRUE(GetTranslateMessage(&original_lang, &target_lang));
1491 process()->sink().ClearMessages();
1492 menu.reset(CreateContextMenu()); 1548 menu.reset(CreateContextMenu());
1493 menu->Init(); 1549 menu->Init();
1494 EXPECT_TRUE(menu->IsCommandIdEnabled(IDC_CONTENT_CONTEXT_TRANSLATE)); 1550 EXPECT_TRUE(menu->IsCommandIdEnabled(IDC_CONTENT_CONTEXT_TRANSLATE));
1495 SimulateOnPageTranslated("de", "en"); 1551 SimulateOnPageTranslated("de", "en");
1496 menu->ExecuteCommand(IDC_CONTENT_CONTEXT_TRANSLATE, 0); 1552 menu->ExecuteCommand(IDC_CONTENT_CONTEXT_TRANSLATE, 0);
1497 // No message expected since the translation should have been ignored. 1553 // No message expected since the translation should have been ignored.
1498 EXPECT_FALSE(GetTranslateMessage(&original_lang, &target_lang)); 1554 EXPECT_FALSE(GetTranslateMessage(&original_lang, &target_lang));
1499 1555
1500 // Test that the translate context menu is enabled when the page is in an 1556 // Test that the translate context menu is enabled when the page is in an
1501 // unknown language. 1557 // unknown language.
(...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after
1541 SCOPED_TRACE(::testing::Message() << "Iteration " << i << " incognito mode=" 1597 SCOPED_TRACE(::testing::Message() << "Iteration " << i << " incognito mode="
1542 << test_profile->IsOffTheRecord()); 1598 << test_profile->IsOffTheRecord());
1543 SimulateNavigation(GURL("http://www.google.fr"), "fr", true); 1599 SimulateNavigation(GURL("http://www.google.fr"), "fr", true);
1544 infobar = GetTranslateInfoBar(); 1600 infobar = GetTranslateInfoBar();
1545 ASSERT_TRUE(infobar != NULL); 1601 ASSERT_TRUE(infobar != NULL);
1546 EXPECT_EQ(translate::TRANSLATE_STEP_BEFORE_TRANSLATE, 1602 EXPECT_EQ(translate::TRANSLATE_STEP_BEFORE_TRANSLATE,
1547 infobar->translate_step()); 1603 infobar->translate_step());
1548 if (i < 7) { 1604 if (i < 7) {
1549 EXPECT_FALSE(infobar->ShouldShowAlwaysTranslateShortcut()); 1605 EXPECT_FALSE(infobar->ShouldShowAlwaysTranslateShortcut());
1550 infobar->Translate(); 1606 infobar->Translate();
1551 process()->sink().ClearMessages();
1552 } else { 1607 } else {
1553 EXPECT_TRUE(infobar->ShouldShowAlwaysTranslateShortcut()); 1608 EXPECT_TRUE(infobar->ShouldShowAlwaysTranslateShortcut());
1554 } 1609 }
1555 if (i == 3) 1610 if (i == 3)
1556 test_profile->ForceIncognito(false); 1611 test_profile->ForceIncognito(false);
1557 } 1612 }
1558 // Simulate the user pressing "Always translate French". 1613 // Simulate the user pressing "Always translate French".
1559 infobar->AlwaysTranslatePageLanguage(); 1614 infobar->AlwaysTranslatePageLanguage();
1560 EXPECT_TRUE(translate_prefs->IsLanguagePairWhitelisted("fr", "en")); 1615 EXPECT_TRUE(translate_prefs->IsLanguagePairWhitelisted("fr", "en"));
1561 // Simulate the translate script being retrieved (it only needs to be done 1616 // Simulate the translate script being retrieved (it only needs to be done
1562 // once in the test as it is cached). 1617 // once in the test as it is cached).
1563 SimulateTranslateScriptURLFetch(true); 1618 SimulateTranslateScriptURLFetch(true);
1564 // That should have triggered a page translate. 1619 // That should have triggered a page translate.
1565 std::string original_lang, target_lang; 1620 std::string original_lang, target_lang;
1566 EXPECT_TRUE(GetTranslateMessage(&original_lang, &target_lang)); 1621 EXPECT_TRUE(GetTranslateMessage(&original_lang, &target_lang));
1567 process()->sink().ClearMessages();
1568 1622
1569 // Now test that declining the translation causes a "never translate" button 1623 // Now test that declining the translation causes a "never translate" button
1570 // to be shown (in non incognito mode only). 1624 // to be shown (in non incognito mode only).
1571 test_profile->ForceIncognito(true); 1625 test_profile->ForceIncognito(true);
1572 for (int i = 0; i < 8; ++i) { 1626 for (int i = 0; i < 8; ++i) {
1573 SCOPED_TRACE(::testing::Message() << "Iteration " << i << " incognito mode=" 1627 SCOPED_TRACE(::testing::Message() << "Iteration " << i << " incognito mode="
1574 << test_profile->IsOffTheRecord()); 1628 << test_profile->IsOffTheRecord());
1575 SimulateNavigation(GURL("http://www.google.de"), "de", true); 1629 SimulateNavigation(GURL("http://www.google.de"), "de", true);
1576 infobar = GetTranslateInfoBar(); 1630 infobar = GetTranslateInfoBar();
1577 ASSERT_TRUE(infobar != NULL); 1631 ASSERT_TRUE(infobar != NULL);
1578 EXPECT_EQ(translate::TRANSLATE_STEP_BEFORE_TRANSLATE, 1632 EXPECT_EQ(translate::TRANSLATE_STEP_BEFORE_TRANSLATE,
1579 infobar->translate_step()); 1633 infobar->translate_step());
1580 if (i < 7) { 1634 if (i < 7) {
1581 EXPECT_FALSE(infobar->ShouldShowNeverTranslateShortcut()); 1635 EXPECT_FALSE(infobar->ShouldShowNeverTranslateShortcut());
1582 infobar->TranslationDeclined(); 1636 infobar->TranslationDeclined();
1583 } else { 1637 } else {
1584 EXPECT_TRUE(infobar->ShouldShowNeverTranslateShortcut()); 1638 EXPECT_TRUE(infobar->ShouldShowNeverTranslateShortcut());
1585 } 1639 }
1586 if (i == 3) 1640 if (i == 3)
1587 test_profile->ForceIncognito(false); 1641 test_profile->ForceIncognito(false);
1588 } 1642 }
1589 // Simulate the user pressing "Never translate French". 1643 // Simulate the user pressing "Never translate French".
1590 infobar->NeverTranslatePageLanguage(); 1644 infobar->NeverTranslatePageLanguage();
1591 EXPECT_TRUE(translate_prefs->IsBlockedLanguage("de")); 1645 EXPECT_TRUE(translate_prefs->IsBlockedLanguage("de"));
1592 // No translation should have occured and the infobar should be gone. 1646 // No translation should have occured and the infobar should be gone.
1593 EXPECT_FALSE(GetTranslateMessage(&original_lang, &target_lang)); 1647 EXPECT_FALSE(GetTranslateMessage(&original_lang, &target_lang));
1594 process()->sink().ClearMessages();
1595 ASSERT_TRUE(GetTranslateInfoBar() == NULL); 1648 ASSERT_TRUE(GetTranslateInfoBar() == NULL);
1596 } 1649 }
1597 1650
1598 // Tests that we don't show a translate infobar when a page instructs that it 1651 // Tests that we don't show a translate infobar when a page instructs that it
1599 // should not be translated. 1652 // should not be translated.
1600 TEST_F(TranslateManagerRenderViewHostTest, NonTranslatablePage) { 1653 TEST_F(TranslateManagerRenderViewHostTest, NonTranslatablePage) {
1601 // TODO(port): Test corresponding bubble translate UX: http://crbug.com/383235 1654 // TODO(port): Test corresponding bubble translate UX: http://crbug.com/383235
1602 if (TranslateService::IsTranslateBubbleEnabled()) 1655 if (TranslateService::IsTranslateBubbleEnabled())
1603 return; 1656 return;
1604 1657
(...skipping 13 matching lines...) Expand all
1618 TEST_F(TranslateManagerRenderViewHostTest, ScriptExpires) { 1671 TEST_F(TranslateManagerRenderViewHostTest, ScriptExpires) {
1619 // TODO(port): Test corresponding bubble translate UX: http://crbug.com/383235 1672 // TODO(port): Test corresponding bubble translate UX: http://crbug.com/383235
1620 if (TranslateService::IsTranslateBubbleEnabled()) 1673 if (TranslateService::IsTranslateBubbleEnabled())
1621 return; 1674 return;
1622 1675
1623 ExpireTranslateScriptImmediately(); 1676 ExpireTranslateScriptImmediately();
1624 1677
1625 SimulateNavigation(GURL("http://www.google.fr"), "fr", true); 1678 SimulateNavigation(GURL("http://www.google.fr"), "fr", true);
1626 translate::TranslateInfoBarDelegate* infobar = GetTranslateInfoBar(); 1679 translate::TranslateInfoBarDelegate* infobar = GetTranslateInfoBar();
1627 ASSERT_TRUE(infobar != NULL); 1680 ASSERT_TRUE(infobar != NULL);
1628 process()->sink().ClearMessages();
1629 infobar->Translate(); 1681 infobar->Translate();
1630 SimulateTranslateScriptURLFetch(true); 1682 SimulateTranslateScriptURLFetch(true);
1631 SimulateOnPageTranslated("fr", "en"); 1683 SimulateOnPageTranslated("fr", "en");
1632 1684
1633 // A task should have been posted to clear the script, run it. 1685 // A task should have been posted to clear the script, run it.
1634 base::RunLoop().RunUntilIdle(); 1686 base::RunLoop().RunUntilIdle();
1635 1687
1636 // Do another navigation and translation. 1688 // Do another navigation and translation.
1637 SimulateNavigation(GURL("http://www.google.es"), "es", true); 1689 SimulateNavigation(GURL("http://www.google.es"), "es", true);
1638 infobar = GetTranslateInfoBar(); 1690 infobar = GetTranslateInfoBar();
1639 ASSERT_TRUE(infobar != NULL); 1691 ASSERT_TRUE(infobar != NULL);
1640 process()->sink().ClearMessages();
1641 infobar->Translate(); 1692 infobar->Translate();
1642 // If we don't simulate the URL fetch, the TranslateManager should be waiting 1693 // If we don't simulate the URL fetch, the TranslateManager should be waiting
1643 // for the script and no message should have been sent to the renderer. 1694 // for the script and no message should have been sent to the renderer.
1644 EXPECT_TRUE(process()->sink().GetFirstMessageMatching( 1695 EXPECT_FALSE(GetTranslateMessage(NULL, NULL));
1645 ChromeFrameMsg_TranslatePage::ID) == NULL);
1646 // Now simulate the URL fetch. 1696 // Now simulate the URL fetch.
1647 SimulateTranslateScriptURLFetch(true); 1697 SimulateTranslateScriptURLFetch(true);
1648 // Now the message should have been sent. 1698 // Now the message should have been sent.
1649 std::string original_lang, target_lang; 1699 std::string original_lang, target_lang;
1650 EXPECT_TRUE(GetTranslateMessage(&original_lang, &target_lang)); 1700 EXPECT_TRUE(GetTranslateMessage(&original_lang, &target_lang));
1651 EXPECT_EQ("es", original_lang); 1701 EXPECT_EQ("es", original_lang);
1652 EXPECT_EQ("en", target_lang); 1702 EXPECT_EQ("en", target_lang);
1653 } 1703 }
1654 1704
1655 TEST_F(TranslateManagerRenderViewHostTest, DownloadsAndHistoryNotTranslated) { 1705 TEST_F(TranslateManagerRenderViewHostTest, DownloadsAndHistoryNotTranslated) {
(...skipping 16 matching lines...) Expand all
1672 1722
1673 // Check the bubble exists instead of the infobar. 1723 // Check the bubble exists instead of the infobar.
1674 translate::TranslateInfoBarDelegate* infobar = GetTranslateInfoBar(); 1724 translate::TranslateInfoBarDelegate* infobar = GetTranslateInfoBar();
1675 ASSERT_TRUE(infobar == NULL); 1725 ASSERT_TRUE(infobar == NULL);
1676 TranslateBubbleModel* bubble = factory->model(); 1726 TranslateBubbleModel* bubble = factory->model();
1677 ASSERT_TRUE(bubble != NULL); 1727 ASSERT_TRUE(bubble != NULL);
1678 EXPECT_EQ(TranslateBubbleModel::VIEW_STATE_BEFORE_TRANSLATE, 1728 EXPECT_EQ(TranslateBubbleModel::VIEW_STATE_BEFORE_TRANSLATE,
1679 bubble->GetViewState()); 1729 bubble->GetViewState());
1680 1730
1681 // Simulate clicking translate. 1731 // Simulate clicking translate.
1682 process()->sink().ClearMessages();
1683 bubble->Translate(); 1732 bubble->Translate();
1684 1733
1685 // Check the bubble shows "Translating...". 1734 // Check the bubble shows "Translating...".
1686 bubble = factory->model(); 1735 bubble = factory->model();
1687 ASSERT_TRUE(bubble != NULL); 1736 ASSERT_TRUE(bubble != NULL);
1688 EXPECT_EQ(TranslateBubbleModel::VIEW_STATE_TRANSLATING, 1737 EXPECT_EQ(TranslateBubbleModel::VIEW_STATE_TRANSLATING,
1689 bubble->GetViewState()); 1738 bubble->GetViewState());
1690 1739
1691 // Simulate the translate script being retrieved (it only needs to be done 1740 // Simulate the translate script being retrieved (it only needs to be done
1692 // once in the test as it is cached). 1741 // once in the test as it is cached).
(...skipping 22 matching lines...) Expand all
1715 1764
1716 // Check the bubble exists instead of the infobar. 1765 // Check the bubble exists instead of the infobar.
1717 translate::TranslateInfoBarDelegate* infobar = GetTranslateInfoBar(); 1766 translate::TranslateInfoBarDelegate* infobar = GetTranslateInfoBar();
1718 ASSERT_TRUE(infobar == NULL); 1767 ASSERT_TRUE(infobar == NULL);
1719 TranslateBubbleModel* bubble = factory->model(); 1768 TranslateBubbleModel* bubble = factory->model();
1720 ASSERT_TRUE(bubble != NULL); 1769 ASSERT_TRUE(bubble != NULL);
1721 EXPECT_EQ(TranslateBubbleModel::VIEW_STATE_BEFORE_TRANSLATE, 1770 EXPECT_EQ(TranslateBubbleModel::VIEW_STATE_BEFORE_TRANSLATE,
1722 bubble->GetViewState()); 1771 bubble->GetViewState());
1723 1772
1724 // Simulate clicking translate. 1773 // Simulate clicking translate.
1725 process()->sink().ClearMessages();
1726 bubble->Translate(); 1774 bubble->Translate();
1727 SimulateTranslateScriptURLFetch(false); 1775 SimulateTranslateScriptURLFetch(false);
1728 1776
1729 // We should not have sent any message to translate to the renderer. 1777 // We should not have sent any message to translate to the renderer.
1730 EXPECT_FALSE(GetTranslateMessage(NULL, NULL)); 1778 EXPECT_FALSE(GetTranslateMessage(NULL, NULL));
1731 1779
1732 // And we should have an error infobar showing. 1780 // And we should have an error infobar showing.
1733 bubble = factory->model(); 1781 bubble = factory->model();
1734 ASSERT_TRUE(bubble != NULL); 1782 ASSERT_TRUE(bubble != NULL);
1735 EXPECT_EQ(TranslateBubbleModel::VIEW_STATE_ERROR, bubble->GetViewState()); 1783 EXPECT_EQ(TranslateBubbleModel::VIEW_STATE_ERROR, bubble->GetViewState());
(...skipping 22 matching lines...) Expand all
1758 1806
1759 // Check the bubble exists instead of the infobar. 1807 // Check the bubble exists instead of the infobar.
1760 translate::TranslateInfoBarDelegate* infobar = GetTranslateInfoBar(); 1808 translate::TranslateInfoBarDelegate* infobar = GetTranslateInfoBar();
1761 ASSERT_TRUE(infobar == NULL); 1809 ASSERT_TRUE(infobar == NULL);
1762 TranslateBubbleModel* bubble = factory->model(); 1810 TranslateBubbleModel* bubble = factory->model();
1763 ASSERT_TRUE(bubble != NULL); 1811 ASSERT_TRUE(bubble != NULL);
1764 EXPECT_EQ(TranslateBubbleModel::VIEW_STATE_TRANSLATING, 1812 EXPECT_EQ(TranslateBubbleModel::VIEW_STATE_TRANSLATING,
1765 bubble->GetViewState()); 1813 bubble->GetViewState());
1766 } 1814 }
1767 #endif // defined(USE_AURA) 1815 #endif // defined(USE_AURA)
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698