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

Side by Side Diff: chrome/browser/ui/views/toolbar/toolbar_actions_bar_bubble_views_unittest.cc

Issue 1877143002: Convert ToolbarActionsBarBubbleViews to BubbleDialogDelegate (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: . Created 4 years, 8 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
« no previous file with comments | « chrome/browser/ui/views/toolbar/toolbar_actions_bar_bubble_views.cc ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2016 The Chromium Authors. All rights reserved. 1 // Copyright 2016 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/toolbar/toolbar_actions_bar_bubble_views.h"
6
5 #include "base/memory/scoped_ptr.h" 7 #include "base/memory/scoped_ptr.h"
6 #include "base/run_loop.h" 8 #include "base/run_loop.h"
7 #include "base/strings/utf_string_conversions.h" 9 #include "base/strings/utf_string_conversions.h"
8 #include "chrome/browser/ui/toolbar/test_toolbar_actions_bar_bubble_delegate.h" 10 #include "chrome/browser/ui/toolbar/test_toolbar_actions_bar_bubble_delegate.h"
9 #include "chrome/browser/ui/views/toolbar/toolbar_actions_bar_bubble_views.h"
10 #include "ui/events/event_utils.h" 11 #include "ui/events/event_utils.h"
11 #include "ui/events/test/event_generator.h" 12 #include "ui/events/test/event_generator.h"
12 #include "ui/views/bubble/bubble_delegate.h"
13 #include "ui/views/controls/button/label_button.h" 13 #include "ui/views/controls/button/label_button.h"
14 #include "ui/views/controls/link.h" 14 #include "ui/views/controls/link.h"
15 #include "ui/views/test/test_widget_observer.h" 15 #include "ui/views/test/test_widget_observer.h"
16 #include "ui/views/test/views_test_base.h" 16 #include "ui/views/test/views_test_base.h"
17 #include "ui/views/widget/widget.h" 17 #include "ui/views/widget/widget.h"
18 18 #include "ui/views/window/dialog_client_view.h"
19 namespace {
20
21 gfx::Point GetCenterInScreenCoordinates(const views::View* view) {
22 gfx::Point center(view->width() / 2, view->height() / 2);
23 views::View::ConvertPointToScreen(view, &center);
24 return center;
25 }
26
27 } // namespace
28 19
29 class ToolbarActionsBarBubbleViewsTest : public views::ViewsTestBase { 20 class ToolbarActionsBarBubbleViewsTest : public views::ViewsTestBase {
30 protected: 21 protected:
31 ToolbarActionsBarBubbleViewsTest() {} 22 ToolbarActionsBarBubbleViewsTest() {}
32 ~ToolbarActionsBarBubbleViewsTest() override {} 23 ~ToolbarActionsBarBubbleViewsTest() override {}
33 24
34 void TearDown() override { 25 void TearDown() override {
35 anchor_widget_.reset(); 26 anchor_widget_.reset();
36 views::ViewsTestBase::TearDown(); 27 views::ViewsTestBase::TearDown();
37 } 28 }
38 29
39 std::unique_ptr<views::Widget> CreateAnchorWidget() { 30 std::unique_ptr<views::Widget> CreateAnchorWidget() {
40 std::unique_ptr<views::Widget> anchor_widget(new views::Widget()); 31 std::unique_ptr<views::Widget> anchor_widget(new views::Widget());
41 views::Widget::InitParams params = 32 views::Widget::InitParams params =
42 CreateParams(views::Widget::InitParams::TYPE_WINDOW); 33 CreateParams(views::Widget::InitParams::TYPE_WINDOW);
43 params.ownership = views::Widget::InitParams::WIDGET_OWNS_NATIVE_WIDGET; 34 params.ownership = views::Widget::InitParams::WIDGET_OWNS_NATIVE_WIDGET;
44 anchor_widget->Init(params); 35 anchor_widget->Init(params);
45 return anchor_widget; 36 return anchor_widget;
46 } 37 }
47 38
48 void ShowBubble(TestToolbarActionsBarBubbleDelegate* delegate) { 39 void ShowBubble(TestToolbarActionsBarBubbleDelegate* delegate) {
49 ASSERT_TRUE(delegate); 40 ASSERT_TRUE(delegate);
50 ASSERT_FALSE(bubble_widget_); 41 ASSERT_FALSE(bubble_widget_);
51 ASSERT_FALSE(bubble_); 42 ASSERT_FALSE(bubble_);
52 anchor_widget_ = CreateAnchorWidget(); 43 anchor_widget_ = CreateAnchorWidget();
53 bubble_ = new ToolbarActionsBarBubbleViews( 44 bubble_ = new ToolbarActionsBarBubbleViews(
54 anchor_widget_->GetContentsView(), delegate->GetDelegate()); 45 anchor_widget_->GetContentsView(), delegate->GetDelegate());
55 bubble_widget_ = 46 bubble_widget_ = views::BubbleDialogDelegateView::CreateBubble(bubble_);
56 views::BubbleDelegateView::CreateBubble(bubble_);
57 bubble_->Show(); 47 bubble_->Show();
58 } 48 }
59 49
60 void CloseBubble() { 50 void CloseBubble() {
61 ASSERT_TRUE(bubble_); 51 ASSERT_TRUE(bubble_);
62 bubble_->GetWidget()->Close(); 52 bubble_->GetWidget()->Close();
63 base::RunLoop().RunUntilIdle(); 53 base::RunLoop().RunUntilIdle();
64 bubble_ = nullptr; 54 bubble_ = nullptr;
65 bubble_widget_ = nullptr; 55 bubble_widget_ = nullptr;
66 } 56 }
67 57
68 void ClickView(const views::View* view) { 58 void ClickView(const views::View* view) {
69 ASSERT_TRUE(view); 59 ASSERT_TRUE(view);
70 ui::test::EventGenerator generator(GetContext(), 60 ui::test::EventGenerator generator(GetContext(),
71 anchor_widget_->GetNativeWindow()); 61 anchor_widget_->GetNativeWindow());
72 generator.MoveMouseTo(GetCenterInScreenCoordinates(view)); 62 generator.MoveMouseTo(view->GetBoundsInScreen().CenterPoint());
73 generator.ClickLeftButton(); 63 generator.ClickLeftButton();
74 base::RunLoop().RunUntilIdle(); 64 base::RunLoop().RunUntilIdle();
75 } 65 }
76 66
77 base::string16 HeadingString() { return base::ASCIIToUTF16("Heading"); } 67 base::string16 HeadingString() { return base::ASCIIToUTF16("Heading"); }
78 base::string16 BodyString() { return base::ASCIIToUTF16("Body"); } 68 base::string16 BodyString() { return base::ASCIIToUTF16("Body"); }
79 base::string16 ActionString() { return base::ASCIIToUTF16("Action"); } 69 base::string16 ActionString() { return base::ASCIIToUTF16("Action"); }
80 base::string16 DismissString() { return base::ASCIIToUTF16("Dismiss"); } 70 base::string16 DismissString() { return base::ASCIIToUTF16("Dismiss"); }
81 base::string16 LearnMoreString() { return base::ASCIIToUTF16("Learn"); } 71 base::string16 LearnMoreString() { return base::ASCIIToUTF16("Learn"); }
82 base::string16 ItemListString() { 72 base::string16 ItemListString() {
(...skipping 10 matching lines...) Expand all
93 ToolbarActionsBarBubbleViews* bubble_ = nullptr; 83 ToolbarActionsBarBubbleViews* bubble_ = nullptr;
94 84
95 DISALLOW_COPY_AND_ASSIGN(ToolbarActionsBarBubbleViewsTest); 85 DISALLOW_COPY_AND_ASSIGN(ToolbarActionsBarBubbleViewsTest);
96 }; 86 };
97 87
98 TEST_F(ToolbarActionsBarBubbleViewsTest, TestBubbleLayoutActionButton) { 88 TEST_F(ToolbarActionsBarBubbleViewsTest, TestBubbleLayoutActionButton) {
99 TestToolbarActionsBarBubbleDelegate delegate(HeadingString(), BodyString(), 89 TestToolbarActionsBarBubbleDelegate delegate(HeadingString(), BodyString(),
100 ActionString()); 90 ActionString());
101 ShowBubble(&delegate); 91 ShowBubble(&delegate);
102 92
103 EXPECT_TRUE(bubble()->heading_label()); 93 EXPECT_TRUE(bubble()->GetDialogClientView()->ok_button());
104 EXPECT_EQ(HeadingString(), bubble()->heading_label()->text()); 94 EXPECT_EQ(ActionString(),
105 EXPECT_TRUE(bubble()->content_label()); 95 bubble()->GetDialogClientView()->ok_button()->GetText());
106 EXPECT_EQ(BodyString(), bubble()->content_label()->text()); 96 EXPECT_FALSE(bubble()->GetDialogClientView()->cancel_button());
107 EXPECT_TRUE(bubble()->action_button());
108 EXPECT_EQ(ActionString(), bubble()->action_button()->GetText());
109 EXPECT_FALSE(bubble()->dismiss_button());
110 EXPECT_FALSE(bubble()->learn_more_button());
111 EXPECT_FALSE(bubble()->item_list());
112 97
113 CloseBubble(); 98 CloseBubble();
114 } 99 }
115 100
116 TEST_F(ToolbarActionsBarBubbleViewsTest, 101 TEST_F(ToolbarActionsBarBubbleViewsTest,
117 TestBubbleLayoutActionAndDismissButton) { 102 TestBubbleLayoutActionAndDismissButton) {
118 TestToolbarActionsBarBubbleDelegate delegate(HeadingString(), BodyString(), 103 TestToolbarActionsBarBubbleDelegate delegate(HeadingString(), BodyString(),
119 ActionString()); 104 ActionString());
120 delegate.set_dismiss_button_text(DismissString()); 105 delegate.set_dismiss_button_text(DismissString());
106
121 ShowBubble(&delegate); 107 ShowBubble(&delegate);
122 108
123 EXPECT_TRUE(bubble()->heading_label()); 109 EXPECT_TRUE(bubble()->GetDialogClientView()->ok_button());
124 EXPECT_EQ(HeadingString(), bubble()->heading_label()->text()); 110 EXPECT_EQ(ActionString(),
125 EXPECT_TRUE(bubble()->content_label()); 111 bubble()->GetDialogClientView()->ok_button()->GetText());
126 EXPECT_EQ(BodyString(), bubble()->content_label()->text()); 112 EXPECT_TRUE(bubble()->GetDialogClientView()->cancel_button());
127 EXPECT_TRUE(bubble()->action_button()); 113 EXPECT_EQ(DismissString(),
128 EXPECT_EQ(ActionString(), bubble()->action_button()->GetText()); 114 bubble()->GetDialogClientView()->cancel_button()->GetText());
129 EXPECT_TRUE(bubble()->dismiss_button()); 115
130 EXPECT_EQ(DismissString(), bubble()->dismiss_button()->GetText());
131 EXPECT_FALSE(bubble()->learn_more_button()); 116 EXPECT_FALSE(bubble()->learn_more_button());
132 EXPECT_FALSE(bubble()->item_list()); 117 EXPECT_FALSE(bubble()->item_list());
133 118
134 CloseBubble(); 119 CloseBubble();
135 } 120 }
136 121
137 TEST_F(ToolbarActionsBarBubbleViewsTest, 122 TEST_F(ToolbarActionsBarBubbleViewsTest,
138 TestBubbleLayoutActionDismissAndLearnMoreButton) { 123 TestBubbleLayoutActionDismissAndLearnMoreButton) {
139 TestToolbarActionsBarBubbleDelegate delegate(HeadingString(), BodyString(), 124 TestToolbarActionsBarBubbleDelegate delegate(HeadingString(), BodyString(),
140 ActionString()); 125 ActionString());
141 delegate.set_dismiss_button_text(DismissString()); 126 delegate.set_dismiss_button_text(DismissString());
142 delegate.set_learn_more_button_text(LearnMoreString()); 127 delegate.set_learn_more_button_text(LearnMoreString());
143 ShowBubble(&delegate); 128 ShowBubble(&delegate);
144 129
145 EXPECT_TRUE(bubble()->heading_label()); 130 EXPECT_TRUE(bubble()->GetDialogClientView()->ok_button());
146 EXPECT_EQ(HeadingString(), bubble()->heading_label()->text()); 131 EXPECT_EQ(ActionString(),
147 EXPECT_TRUE(bubble()->content_label()); 132 bubble()->GetDialogClientView()->ok_button()->GetText());
148 EXPECT_EQ(BodyString(), bubble()->content_label()->text()); 133 EXPECT_TRUE(bubble()->GetDialogClientView()->cancel_button());
149 EXPECT_TRUE(bubble()->action_button()); 134 EXPECT_EQ(DismissString(),
150 EXPECT_EQ(ActionString(), bubble()->action_button()->GetText()); 135 bubble()->GetDialogClientView()->cancel_button()->GetText());
151 EXPECT_TRUE(bubble()->dismiss_button());
152 EXPECT_EQ(DismissString(), bubble()->dismiss_button()->GetText());
153 EXPECT_TRUE(bubble()->learn_more_button()); 136 EXPECT_TRUE(bubble()->learn_more_button());
154 EXPECT_EQ(LearnMoreString(), bubble()->learn_more_button()->text()); 137 EXPECT_EQ(LearnMoreString(), bubble()->learn_more_button()->text());
155 EXPECT_FALSE(bubble()->item_list()); 138 EXPECT_FALSE(bubble()->item_list());
156 139
157 CloseBubble(); 140 CloseBubble();
158 } 141 }
159 142
160 TEST_F(ToolbarActionsBarBubbleViewsTest, TestBubbleLayoutListView) { 143 TEST_F(ToolbarActionsBarBubbleViewsTest, TestBubbleLayoutListView) {
161 TestToolbarActionsBarBubbleDelegate delegate(HeadingString(), BodyString(), 144 TestToolbarActionsBarBubbleDelegate delegate(HeadingString(), BodyString(),
162 ActionString()); 145 ActionString());
163 delegate.set_item_list_text(ItemListString()); 146 delegate.set_item_list_text(ItemListString());
164 ShowBubble(&delegate); 147 ShowBubble(&delegate);
165 148
166 EXPECT_TRUE(bubble()->heading_label()); 149 EXPECT_TRUE(bubble()->GetDialogClientView()->ok_button());
167 EXPECT_EQ(HeadingString(), bubble()->heading_label()->text()); 150 EXPECT_EQ(ActionString(),
168 EXPECT_TRUE(bubble()->content_label()); 151 bubble()->GetDialogClientView()->ok_button()->GetText());
169 EXPECT_EQ(BodyString(), bubble()->content_label()->text()); 152 EXPECT_FALSE(bubble()->GetDialogClientView()->cancel_button());
170 EXPECT_TRUE(bubble()->action_button());
171 EXPECT_EQ(ActionString(), bubble()->action_button()->GetText());
172 EXPECT_FALSE(bubble()->dismiss_button());
173 EXPECT_FALSE(bubble()->learn_more_button()); 153 EXPECT_FALSE(bubble()->learn_more_button());
174 EXPECT_TRUE(bubble()->item_list()); 154 EXPECT_TRUE(bubble()->item_list());
175 EXPECT_EQ(ItemListString(), bubble()->item_list()->text()); 155 EXPECT_EQ(ItemListString(), bubble()->item_list()->text());
176 156
177 CloseBubble(); 157 CloseBubble();
178 } 158 }
179 159
180 TEST_F(ToolbarActionsBarBubbleViewsTest, TestShowAndCloseBubble) { 160 TEST_F(ToolbarActionsBarBubbleViewsTest, TestShowAndCloseBubble) {
181 std::unique_ptr<views::Widget> anchor_widget = CreateAnchorWidget(); 161 std::unique_ptr<views::Widget> anchor_widget = CreateAnchorWidget();
182 TestToolbarActionsBarBubbleDelegate delegate(HeadingString(), BodyString(), 162 TestToolbarActionsBarBubbleDelegate delegate(HeadingString(), BodyString(),
183 ActionString()); 163 ActionString());
184 delegate.set_dismiss_button_text(DismissString()); 164 delegate.set_dismiss_button_text(DismissString());
185 ToolbarActionsBarBubbleViews* bubble = new ToolbarActionsBarBubbleViews( 165 ToolbarActionsBarBubbleViews* bubble = new ToolbarActionsBarBubbleViews(
186 anchor_widget->GetContentsView(), delegate.GetDelegate()); 166 anchor_widget->GetContentsView(), delegate.GetDelegate());
187 167
188 EXPECT_FALSE(delegate.shown()); 168 EXPECT_FALSE(delegate.shown());
189 EXPECT_FALSE(delegate.close_action()); 169 EXPECT_FALSE(delegate.close_action());
190 views::Widget* bubble_widget = 170 views::Widget* bubble_widget =
191 views::BubbleDelegateView::CreateBubble(bubble); 171 views::BubbleDialogDelegateView::CreateBubble(bubble);
192 views::test::TestWidgetObserver bubble_observer(bubble_widget); 172 views::test::TestWidgetObserver bubble_observer(bubble_widget);
193 bubble->Show(); 173 bubble->Show();
194 EXPECT_TRUE(delegate.shown()); 174 EXPECT_TRUE(delegate.shown());
195 EXPECT_FALSE(delegate.close_action()); 175 EXPECT_FALSE(delegate.close_action());
196 176
197 bubble_widget->Close(); 177 bubble->GetDialogClientView()->CancelWindow();
198 base::RunLoop().RunUntilIdle(); 178 base::RunLoop().RunUntilIdle();
199 ASSERT_TRUE(delegate.close_action()); 179 ASSERT_TRUE(delegate.close_action());
200 EXPECT_EQ(ToolbarActionsBarBubbleDelegate::CLOSE_DISMISS_USER_ACTION, 180 EXPECT_EQ(ToolbarActionsBarBubbleDelegate::CLOSE_DISMISS_USER_ACTION,
201 *delegate.close_action()); 181 *delegate.close_action());
202 EXPECT_TRUE(bubble_observer.widget_closed()); 182 EXPECT_TRUE(bubble_observer.widget_closed());
203 } 183 }
204 184
205 TEST_F(ToolbarActionsBarBubbleViewsTest, TestClickActionButton) { 185 TEST_F(ToolbarActionsBarBubbleViewsTest, TestClickActionButton) {
206 TestToolbarActionsBarBubbleDelegate delegate(HeadingString(), BodyString(), 186 TestToolbarActionsBarBubbleDelegate delegate(HeadingString(), BodyString(),
207 ActionString()); 187 ActionString());
208 delegate.set_dismiss_button_text(DismissString()); 188 delegate.set_dismiss_button_text(DismissString());
209 delegate.set_learn_more_button_text(LearnMoreString()); 189 delegate.set_learn_more_button_text(LearnMoreString());
210 ShowBubble(&delegate); 190 ShowBubble(&delegate);
211 views::test::TestWidgetObserver bubble_observer(bubble_widget()); 191 views::test::TestWidgetObserver bubble_observer(bubble_widget());
212 192
213 EXPECT_FALSE(delegate.close_action()); 193 EXPECT_FALSE(delegate.close_action());
214 ClickView(bubble()->action_button()); 194 ClickView(bubble()->GetDialogClientView()->ok_button());
215 ASSERT_TRUE(delegate.close_action()); 195 ASSERT_TRUE(delegate.close_action());
216 EXPECT_EQ(ToolbarActionsBarBubbleDelegate::CLOSE_EXECUTE, 196 EXPECT_EQ(ToolbarActionsBarBubbleDelegate::CLOSE_EXECUTE,
217 *delegate.close_action()); 197 *delegate.close_action());
218 EXPECT_TRUE(bubble_observer.widget_closed()); 198 EXPECT_TRUE(bubble_observer.widget_closed());
219 } 199 }
220 200
221 TEST_F(ToolbarActionsBarBubbleViewsTest, TestClickDismissButton) { 201 TEST_F(ToolbarActionsBarBubbleViewsTest, TestClickDismissButton) {
222 TestToolbarActionsBarBubbleDelegate delegate(HeadingString(), BodyString(), 202 TestToolbarActionsBarBubbleDelegate delegate(HeadingString(), BodyString(),
223 ActionString()); 203 ActionString());
224 delegate.set_dismiss_button_text(DismissString()); 204 delegate.set_dismiss_button_text(DismissString());
225 delegate.set_learn_more_button_text(LearnMoreString()); 205 delegate.set_learn_more_button_text(LearnMoreString());
226 ShowBubble(&delegate); 206 ShowBubble(&delegate);
227 views::test::TestWidgetObserver bubble_observer(bubble_widget()); 207 views::test::TestWidgetObserver bubble_observer(bubble_widget());
228 208
229 EXPECT_FALSE(delegate.close_action()); 209 EXPECT_FALSE(delegate.close_action());
230 ClickView(bubble()->dismiss_button()); 210 ClickView(bubble()->GetDialogClientView()->cancel_button());
231 ASSERT_TRUE(delegate.close_action()); 211 ASSERT_TRUE(delegate.close_action());
232 EXPECT_EQ(ToolbarActionsBarBubbleDelegate::CLOSE_DISMISS_USER_ACTION, 212 EXPECT_EQ(ToolbarActionsBarBubbleDelegate::CLOSE_DISMISS_USER_ACTION,
233 *delegate.close_action()); 213 *delegate.close_action());
234 } 214 }
235 215
236 TEST_F(ToolbarActionsBarBubbleViewsTest, TestClickLearnMoreLink) { 216 TEST_F(ToolbarActionsBarBubbleViewsTest, TestClickLearnMoreLink) {
237 TestToolbarActionsBarBubbleDelegate delegate(HeadingString(), BodyString(), 217 TestToolbarActionsBarBubbleDelegate delegate(HeadingString(), BodyString(),
238 ActionString()); 218 ActionString());
239 delegate.set_dismiss_button_text(DismissString()); 219 delegate.set_dismiss_button_text(DismissString());
240 delegate.set_learn_more_button_text(LearnMoreString()); 220 delegate.set_learn_more_button_text(LearnMoreString());
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after
272 ShowBubble(&delegate); 252 ShowBubble(&delegate);
273 views::test::TestWidgetObserver bubble_observer(bubble_widget()); 253 views::test::TestWidgetObserver bubble_observer(bubble_widget());
274 254
275 EXPECT_FALSE(delegate.close_action()); 255 EXPECT_FALSE(delegate.close_action());
276 // Activate another widget. The bubble shouldn't close. 256 // Activate another widget. The bubble shouldn't close.
277 anchor_widget()->Activate(); 257 anchor_widget()->Activate();
278 base::RunLoop().RunUntilIdle(); 258 base::RunLoop().RunUntilIdle();
279 EXPECT_FALSE(delegate.close_action()); 259 EXPECT_FALSE(delegate.close_action());
280 CloseBubble(); 260 CloseBubble();
281 } 261 }
OLDNEW
« no previous file with comments | « chrome/browser/ui/views/toolbar/toolbar_actions_bar_bubble_views.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698