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

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

Issue 190063006: Infobar Componentization Proof of Concept (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: . Created 6 years, 9 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 <algorithm> 5 #include <algorithm>
6 #include <set> 6 #include <set>
7 #include <vector> 7 #include <vector>
8 8
9 #include "base/memory/scoped_ptr.h" 9 #include "base/memory/scoped_ptr.h"
10 #include "base/prefs/pref_change_registrar.h" 10 #include "base/prefs/pref_change_registrar.h"
11 #include "base/prefs/pref_service.h" 11 #include "base/prefs/pref_service.h"
12 #include "base/strings/stringprintf.h" 12 #include "base/strings/stringprintf.h"
13 #include "chrome/app/chrome_command_ids.h" 13 #include "chrome/app/chrome_command_ids.h"
14 #include "chrome/browser/chrome_notification_types.h" 14 #include "chrome/browser/chrome_notification_types.h"
15 #include "chrome/browser/extensions/test_extension_system.h" 15 #include "chrome/browser/extensions/test_extension_system.h"
16 #include "chrome/browser/infobars/infobar.h" 16 #include "chrome/browser/infobars/infobar.h"
17 #include "chrome/browser/infobars/infobar_manager.h"
17 #include "chrome/browser/infobars/infobar_service.h" 18 #include "chrome/browser/infobars/infobar_service.h"
18 #include "chrome/browser/renderer_context_menu/render_view_context_menu_test_uti l.h" 19 #include "chrome/browser/renderer_context_menu/render_view_context_menu_test_uti l.h"
19 #include "chrome/browser/translate/translate_infobar_delegate.h" 20 #include "chrome/browser/translate/translate_infobar_delegate.h"
20 #include "chrome/browser/translate/translate_manager.h" 21 #include "chrome/browser/translate/translate_manager.h"
21 #include "chrome/browser/translate/translate_service.h" 22 #include "chrome/browser/translate/translate_service.h"
22 #include "chrome/browser/translate/translate_tab_helper.h" 23 #include "chrome/browser/translate/translate_tab_helper.h"
23 #include "chrome/browser/ui/translate/translate_bubble_factory.h" 24 #include "chrome/browser/ui/translate/translate_bubble_factory.h"
24 #include "chrome/browser/ui/translate/translate_bubble_model.h" 25 #include "chrome/browser/ui/translate/translate_bubble_model.h"
25 #include "chrome/browser/ui/translate/translate_bubble_model_impl.h" 26 #include "chrome/browser/ui/translate/translate_bubble_model_impl.h"
26 #include "chrome/common/chrome_switches.h" 27 #include "chrome/common/chrome_switches.h"
(...skipping 116 matching lines...) Expand 10 before | Expand all | Expand 10 after
143 return true; 144 return true;
144 } 145 }
145 146
146 InfoBarService* infobar_service() { 147 InfoBarService* infobar_service() {
147 return InfoBarService::FromWebContents(web_contents()); 148 return InfoBarService::FromWebContents(web_contents());
148 } 149 }
149 150
150 // Returns the translate infobar if there is 1 infobar and it is a translate 151 // Returns the translate infobar if there is 1 infobar and it is a translate
151 // infobar. 152 // infobar.
152 TranslateInfoBarDelegate* GetTranslateInfoBar() { 153 TranslateInfoBarDelegate* GetTranslateInfoBar() {
153 return (infobar_service()->infobar_count() == 1) 154 InfoBarManager& infobar_manager = infobar_service()->infobar_manager();
154 ? infobar_service() 155 return (infobar_manager.infobar_count() == 1)
155 ->infobar_at(0) 156 ? infobar_manager.infobar_at(0)
156 ->delegate() 157 ->delegate()
157 ->AsTranslateInfoBarDelegate() 158 ->AsTranslateInfoBarDelegate()
158 : NULL; 159 : NULL;
159 } 160 }
160 161
161 // If there is 1 infobar and it is a translate infobar, closes it and returns 162 // If there is 1 infobar and it is a translate infobar, closes it and returns
162 // true. Returns false otherwise. 163 // true. Returns false otherwise.
163 bool CloseTranslateInfoBar() { 164 bool CloseTranslateInfoBar() {
164 InfoBarDelegate* infobar = GetTranslateInfoBar(); 165 InfoBarDelegate* infobar = GetTranslateInfoBar();
165 if (!infobar) 166 if (!infobar)
166 return false; 167 return false;
167 infobar->InfoBarDismissed(); // Simulates closing the infobar. 168 infobar->InfoBarDismissed(); // Simulates closing the infobar.
168 infobar_service()->RemoveInfoBar(infobar_service()->infobar_at(0)); 169 InfoBarManager& infobar_manager = infobar_service()->infobar_manager();
170 infobar_manager.RemoveInfoBar(infobar_manager.infobar_at(0));
169 return true; 171 return true;
170 } 172 }
171 173
172 // Checks whether |infobar| has been removed and clears the removed infobar 174 // Checks whether |infobar| has been removed and clears the removed infobar
173 // list. 175 // list.
174 bool CheckInfoBarRemovedAndReset(InfoBarDelegate* delegate) { 176 bool CheckInfoBarRemovedAndReset(InfoBarDelegate* delegate) {
175 bool found = removed_infobars_.count(delegate) != 0; 177 bool found = removed_infobars_.count(delegate) != 0;
176 removed_infobars_.clear(); 178 removed_infobars_.clear();
177 return found; 179 return found;
178 } 180 }
179 181
180 void ExpireTranslateScriptImmediately() { 182 void ExpireTranslateScriptImmediately() {
181 TranslateDownloadManager::GetInstance()->SetTranslateScriptExpirationDelay( 183 TranslateDownloadManager::GetInstance()->SetTranslateScriptExpirationDelay(
182 0); 184 0);
183 } 185 }
184 186
185 // If there is 1 infobar and it is a translate infobar, deny translation and 187 // If there is 1 infobar and it is a translate infobar, deny translation and
186 // returns true. Returns false otherwise. 188 // returns true. Returns false otherwise.
187 bool DenyTranslation() { 189 bool DenyTranslation() {
188 TranslateInfoBarDelegate* infobar = GetTranslateInfoBar(); 190 TranslateInfoBarDelegate* infobar = GetTranslateInfoBar();
189 if (!infobar) 191 if (!infobar)
190 return false; 192 return false;
191 infobar->TranslationDeclined(); 193 infobar->TranslationDeclined();
192 infobar_service()->RemoveInfoBar(infobar_service()->infobar_at(0)); 194 InfoBarManager& infobar_manager = infobar_service()->infobar_manager();
195 infobar_manager.RemoveInfoBar(infobar_manager.infobar_at(0));
193 return true; 196 return true;
194 } 197 }
195 198
196 void ReloadAndWait(bool successful_reload) { 199 void ReloadAndWait(bool successful_reload) {
197 NavEntryCommittedObserver nav_observer(web_contents()); 200 NavEntryCommittedObserver nav_observer(web_contents());
198 if (successful_reload) 201 if (successful_reload)
199 Reload(); 202 Reload();
200 else 203 else
201 FailedReload(); 204 FailedReload();
202 205
(...skipping 520 matching lines...) Expand 10 before | Expand all | Expand 10 after
723 process()->sink().ClearMessages(); 726 process()->sink().ClearMessages();
724 SimulateNavigation(GURL("http://news.google.es"), "es", true); 727 SimulateNavigation(GURL("http://news.google.es"), "es", true);
725 728
726 // This should not have triggered a translate. 729 // This should not have triggered a translate.
727 EXPECT_FALSE(GetTranslateMessage(&page_id, &original_lang, &target_lang)); 730 EXPECT_FALSE(GetTranslateMessage(&page_id, &original_lang, &target_lang));
728 } 731 }
729 732
730 // Tests that multiple OnPageContents do not cause multiple infobars. 733 // Tests that multiple OnPageContents do not cause multiple infobars.
731 TEST_F(TranslateManagerRenderViewHostTest, MultipleOnPageContents) { 734 TEST_F(TranslateManagerRenderViewHostTest, MultipleOnPageContents) {
732 SimulateNavigation(GURL("http://www.google.fr"), "fr", true); 735 SimulateNavigation(GURL("http://www.google.fr"), "fr", true);
736 InfoBarManager& infobar_manager = infobar_service()->infobar_manager();
733 737
734 // Simulate clicking 'Nope' (don't translate). 738 // Simulate clicking 'Nope' (don't translate).
735 EXPECT_TRUE(DenyTranslation()); 739 EXPECT_TRUE(DenyTranslation());
736 EXPECT_EQ(0U, infobar_service()->infobar_count()); 740 EXPECT_EQ(0U, infobar_manager.infobar_count());
737 741
738 // Send a new PageContents, we should not show an infobar. 742 // Send a new PageContents, we should not show an infobar.
739 SimulateOnTranslateLanguageDetermined("fr", true); 743 SimulateOnTranslateLanguageDetermined("fr", true);
740 EXPECT_EQ(0U, infobar_service()->infobar_count()); 744 EXPECT_EQ(0U, infobar_manager.infobar_count());
741 745
742 // Do the same steps but simulate closing the infobar this time. 746 // Do the same steps but simulate closing the infobar this time.
743 SimulateNavigation(GURL("http://www.youtube.fr"), "fr", true); 747 SimulateNavigation(GURL("http://www.youtube.fr"), "fr", true);
744 EXPECT_TRUE(CloseTranslateInfoBar()); 748 EXPECT_TRUE(CloseTranslateInfoBar());
745 EXPECT_EQ(0U, infobar_service()->infobar_count()); 749 EXPECT_EQ(0U, infobar_manager.infobar_count());
746 SimulateOnTranslateLanguageDetermined("fr", true); 750 SimulateOnTranslateLanguageDetermined("fr", true);
747 EXPECT_EQ(0U, infobar_service()->infobar_count()); 751 EXPECT_EQ(0U, infobar_manager.infobar_count());
748 } 752 }
749 753
750 // Test that reloading the page brings back the infobar if the 754 // Test that reloading the page brings back the infobar if the
751 // reload succeeded and does not bring it back the reload fails. 755 // reload succeeded and does not bring it back the reload fails.
752 TEST_F(TranslateManagerRenderViewHostTest, Reload) { 756 TEST_F(TranslateManagerRenderViewHostTest, Reload) {
753 SimulateNavigation(GURL("http://www.google.fr"), "fr", true); 757 SimulateNavigation(GURL("http://www.google.fr"), "fr", true);
754 758
755 EXPECT_TRUE(CloseTranslateInfoBar()); 759 EXPECT_TRUE(CloseTranslateInfoBar());
756 760
757 // Reload should bring back the infobar if the reload succeeds. 761 // Reload should bring back the infobar if the reload succeeds.
(...skipping 773 matching lines...) Expand 10 before | Expand all | Expand 10 after
1531 // Check the bubble exists instead of the infobar. 1535 // Check the bubble exists instead of the infobar.
1532 TranslateInfoBarDelegate* infobar = GetTranslateInfoBar(); 1536 TranslateInfoBarDelegate* infobar = GetTranslateInfoBar();
1533 ASSERT_TRUE(infobar == NULL); 1537 ASSERT_TRUE(infobar == NULL);
1534 TranslateBubbleModel* bubble = factory->model(); 1538 TranslateBubbleModel* bubble = factory->model();
1535 ASSERT_TRUE(bubble != NULL); 1539 ASSERT_TRUE(bubble != NULL);
1536 EXPECT_EQ(TranslateBubbleModel::VIEW_STATE_TRANSLATING, 1540 EXPECT_EQ(TranslateBubbleModel::VIEW_STATE_TRANSLATING,
1537 bubble->GetViewState()); 1541 bubble->GetViewState());
1538 } 1542 }
1539 1543
1540 #endif // defined(USE_AURA) 1544 #endif // defined(USE_AURA)
OLDNEW
« no previous file with comments | « chrome/browser/translate/translate_infobar_delegate.cc ('k') | chrome/browser/ui/auto_login_infobar_delegate.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698