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

Side by Side Diff: chrome/browser/ui/views/sync/one_click_signin_bubble_view_browsertest.cc

Issue 18558009: Fix flaky test OneClickSigninBubbleViewBrowserTest::ShowBubble (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Rebase Created 7 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
(Empty)
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
3 // found in the LICENSE file.
4
5 #include "chrome/browser/ui/views/sync/one_click_signin_bubble_view.h"
6
7 #include "base/bind.h"
8 #include "chrome/browser/ui/browser.h"
9 #include "chrome/browser/ui/browser_window.h"
10 #include "chrome/browser/ui/tabs/tab_strip_model.h"
11 #include "chrome/test/base/in_process_browser_test.h"
12 #include "chrome/test/base/ui_test_utils.h"
13 #include "content/public/common/page_transition_types.h"
14 #include "ui/views/controls/button/label_button.h"
15
16 class OneClickSigninBubbleViewBrowserTest : public InProcessBrowserTest {
17 public:
18 OneClickSigninBubbleViewBrowserTest()
19 : on_start_sync_called_(false),
20 mode_(OneClickSigninSyncStarter::CONFIGURE_SYNC_FIRST) {
21 }
22
23 OneClickSigninBubbleView* ShowOneClickSigninBubble(
24 BrowserWindow::OneClickSigninBubbleType bubble_type) {
25 browser()->window()->ShowOneClickSigninBubble(
26 bubble_type,
27 string16(),
28 string16(),
29 base::Bind(&OneClickSigninBubbleViewBrowserTest::OnStartSync, this));
30
31 OneClickSigninBubbleView* view =
32 OneClickSigninBubbleView::view_for_testing();
33 EXPECT_TRUE(view != NULL);
34 view->message_loop_for_testing_ = base::MessageLoop::current();
35 return view;
36 }
37
38 void OnStartSync(OneClickSigninSyncStarter::StartSyncMode mode) {
39 on_start_sync_called_ = true;
40 mode_ = mode;
41 }
42
43 protected:
44 bool on_start_sync_called_;
45 OneClickSigninSyncStarter::StartSyncMode mode_;
46
47 private:
48 DISALLOW_COPY_AND_ASSIGN(OneClickSigninBubbleViewBrowserTest);
49 };
50
51 IN_PROC_BROWSER_TEST_F(OneClickSigninBubbleViewBrowserTest, ShowBubble) {
52 ShowOneClickSigninBubble(BrowserWindow::ONE_CLICK_SIGNIN_BUBBLE_TYPE_BUBBLE);
53 content::RunAllPendingInMessageLoop();
54 EXPECT_TRUE(OneClickSigninBubbleView::IsShowing());
55 }
56
57 IN_PROC_BROWSER_TEST_F(OneClickSigninBubbleViewBrowserTest, ShowDialog) {
58 ShowOneClickSigninBubble(
59 BrowserWindow::ONE_CLICK_SIGNIN_BUBBLE_TYPE_MODAL_DIALOG);
60 content::RunAllPendingInMessageLoop();
61 EXPECT_TRUE(OneClickSigninBubbleView::IsShowing());
62 }
63
64 IN_PROC_BROWSER_TEST_F(OneClickSigninBubbleViewBrowserTest, HideBubble) {
65 ShowOneClickSigninBubble(BrowserWindow::ONE_CLICK_SIGNIN_BUBBLE_TYPE_BUBBLE);
66
67 OneClickSigninBubbleView::Hide();
68 content::RunAllPendingInMessageLoop();
69 EXPECT_FALSE(OneClickSigninBubbleView::IsShowing());
70 }
71
72 IN_PROC_BROWSER_TEST_F(OneClickSigninBubbleViewBrowserTest, HideDialog) {
73 ShowOneClickSigninBubble(
74 BrowserWindow::ONE_CLICK_SIGNIN_BUBBLE_TYPE_MODAL_DIALOG);
75
76 OneClickSigninBubbleView::Hide();
77 content::RunAllPendingInMessageLoop();
78 EXPECT_FALSE(OneClickSigninBubbleView::IsShowing());
79 EXPECT_TRUE(on_start_sync_called_);
80 EXPECT_EQ(OneClickSigninSyncStarter::SYNC_WITH_DEFAULT_SETTINGS, mode_);
81 }
82
83 IN_PROC_BROWSER_TEST_F(OneClickSigninBubbleViewBrowserTest, BubbleOkButton) {
84 OneClickSigninBubbleView* view =
85 ShowOneClickSigninBubble(
86 BrowserWindow::ONE_CLICK_SIGNIN_BUBBLE_TYPE_BUBBLE);
87
88 // Simulate pressing the OK button. Set the message loop in the bubble
89 // view so that it can be quit once the bubble is hidden.
90 views::ButtonListener* listener = view;
91 const ui::MouseEvent event(ui::ET_MOUSE_PRESSED,
92 gfx::Point(), gfx::Point(),
93 0);
94 listener->ButtonPressed(view->ok_button_, event);
95
96 // View should no longer be showing. The message loop will exit once the
97 // fade animation of the bubble is done.
98 content::RunAllPendingInMessageLoop();
99 EXPECT_FALSE(OneClickSigninBubbleView::IsShowing());
100 }
101
102 IN_PROC_BROWSER_TEST_F(OneClickSigninBubbleViewBrowserTest, DialogOkButton) {
103 OneClickSigninBubbleView* view = ShowOneClickSigninBubble(
104 BrowserWindow::ONE_CLICK_SIGNIN_BUBBLE_TYPE_MODAL_DIALOG);
105
106 // Simulate pressing the OK button. Set the message loop in the bubble
107 // view so that it can be quit once the bubble is hidden.
108 views::ButtonListener* listener = view;
109 const ui::MouseEvent event(ui::ET_MOUSE_PRESSED,
110 gfx::Point(), gfx::Point(),
111 0);
112 listener->ButtonPressed(view->ok_button_, event);
113
114 // View should no longer be showing and sync should start
115 // The message loop will exit once the fade animation of the dialog is done.
116 content::RunAllPendingInMessageLoop();
117 EXPECT_FALSE(OneClickSigninBubbleView::IsShowing());
118 EXPECT_TRUE(on_start_sync_called_);
119 EXPECT_EQ(OneClickSigninSyncStarter::SYNC_WITH_DEFAULT_SETTINGS, mode_);
120 }
121
122 IN_PROC_BROWSER_TEST_F(OneClickSigninBubbleViewBrowserTest,
123 DialogUndoButton) {
124 OneClickSigninBubbleView* view = ShowOneClickSigninBubble(
125 BrowserWindow::ONE_CLICK_SIGNIN_BUBBLE_TYPE_MODAL_DIALOG);
126
127 // Simulate pressing the undo button. Set the message loop in the bubble
128 // view so that it can be quit once the bubble is hidden.
129 views::ButtonListener* listener = view;
130 const ui::MouseEvent event(ui::ET_MOUSE_PRESSED,
131 gfx::Point(), gfx::Point(),
132 0);
133 listener->ButtonPressed(view->undo_button_, event);
134
135 // View should no longer be showing. The message loop will exit once the
136 // fade animation of the bubble is done.
137 content::RunAllPendingInMessageLoop();
138 EXPECT_FALSE(OneClickSigninBubbleView::IsShowing());
139 EXPECT_TRUE(on_start_sync_called_);
140 EXPECT_EQ(OneClickSigninSyncStarter::UNDO_SYNC, mode_);
141 }
142
143 IN_PROC_BROWSER_TEST_F(OneClickSigninBubbleViewBrowserTest,
144 BubbleAdvancedLink) {
145 int starting_tab_count = browser()->tab_strip_model()->count();
146
147 OneClickSigninBubbleView* view = ShowOneClickSigninBubble(
148 BrowserWindow::ONE_CLICK_SIGNIN_BUBBLE_TYPE_BUBBLE);
149
150 // Simulate pressing a link in the bubble.This should replace the current tab.
151 views::LinkListener* listener = view;
152 listener->LinkClicked(view->advanced_link_, 0);
153
154 // View should no longer be showing and the current tab should be replaced.
155 content::RunAllPendingInMessageLoop();
156 EXPECT_FALSE(OneClickSigninBubbleView::IsShowing());
157 int tab_count = browser()->tab_strip_model()->count();
158 EXPECT_EQ(starting_tab_count, tab_count);
159 }
160
161 IN_PROC_BROWSER_TEST_F(OneClickSigninBubbleViewBrowserTest,
162 DialogAdvancedLink) {
163 int starting_tab_count = browser()->tab_strip_model()->count();
164
165 OneClickSigninBubbleView* view = ShowOneClickSigninBubble(
166 BrowserWindow::ONE_CLICK_SIGNIN_BUBBLE_TYPE_MODAL_DIALOG);
167
168 // Simulate pressing a link in the bubble. This should open a new tab.
169 views::LinkListener* listener = view;
170 listener->LinkClicked(view->advanced_link_, 0);
171
172 // View should no longer be showing and a new tab should be opened.
173 content::RunAllPendingInMessageLoop();
174 EXPECT_TRUE(on_start_sync_called_);
175 EXPECT_EQ(OneClickSigninSyncStarter::CONFIGURE_SYNC_FIRST, mode_);
176 EXPECT_FALSE(OneClickSigninBubbleView::IsShowing());
177 int tab_count = browser()->tab_strip_model()->count();
178 EXPECT_EQ(starting_tab_count, tab_count);
179 }
180
181 IN_PROC_BROWSER_TEST_F(OneClickSigninBubbleViewBrowserTest,
182 BubbleLearnMoreLink) {
183 int starting_tab_count = browser()->tab_strip_model()->count();
184
185 OneClickSigninBubbleView* view = ShowOneClickSigninBubble(
186 BrowserWindow::ONE_CLICK_SIGNIN_BUBBLE_TYPE_BUBBLE);
187
188 // View should no longer be showing and a new tab should be added.
189 views::LinkListener* listener = view;
190 listener->LinkClicked(view->learn_more_link_, 0);
191
192 content::RunAllPendingInMessageLoop();
193 EXPECT_FALSE(OneClickSigninBubbleView::IsShowing());
194 int tab_count = browser()->tab_strip_model()->count();
195 EXPECT_EQ(starting_tab_count + 1, tab_count);
196 }
197
198 IN_PROC_BROWSER_TEST_F(OneClickSigninBubbleViewBrowserTest,
199 BubblePressEnterKey) {
200 OneClickSigninBubbleView* one_click_view = ShowOneClickSigninBubble(
201 BrowserWindow::ONE_CLICK_SIGNIN_BUBBLE_TYPE_BUBBLE);
202
203 // Simulate pressing the Enter key.
204 views::View* view = one_click_view;
205 const ui::Accelerator accelerator(ui::VKEY_RETURN, 0);
206 view->AcceleratorPressed(accelerator);
207
208 // View should no longer be showing. The message loop will exit once the
209 // fade animation of the bubble is done.
210 content::RunAllPendingInMessageLoop();
211 EXPECT_FALSE(OneClickSigninBubbleView::IsShowing());
212 }
213
214 IN_PROC_BROWSER_TEST_F(OneClickSigninBubbleViewBrowserTest,
215 DialogPressEnterKey) {
216 OneClickSigninBubbleView* one_click_view = ShowOneClickSigninBubble(
217 BrowserWindow::ONE_CLICK_SIGNIN_BUBBLE_TYPE_MODAL_DIALOG);
218
219 // Simulate pressing the Enter key.
220 views::View* view = one_click_view;
221 const ui::Accelerator accelerator(ui::VKEY_RETURN, 0);
222 view->AcceleratorPressed(accelerator);
223
224 // View should no longer be showing. The message loop will exit once the
225 // fade animation of the bubble is done.
226 content::RunAllPendingInMessageLoop();
227 EXPECT_FALSE(OneClickSigninBubbleView::IsShowing());
228 EXPECT_TRUE(on_start_sync_called_);
229 EXPECT_EQ(OneClickSigninSyncStarter::SYNC_WITH_DEFAULT_SETTINGS, mode_);
230 }
231
232 IN_PROC_BROWSER_TEST_F(OneClickSigninBubbleViewBrowserTest,
233 BubblePressEscapeKey) {
234 OneClickSigninBubbleView* one_click_view = ShowOneClickSigninBubble(
235 BrowserWindow::ONE_CLICK_SIGNIN_BUBBLE_TYPE_BUBBLE);
236
237 // Simulate pressing the Escape key.
238 views::View* view = one_click_view;
239 const ui::Accelerator accelerator(ui::VKEY_ESCAPE, 0);
240 view->AcceleratorPressed(accelerator);
241
242 // View should no longer be showing. The message loop will exit once the
243 // fade animation of the bubble is done.
244 content::RunAllPendingInMessageLoop();
245 EXPECT_FALSE(OneClickSigninBubbleView::IsShowing());
246 }
247
248 IN_PROC_BROWSER_TEST_F(OneClickSigninBubbleViewBrowserTest,
249 DialogPressEscapeKey) {
250 OneClickSigninBubbleView* one_click_view = ShowOneClickSigninBubble(
251 BrowserWindow::ONE_CLICK_SIGNIN_BUBBLE_TYPE_MODAL_DIALOG);
252
253 // Simulate pressing the Escape key.
254 views::View* view = one_click_view;
255 const ui::Accelerator accelerator(ui::VKEY_ESCAPE, 0);
256 view->AcceleratorPressed(accelerator);
257
258 // View should no longer be showing. The message loop will exit once the
259 // fade animation of the bubble is done.
260 content::RunAllPendingInMessageLoop();
261 EXPECT_FALSE(OneClickSigninBubbleView::IsShowing());
262 EXPECT_FALSE(on_start_sync_called_);
263 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698