OLD | NEW |
---|---|
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 } | |
OLD | NEW |