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

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

Issue 7810002: Move infobar handling to a tab helper. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: fixes Created 9 years, 3 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 | Annotate | Revision Log
OLDNEW
1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2011 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/utf_string_conversions.h" 10 #include "base/utf_string_conversions.h"
11 #include "base/stringprintf.h" 11 #include "base/stringprintf.h"
12 #include "chrome/app/chrome_command_ids.h" 12 #include "chrome/app/chrome_command_ids.h"
13 #include "chrome/browser/infobars/infobar_tab_helper.h"
13 #include "chrome/browser/prefs/pref_change_registrar.h" 14 #include "chrome/browser/prefs/pref_change_registrar.h"
14 #include "chrome/browser/prefs/pref_service.h" 15 #include "chrome/browser/prefs/pref_service.h"
15 #include "chrome/browser/tab_contents/infobar.h" 16 #include "chrome/browser/tab_contents/infobar.h"
16 #include "chrome/browser/tab_contents/render_view_context_menu.h" 17 #include "chrome/browser/tab_contents/render_view_context_menu.h"
17 #include "chrome/browser/translate/translate_infobar_delegate.h" 18 #include "chrome/browser/translate/translate_infobar_delegate.h"
18 #include "chrome/browser/translate/translate_manager.h" 19 #include "chrome/browser/translate/translate_manager.h"
19 #include "chrome/browser/translate/translate_prefs.h" 20 #include "chrome/browser/translate/translate_prefs.h"
20 #include "chrome/browser/ui/tab_contents/test_tab_contents_wrapper.h" 21 #include "chrome/browser/ui/tab_contents/test_tab_contents_wrapper.h"
21 #include "chrome/browser/ui/tab_contents/tab_contents_wrapper.h" 22 #include "chrome/browser/ui/tab_contents/tab_contents_wrapper.h"
22 #include "chrome/common/chrome_notification_types.h" 23 #include "chrome/common/chrome_notification_types.h"
(...skipping 22 matching lines...) Expand all
45 using testing::Property; 46 using testing::Property;
46 using WebKit::WebContextMenuData; 47 using WebKit::WebContextMenuData;
47 48
48 class TranslateManagerTest : public TabContentsWrapperTestHarness, 49 class TranslateManagerTest : public TabContentsWrapperTestHarness,
49 public NotificationObserver { 50 public NotificationObserver {
50 public: 51 public:
51 TranslateManagerTest() 52 TranslateManagerTest()
52 : ui_thread_(BrowserThread::UI, &message_loop_) { 53 : ui_thread_(BrowserThread::UI, &message_loop_) {
53 } 54 }
54 55
55 // Simluates navigating to a page and getting the page contents and language 56 // Simulates navigating to a page and getting the page contents and language
56 // for that navigation. 57 // for that navigation.
57 void SimulateNavigation(const GURL& url, 58 void SimulateNavigation(const GURL& url,
58 const std::string& lang, 59 const std::string& lang,
59 bool page_translatable) { 60 bool page_translatable) {
60 NavigateAndCommit(url); 61 NavigateAndCommit(url);
61 SimulateOnTranslateLanguageDetermined(lang, page_translatable); 62 SimulateOnTranslateLanguageDetermined(lang, page_translatable);
62 } 63 }
63 64
64 void SimulateOnTranslateLanguageDetermined(const std::string& lang, 65 void SimulateOnTranslateLanguageDetermined(const std::string& lang,
65 bool page_translatable) { 66 bool page_translatable) {
(...skipping 14 matching lines...) Expand all
80 if (page_id) 81 if (page_id)
81 *page_id = translate_param.a; 82 *page_id = translate_param.a;
82 // Ignore translate_param.b which is the script injected in the page. 83 // Ignore translate_param.b which is the script injected in the page.
83 if (original_lang) 84 if (original_lang)
84 *original_lang = translate_param.c; 85 *original_lang = translate_param.c;
85 if (target_lang) 86 if (target_lang)
86 *target_lang = translate_param.d; 87 *target_lang = translate_param.d;
87 return true; 88 return true;
88 } 89 }
89 90
91 InfoBarTabHelper* infobar_tab_helper() {
92 return contents_wrapper()->infobar_tab_helper();
93 }
94
90 // Returns the translate infobar if there is 1 infobar and it is a translate 95 // Returns the translate infobar if there is 1 infobar and it is a translate
91 // infobar. 96 // infobar.
92 TranslateInfoBarDelegate* GetTranslateInfoBar() { 97 TranslateInfoBarDelegate* GetTranslateInfoBar() {
93 return (contents_wrapper()->infobar_count() == 1) ? 98 return (infobar_tab_helper()->infobar_count() == 1) ?
94 contents_wrapper()->GetInfoBarDelegateAt(0)-> 99 infobar_tab_helper()->GetInfoBarDelegateAt(0)->
95 AsTranslateInfoBarDelegate() : NULL; 100 AsTranslateInfoBarDelegate() : NULL;
96 } 101 }
97 102
98 // If there is 1 infobar and it is a translate infobar, closes it and returns 103 // If there is 1 infobar and it is a translate infobar, closes it and returns
99 // true. Returns false otherwise. 104 // true. Returns false otherwise.
100 bool CloseTranslateInfoBar() { 105 bool CloseTranslateInfoBar() {
101 InfoBarDelegate* infobar = GetTranslateInfoBar(); 106 InfoBarDelegate* infobar = GetTranslateInfoBar();
102 if (!infobar) 107 if (!infobar)
103 return false; 108 return false;
104 infobar->InfoBarDismissed(); // Simulates closing the infobar. 109 infobar->InfoBarDismissed(); // Simulates closing the infobar.
105 contents_wrapper()->RemoveInfoBar(infobar); 110 infobar_tab_helper()->RemoveInfoBar(infobar);
106 return true; 111 return true;
107 } 112 }
108 113
109 // Checks whether |infobar| has been removed and clears the removed infobar 114 // Checks whether |infobar| has been removed and clears the removed infobar
110 // list. 115 // list.
111 bool CheckInfoBarRemovedAndReset(InfoBarDelegate* delegate) { 116 bool CheckInfoBarRemovedAndReset(InfoBarDelegate* delegate) {
112 bool found = removed_infobars_.count(delegate) != 0; 117 bool found = removed_infobars_.count(delegate) != 0;
113 removed_infobars_.clear(); 118 removed_infobars_.clear();
114 return found; 119 return found;
115 } 120 }
(...skipping 12 matching lines...) Expand all
128 TranslateManager::GetInstance()->set_translate_script_expiration_delay(0); 133 TranslateManager::GetInstance()->set_translate_script_expiration_delay(0);
129 } 134 }
130 135
131 // If there is 1 infobar and it is a translate infobar, deny translation and 136 // If there is 1 infobar and it is a translate infobar, deny translation and
132 // returns true. Returns false otherwise. 137 // returns true. Returns false otherwise.
133 bool DenyTranslation() { 138 bool DenyTranslation() {
134 TranslateInfoBarDelegate* infobar = GetTranslateInfoBar(); 139 TranslateInfoBarDelegate* infobar = GetTranslateInfoBar();
135 if (!infobar) 140 if (!infobar)
136 return false; 141 return false;
137 infobar->TranslationDeclined(); 142 infobar->TranslationDeclined();
138 contents_wrapper()->RemoveInfoBar(infobar); 143 infobar_tab_helper()->RemoveInfoBar(infobar);
139 return true; 144 return true;
140 } 145 }
141 146
142 virtual void Observe(int type, 147 virtual void Observe(int type,
143 const NotificationSource& source, 148 const NotificationSource& source,
144 const NotificationDetails& details) { 149 const NotificationDetails& details) {
145 DCHECK_EQ(chrome::NOTIFICATION_TAB_CONTENTS_INFOBAR_REMOVED, type); 150 DCHECK_EQ(chrome::NOTIFICATION_TAB_CONTENTS_INFOBAR_REMOVED, type);
146 removed_infobars_.insert(Details<InfoBarRemovedDetails>(details)->first); 151 removed_infobars_.insert(Details<InfoBarRemovedDetails>(details)->first);
147 } 152 }
148 153
(...skipping 476 matching lines...) Expand 10 before | Expand all | Expand 10 after
625 EXPECT_FALSE(GetTranslateMessage(&page_id, &original_lang, &target_lang)); 630 EXPECT_FALSE(GetTranslateMessage(&page_id, &original_lang, &target_lang));
626 } 631 }
627 632
628 // Tests that multiple OnPageContents do not cause multiple infobars. 633 // Tests that multiple OnPageContents do not cause multiple infobars.
629 TEST_F(TranslateManagerTest, MultipleOnPageContents) { 634 TEST_F(TranslateManagerTest, MultipleOnPageContents) {
630 // Simulate navigating to a page and getting its language. 635 // Simulate navigating to a page and getting its language.
631 SimulateNavigation(GURL("http://www.google.fr"), "fr", true); 636 SimulateNavigation(GURL("http://www.google.fr"), "fr", true);
632 637
633 // Simulate clicking 'Nope' (don't translate). 638 // Simulate clicking 'Nope' (don't translate).
634 EXPECT_TRUE(DenyTranslation()); 639 EXPECT_TRUE(DenyTranslation());
635 EXPECT_EQ(0U, contents_wrapper()->infobar_count()); 640 EXPECT_EQ(0U, infobar_tab_helper()->infobar_count());
636 641
637 // Send a new PageContents, we should not show an infobar. 642 // Send a new PageContents, we should not show an infobar.
638 SimulateOnTranslateLanguageDetermined("fr", true); 643 SimulateOnTranslateLanguageDetermined("fr", true);
639 EXPECT_EQ(0U, contents_wrapper()->infobar_count()); 644 EXPECT_EQ(0U, infobar_tab_helper()->infobar_count());
640 645
641 // Do the same steps but simulate closing the infobar this time. 646 // Do the same steps but simulate closing the infobar this time.
642 SimulateNavigation(GURL("http://www.youtube.fr"), "fr", true); 647 SimulateNavigation(GURL("http://www.youtube.fr"), "fr", true);
643 EXPECT_TRUE(CloseTranslateInfoBar()); 648 EXPECT_TRUE(CloseTranslateInfoBar());
644 EXPECT_EQ(0U, contents_wrapper()->infobar_count()); 649 EXPECT_EQ(0U, infobar_tab_helper()->infobar_count());
645 SimulateOnTranslateLanguageDetermined("fr", true); 650 SimulateOnTranslateLanguageDetermined("fr", true);
646 EXPECT_EQ(0U, contents_wrapper()->infobar_count()); 651 EXPECT_EQ(0U, infobar_tab_helper()->infobar_count());
647 } 652 }
648 653
649 // Test that reloading the page brings back the infobar. 654 // Test that reloading the page brings back the infobar.
650 TEST_F(TranslateManagerTest, Reload) { 655 TEST_F(TranslateManagerTest, Reload) {
651 // Simulate navigating to a page and getting its language. 656 // Simulate navigating to a page and getting its language.
652 SimulateNavigation(GURL("http://www.google.fr"), "fr", true); 657 SimulateNavigation(GURL("http://www.google.fr"), "fr", true);
653 658
654 // Close the infobar. 659 // Close the infobar.
655 EXPECT_TRUE(CloseTranslateInfoBar()); 660 EXPECT_TRUE(CloseTranslateInfoBar());
656 661
(...skipping 671 matching lines...) Expand 10 before | Expand all | Expand 10 after
1328 NULL); 1333 NULL);
1329 // Now simulate the URL fetch. 1334 // Now simulate the URL fetch.
1330 SimulateTranslateScriptURLFetch(true); 1335 SimulateTranslateScriptURLFetch(true);
1331 // Now the message should have been sent. 1336 // Now the message should have been sent.
1332 int page_id = 0; 1337 int page_id = 0;
1333 std::string original_lang, target_lang; 1338 std::string original_lang, target_lang;
1334 EXPECT_TRUE(GetTranslateMessage(&page_id, &original_lang, &target_lang)); 1339 EXPECT_TRUE(GetTranslateMessage(&page_id, &original_lang, &target_lang));
1335 EXPECT_EQ("es", original_lang); 1340 EXPECT_EQ("es", original_lang);
1336 EXPECT_EQ("en", target_lang); 1341 EXPECT_EQ("en", target_lang);
1337 } 1342 }
OLDNEW
« no previous file with comments | « chrome/browser/translate/translate_manager.cc ('k') | chrome/browser/ui/autologin_infobar_delegate.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698