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

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

Issue 10332185: Update behavior of one-click infobar to remove modal dialog, add "undo". (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Make GTK ok and undo buttons the same size horizontally Created 8 years, 7 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) 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 #include "chrome/browser/ui/views/sync/one_click_signin_bubble_view.h" 5 #include "chrome/browser/ui/views/sync/one_click_signin_bubble_view.h"
6 6
7 #include "base/bind.h" 7 #include "base/bind.h"
8 #include "chrome/browser/ui/browser.h" 8 #include "chrome/browser/ui/browser.h"
9 #include "chrome/browser/ui/browser_window.h" 9 #include "chrome/browser/ui/browser_window.h"
10 #include "chrome/test/base/in_process_browser_test.h" 10 #include "chrome/test/base/in_process_browser_test.h"
11 #include "chrome/test/base/ui_test_utils.h" 11 #include "chrome/test/base/ui_test_utils.h"
12 #include "content/public/common/page_transition_types.h" 12 #include "content/public/common/page_transition_types.h"
13 #include "ui/views/controls/button/text_button.h" 13 #include "ui/views/controls/button/text_button.h"
14 #include "ui/views/events/event.h" 14 #include "ui/views/events/event.h"
15 15
16 namespace {
17
18 void OnClickLink(Browser* browser) {
19 browser->AddSelectedTabWithURL(GURL("http://www.example.com"),
20 content::PAGE_TRANSITION_AUTO_BOOKMARK);
21 }
22
23 } // namespace
24
25 class OneClickSigninBubbleViewBrowserTest : public InProcessBrowserTest { 16 class OneClickSigninBubbleViewBrowserTest : public InProcessBrowserTest {
26 public: 17 public:
27 OneClickSigninBubbleViewBrowserTest() {} 18 OneClickSigninBubbleViewBrowserTest()
19 : on_start_sync_called_(false),
20 mode_(OneClickSigninSyncStarter::CONFIGURE_SYNC_FIRST) {
21 }
28 22
29 void ShowOneClickSigninBubble() { 23 OneClickSigninBubbleView* ShowOneClickSigninBubble() {
30 base::Closure on_click_link_callback = 24 browser()->window()->ShowOneClickSigninBubble(
31 base::Bind(&OnClickLink, base::Unretained(browser())); 25 base::Bind(&OneClickSigninBubbleViewBrowserTest::OnStartSync, this));
32 browser()->window()->ShowOneClickSigninBubble(on_click_link_callback, 26
33 on_click_link_callback); 27 ui_test_utils::RunAllPendingInMessageLoop();
28 EXPECT_TRUE(OneClickSigninBubbleView::IsShowing());
29
30 OneClickSigninBubbleView* view =
31 OneClickSigninBubbleView::view_for_testing();
32 EXPECT_TRUE(view != NULL);
Peter Kasting 2012/05/24 22:25:18 Tiny nit: EXPECT_FALSE(view == NULL) always felt l
Roger Tawa OOO till Jul 10th 2012/05/25 16:04:08 6 of one, half a dozen of another...
33
34 // Simulate pressing a link in the bubble. This should open a new tab.
35 view->set_message_loop_for_testing(MessageLoop::current());
36 return view;
34 } 37 }
35 38
39 void OnStartSync(OneClickSigninSyncStarter::StartSyncMode mode) {
40 on_start_sync_called_ = true;
41 mode_ = mode;
42 }
43
44 protected:
45 bool on_start_sync_called_;
46 OneClickSigninSyncStarter::StartSyncMode mode_;
47
36 private: 48 private:
37 DISALLOW_COPY_AND_ASSIGN(OneClickSigninBubbleViewBrowserTest); 49 DISALLOW_COPY_AND_ASSIGN(OneClickSigninBubbleViewBrowserTest);
38 }; 50 };
39 51
40 IN_PROC_BROWSER_TEST_F(OneClickSigninBubbleViewBrowserTest, Show) { 52 IN_PROC_BROWSER_TEST_F(OneClickSigninBubbleViewBrowserTest, Show) {
41 ShowOneClickSigninBubble(); 53 ShowOneClickSigninBubble();
42 ui_test_utils::RunAllPendingInMessageLoop(); 54 ui_test_utils::RunAllPendingInMessageLoop();
43 EXPECT_TRUE(OneClickSigninBubbleView::IsShowing()); 55 EXPECT_TRUE(OneClickSigninBubbleView::IsShowing());
44 56
45 OneClickSigninBubbleView::Hide(); 57 OneClickSigninBubbleView::Hide();
46 ui_test_utils::RunAllPendingInMessageLoop(); 58 ui_test_utils::RunAllPendingInMessageLoop();
59 EXPECT_TRUE(on_start_sync_called_);
60 EXPECT_EQ(OneClickSigninSyncStarter::SYNC_WITH_DEFAULT_SETTINGS, mode_);
47 EXPECT_FALSE(OneClickSigninBubbleView::IsShowing()); 61 EXPECT_FALSE(OneClickSigninBubbleView::IsShowing());
48 } 62 }
49 63
50 IN_PROC_BROWSER_TEST_F(OneClickSigninBubbleViewBrowserTest, CloseButton) { 64 IN_PROC_BROWSER_TEST_F(OneClickSigninBubbleViewBrowserTest, OkButton) {
51 int initial_tab_count = browser()->tab_count(); 65 OneClickSigninBubbleView* view = ShowOneClickSigninBubble();
52
53 ShowOneClickSigninBubble();
54 ui_test_utils::RunAllPendingInMessageLoop();
55 EXPECT_TRUE(OneClickSigninBubbleView::IsShowing());
56
57 OneClickSigninBubbleView* view = OneClickSigninBubbleView::view_for_testing();
58 EXPECT_TRUE(view != NULL);
59 EXPECT_EQ(initial_tab_count, browser()->tab_count());
60 66
61 // Simulate pressing the OK button. Set the message loop in the bubble 67 // Simulate pressing the OK button. Set the message loop in the bubble
62 // view so that it can be quit once the bubble is hidden. 68 // view so that it can be quit once the bubble is hidden.
63 view->set_message_loop_for_testing(MessageLoop::current());
64 views::ButtonListener* listener = view; 69 views::ButtonListener* listener = view;
65 views::MouseEvent event(ui::ET_MOUSE_PRESSED, 0, 0, 0); 70 const views::MouseEvent event(ui::ET_MOUSE_PRESSED, 0, 0, 0);
66 listener->ButtonPressed(view->close_button_for_testing(), event); 71 listener->ButtonPressed(view->ok_button_for_testing(), event);
67 72
68 // View should no longer be showing. The message loop will exit once the 73 // View should no longer be showing. The message loop will exit once the
69 // fade animation of the bubble is done. 74 // fade animation of the bubble is done.
70 ui_test_utils::RunMessageLoop(); 75 ui_test_utils::RunMessageLoop();
76 EXPECT_TRUE(on_start_sync_called_);
77 EXPECT_EQ(OneClickSigninSyncStarter::SYNC_WITH_DEFAULT_SETTINGS, mode_);
71 EXPECT_FALSE(OneClickSigninBubbleView::IsShowing()); 78 EXPECT_FALSE(OneClickSigninBubbleView::IsShowing());
72 EXPECT_EQ(initial_tab_count, browser()->tab_count());
73 } 79 }
74 80
75 IN_PROC_BROWSER_TEST_F(OneClickSigninBubbleViewBrowserTest, ViewLink) { 81 IN_PROC_BROWSER_TEST_F(OneClickSigninBubbleViewBrowserTest, UndoButton) {
76 int initial_tab_count = browser()->tab_count(); 82 OneClickSigninBubbleView* view = ShowOneClickSigninBubble();
77 83
78 ShowOneClickSigninBubble(); 84 // Simulate pressing the undo button. Set the message loop in the bubble
79 ui_test_utils::RunAllPendingInMessageLoop(); 85 // view so that it can be quit once the bubble is hidden.
80 EXPECT_TRUE(OneClickSigninBubbleView::IsShowing()); 86 views::ButtonListener* listener = view;
87 const views::MouseEvent event(ui::ET_MOUSE_PRESSED, 0, 0, 0);
88 listener->ButtonPressed(view->undo_button_for_testing(), event);
81 89
82 OneClickSigninBubbleView* view = OneClickSigninBubbleView::view_for_testing(); 90 // View should no longer be showing. The message loop will exit once the
83 EXPECT_TRUE(view != NULL); 91 // fade animation of the bubble is done.
84 EXPECT_EQ(initial_tab_count, browser()->tab_count()); 92 ui_test_utils::RunMessageLoop();
93 EXPECT_FALSE(on_start_sync_called_);
94 EXPECT_FALSE(OneClickSigninBubbleView::IsShowing());
95 }
96
97 IN_PROC_BROWSER_TEST_F(OneClickSigninBubbleViewBrowserTest, AdvancedLink) {
98 OneClickSigninBubbleView* view = ShowOneClickSigninBubble();
85 99
86 // Simulate pressing a link in the bubble. This should open a new tab. 100 // Simulate pressing a link in the bubble. This should open a new tab.
87 views::LinkListener* listener = view; 101 views::LinkListener* listener = view;
88 listener->LinkClicked(view->learn_more_link_for_testing(), 0); 102 listener->LinkClicked(view->advanced_link_for_testing(), 0);
89 103
90 // View should no longer be showing and a new tab should be opened. 104 // View should no longer be showing and a new tab should be opened.
91 ui_test_utils::RunAllPendingInMessageLoop(); 105 ui_test_utils::RunMessageLoop();
106 EXPECT_TRUE(on_start_sync_called_);
107 EXPECT_EQ(OneClickSigninSyncStarter::CONFIGURE_SYNC_FIRST, mode_);
92 EXPECT_FALSE(OneClickSigninBubbleView::IsShowing()); 108 EXPECT_FALSE(OneClickSigninBubbleView::IsShowing());
93 EXPECT_EQ(initial_tab_count + 1, browser()->tab_count());
94 } 109 }
110
111 IN_PROC_BROWSER_TEST_F(OneClickSigninBubbleViewBrowserTest, PressEnterKey) {
112 OneClickSigninBubbleView* one_click_view = ShowOneClickSigninBubble();
113
114 // Simulate pressing the Enter key.
115 views::View* view = one_click_view;
116 const ui::Accelerator accelerator(ui::VKEY_RETURN, 0);
117 view->AcceleratorPressed(accelerator);
118
119 // View should no longer be showing. The message loop will exit once the
120 // fade animation of the bubble is done.
121 ui_test_utils::RunMessageLoop();
122 EXPECT_TRUE(on_start_sync_called_);
123 EXPECT_EQ(OneClickSigninSyncStarter::SYNC_WITH_DEFAULT_SETTINGS, mode_);
124 EXPECT_FALSE(OneClickSigninBubbleView::IsShowing());
125 }
126
127 IN_PROC_BROWSER_TEST_F(OneClickSigninBubbleViewBrowserTest, PressEscapeKey) {
128 OneClickSigninBubbleView* one_click_view = ShowOneClickSigninBubble();
129
130 // Simulate pressing the Escape key.
131 views::View* view = one_click_view;
132 const ui::Accelerator accelerator(ui::VKEY_ESCAPE, 0);
133 view->AcceleratorPressed(accelerator);
134
135 // View should no longer be showing. The message loop will exit once the
136 // fade animation of the bubble is done.
137 ui_test_utils::RunMessageLoop();
138 EXPECT_FALSE(on_start_sync_called_);
139 EXPECT_FALSE(OneClickSigninBubbleView::IsShowing());
140 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698