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

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
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/run_loop.h" 7 #include "base/run_loop.h"
6 #include "base/strings/utf_string_conversions.h" 8 #include "base/strings/utf_string_conversions.h"
7 #include "chrome/browser/ui/toolbar/test_toolbar_actions_bar_bubble_delegate.h" 9 #include "chrome/browser/ui/toolbar/test_toolbar_actions_bar_bubble_delegate.h"
8 #include "chrome/browser/ui/views/toolbar/toolbar_actions_bar_bubble_views.h"
9 #include "ui/events/event_utils.h" 10 #include "ui/events/event_utils.h"
10 #include "ui/events/test/event_generator.h" 11 #include "ui/events/test/event_generator.h"
11 #include "ui/views/bubble/bubble_delegate.h"
12 #include "ui/views/controls/button/label_button.h" 12 #include "ui/views/controls/button/label_button.h"
13 #include "ui/views/test/test_widget_observer.h" 13 #include "ui/views/test/test_widget_observer.h"
14 #include "ui/views/test/views_test_base.h" 14 #include "ui/views/test/views_test_base.h"
15 #include "ui/views/widget/widget.h" 15 #include "ui/views/widget/widget.h"
16 16 #include "ui/views/window/dialog_client_view.h"
17 namespace {
18
19 gfx::Point GetCenterInScreenCoordinates(const views::View* view) {
20 gfx::Point center(view->width() / 2, view->height() / 2);
21 views::View::ConvertPointToScreen(view, &center);
22 return center;
23 }
24
25 } // namespace
26 17
27 class ToolbarActionsBarBubbleViewsTest : public views::ViewsTestBase { 18 class ToolbarActionsBarBubbleViewsTest : public views::ViewsTestBase {
28 protected: 19 protected:
29 std::unique_ptr<views::Widget> CreateAnchorWidget() { 20 std::unique_ptr<views::Widget> CreateAnchorWidget() {
30 std::unique_ptr<views::Widget> anchor_widget(new views::Widget()); 21 std::unique_ptr<views::Widget> anchor_widget(new views::Widget());
31 views::Widget::InitParams params = 22 views::Widget::InitParams params =
32 CreateParams(views::Widget::InitParams::TYPE_WINDOW); 23 CreateParams(views::Widget::InitParams::TYPE_WINDOW);
33 params.ownership = views::Widget::InitParams::WIDGET_OWNS_NATIVE_WIDGET; 24 params.ownership = views::Widget::InitParams::WIDGET_OWNS_NATIVE_WIDGET;
34 anchor_widget->Init(params); 25 anchor_widget->Init(params);
35 return anchor_widget; 26 return anchor_widget;
36 } 27 }
37 28
38 base::string16 HeadingString() { return base::ASCIIToUTF16("Heading"); } 29 base::string16 HeadingString() { return base::ASCIIToUTF16("Heading"); }
39 base::string16 BodyString() { return base::ASCIIToUTF16("Body"); } 30 base::string16 BodyString() { return base::ASCIIToUTF16("Body"); }
40 base::string16 ActionString() { return base::ASCIIToUTF16("Action"); } 31 base::string16 ActionString() { return base::ASCIIToUTF16("Action"); }
41 base::string16 DismissString() { return base::ASCIIToUTF16("Dismiss"); } 32 base::string16 DismissString() { return base::ASCIIToUTF16("Dismiss"); }
42 }; 33 };
43 34
44 TEST_F(ToolbarActionsBarBubbleViewsTest, TestBubbleLayoutActionButton) { 35 TEST_F(ToolbarActionsBarBubbleViewsTest, TestBubbleLayoutActionButton) {
45 std::unique_ptr<views::Widget> anchor_widget = CreateAnchorWidget(); 36 std::unique_ptr<views::Widget> anchor_widget = CreateAnchorWidget();
46 TestToolbarActionsBarBubbleDelegate delegate(HeadingString(), BodyString(), 37 TestToolbarActionsBarBubbleDelegate delegate(HeadingString(), BodyString(),
47 ActionString()); 38 ActionString());
48 ToolbarActionsBarBubbleViews* bubble = new ToolbarActionsBarBubbleViews( 39 ToolbarActionsBarBubbleViews* bubble = new ToolbarActionsBarBubbleViews(
49 anchor_widget->GetContentsView(), delegate.GetDelegate()); 40 anchor_widget->GetContentsView(), delegate.GetDelegate());
50 views::BubbleDelegateView::CreateBubble(bubble); 41 views::BubbleDialogDelegateView::CreateBubble(bubble);
51 bubble->Show(); 42 bubble->Show();
52 43
53 EXPECT_TRUE(bubble->heading_label()); 44 EXPECT_TRUE(bubble->GetDialogClientView()->ok_button());
54 EXPECT_EQ(HeadingString(), bubble->heading_label()->text()); 45 EXPECT_FALSE(bubble->GetDialogClientView()->cancel_button());
55 EXPECT_TRUE(bubble->content_label());
56 EXPECT_EQ(BodyString(), bubble->content_label()->text());
57 EXPECT_TRUE(bubble->action_button());
58 EXPECT_EQ(ActionString(), bubble->action_button()->GetText());
59 EXPECT_FALSE(bubble->dismiss_button());
60 46
61 bubble->GetWidget()->Close(); 47 bubble->GetWidget()->Close();
62 base::RunLoop().RunUntilIdle(); 48 base::RunLoop().RunUntilIdle();
63 } 49 }
64 50
65 TEST_F(ToolbarActionsBarBubbleViewsTest, 51 TEST_F(ToolbarActionsBarBubbleViewsTest,
66 TestBubbleLayoutActionAndDismissButton) { 52 TestBubbleLayoutActionAndDismissButton) {
67 std::unique_ptr<views::Widget> anchor_widget = CreateAnchorWidget(); 53 std::unique_ptr<views::Widget> anchor_widget = CreateAnchorWidget();
68 TestToolbarActionsBarBubbleDelegate delegate(HeadingString(), BodyString(), 54 TestToolbarActionsBarBubbleDelegate delegate(HeadingString(), BodyString(),
69 ActionString()); 55 ActionString());
70 delegate.set_dismiss_button_text(DismissString()); 56 delegate.set_dismiss_button_text(DismissString());
71 ToolbarActionsBarBubbleViews* bubble = new ToolbarActionsBarBubbleViews( 57 ToolbarActionsBarBubbleViews* bubble = new ToolbarActionsBarBubbleViews(
72 anchor_widget->GetContentsView(), delegate.GetDelegate()); 58 anchor_widget->GetContentsView(), delegate.GetDelegate());
73 views::BubbleDelegateView::CreateBubble(bubble); 59 views::BubbleDialogDelegateView::CreateBubble(bubble);
74 bubble->Show(); 60 bubble->Show();
75 61
76 EXPECT_TRUE(bubble->heading_label()); 62 EXPECT_TRUE(bubble->GetDialogClientView()->ok_button());
77 EXPECT_EQ(HeadingString(), bubble->heading_label()->text()); 63 EXPECT_TRUE(bubble->GetDialogClientView()->cancel_button());
78 EXPECT_TRUE(bubble->content_label());
79 EXPECT_EQ(BodyString(), bubble->content_label()->text());
80 EXPECT_TRUE(bubble->action_button());
81 EXPECT_EQ(ActionString(), bubble->action_button()->GetText());
82 EXPECT_TRUE(bubble->dismiss_button());
83 EXPECT_EQ(DismissString(), bubble->dismiss_button()->GetText());
84 64
85 bubble->GetWidget()->Close(); 65 bubble->GetWidget()->Close();
86 base::RunLoop().RunUntilIdle(); 66 base::RunLoop().RunUntilIdle();
87 } 67 }
88 68
89 TEST_F(ToolbarActionsBarBubbleViewsTest, TestShowAndCloseBubble) { 69 TEST_F(ToolbarActionsBarBubbleViewsTest, TestShowAndCloseBubble) {
90 std::unique_ptr<views::Widget> anchor_widget = CreateAnchorWidget(); 70 std::unique_ptr<views::Widget> anchor_widget = CreateAnchorWidget();
91 TestToolbarActionsBarBubbleDelegate delegate(HeadingString(), BodyString(), 71 TestToolbarActionsBarBubbleDelegate delegate(HeadingString(), BodyString(),
92 ActionString()); 72 ActionString());
93 delegate.set_dismiss_button_text(DismissString()); 73 delegate.set_dismiss_button_text(DismissString());
94 ToolbarActionsBarBubbleViews* bubble = new ToolbarActionsBarBubbleViews( 74 ToolbarActionsBarBubbleViews* bubble = new ToolbarActionsBarBubbleViews(
95 anchor_widget->GetContentsView(), delegate.GetDelegate()); 75 anchor_widget->GetContentsView(), delegate.GetDelegate());
96 76
97 EXPECT_FALSE(delegate.shown()); 77 EXPECT_FALSE(delegate.shown());
98 EXPECT_FALSE(delegate.close_action()); 78 EXPECT_FALSE(delegate.close_action());
99 views::Widget* bubble_widget = 79 views::Widget* bubble_widget =
100 views::BubbleDelegateView::CreateBubble(bubble); 80 views::BubbleDialogDelegateView::CreateBubble(bubble);
101 views::test::TestWidgetObserver bubble_observer(bubble_widget); 81 views::test::TestWidgetObserver bubble_observer(bubble_widget);
102 bubble->Show(); 82 bubble->Show();
103 EXPECT_TRUE(delegate.shown()); 83 EXPECT_TRUE(delegate.shown());
104 EXPECT_FALSE(delegate.close_action()); 84 EXPECT_FALSE(delegate.close_action());
105 85
106 bubble_widget->Close(); 86 bubble_widget->Close();
107 base::RunLoop().RunUntilIdle(); 87 base::RunLoop().RunUntilIdle();
108 ASSERT_TRUE(delegate.close_action()); 88 ASSERT_TRUE(delegate.close_action());
109 EXPECT_EQ(ToolbarActionsBarBubbleDelegate::CLOSE_DISMISS_USER_ACTION, 89 EXPECT_EQ(ToolbarActionsBarBubbleDelegate::CLOSE_DISMISS_USER_ACTION,
110 *delegate.close_action()); 90 *delegate.close_action());
111 EXPECT_TRUE(bubble_observer.widget_closed()); 91 EXPECT_TRUE(bubble_observer.widget_closed());
112 } 92 }
113 93
114 TEST_F(ToolbarActionsBarBubbleViewsTest, TestClickActionButton) { 94 TEST_F(ToolbarActionsBarBubbleViewsTest, TestClickActionButton) {
115 std::unique_ptr<views::Widget> anchor_widget = CreateAnchorWidget(); 95 std::unique_ptr<views::Widget> anchor_widget = CreateAnchorWidget();
116 TestToolbarActionsBarBubbleDelegate delegate(HeadingString(), BodyString(), 96 TestToolbarActionsBarBubbleDelegate delegate(HeadingString(), BodyString(),
117 ActionString()); 97 ActionString());
118 delegate.set_dismiss_button_text(DismissString()); 98 delegate.set_dismiss_button_text(DismissString());
119 ToolbarActionsBarBubbleViews* bubble = new ToolbarActionsBarBubbleViews( 99 ToolbarActionsBarBubbleViews* bubble = new ToolbarActionsBarBubbleViews(
120 anchor_widget->GetContentsView(), delegate.GetDelegate()); 100 anchor_widget->GetContentsView(), delegate.GetDelegate());
121 views::Widget* bubble_widget = 101 views::Widget* bubble_widget =
122 views::BubbleDelegateView::CreateBubble(bubble); 102 views::BubbleDialogDelegateView::CreateBubble(bubble);
123 views::test::TestWidgetObserver bubble_observer(bubble_widget); 103 views::test::TestWidgetObserver bubble_observer(bubble_widget);
124 bubble->Show(); 104 bubble->Show();
125 105
126 EXPECT_FALSE(delegate.close_action()); 106 EXPECT_FALSE(delegate.close_action());
127 ui::test::EventGenerator generator(GetContext(), 107 ui::test::EventGenerator generator(GetContext(),
128 anchor_widget->GetNativeWindow()); 108 anchor_widget->GetNativeWindow());
129 generator.MoveMouseTo(GetCenterInScreenCoordinates(bubble->action_button())); 109 generator.MoveMouseTo(bubble->GetDialogClientView()
110 ->ok_button()
111 ->GetBoundsInScreen()
112 .CenterPoint());
130 generator.ClickLeftButton(); 113 generator.ClickLeftButton();
131 base::RunLoop().RunUntilIdle(); 114 base::RunLoop().RunUntilIdle();
132 ASSERT_TRUE(delegate.close_action()); 115 ASSERT_TRUE(delegate.close_action());
133 EXPECT_EQ(ToolbarActionsBarBubbleDelegate::CLOSE_EXECUTE, 116 EXPECT_EQ(ToolbarActionsBarBubbleDelegate::CLOSE_EXECUTE,
134 *delegate.close_action()); 117 *delegate.close_action());
135 EXPECT_TRUE(bubble_observer.widget_closed()); 118 EXPECT_TRUE(bubble_observer.widget_closed());
136 } 119 }
137 120
138 TEST_F(ToolbarActionsBarBubbleViewsTest, TestCloseOnDeactivation) { 121 TEST_F(ToolbarActionsBarBubbleViewsTest, TestCloseOnDeactivation) {
139 std::unique_ptr<views::Widget> anchor_widget = CreateAnchorWidget(); 122 std::unique_ptr<views::Widget> anchor_widget = CreateAnchorWidget();
140 TestToolbarActionsBarBubbleDelegate delegate(HeadingString(), BodyString(), 123 TestToolbarActionsBarBubbleDelegate delegate(HeadingString(), BodyString(),
141 ActionString()); 124 ActionString());
142 delegate.set_dismiss_button_text(DismissString()); 125 delegate.set_dismiss_button_text(DismissString());
143 ToolbarActionsBarBubbleViews* bubble = new ToolbarActionsBarBubbleViews( 126 ToolbarActionsBarBubbleViews* bubble = new ToolbarActionsBarBubbleViews(
144 anchor_widget->GetContentsView(), delegate.GetDelegate()); 127 anchor_widget->GetContentsView(), delegate.GetDelegate());
145 views::Widget* bubble_widget = 128 views::Widget* bubble_widget =
146 views::BubbleDelegateView::CreateBubble(bubble); 129 views::BubbleDialogDelegateView::CreateBubble(bubble);
147 views::test::TestWidgetObserver bubble_observer(bubble_widget); 130 views::test::TestWidgetObserver bubble_observer(bubble_widget);
148 bubble->Show(); 131 bubble->Show();
149 132
150 EXPECT_FALSE(delegate.close_action()); 133 EXPECT_FALSE(delegate.close_action());
151 // Close the bubble by activating another widget. The delegate should be 134 // Close the bubble by activating another widget. The delegate should be
152 // told it was dismissed. 135 // told it was dismissed.
153 anchor_widget->Activate(); 136 anchor_widget->Activate();
154 base::RunLoop().RunUntilIdle(); 137 base::RunLoop().RunUntilIdle();
155 ASSERT_TRUE(delegate.close_action()); 138 ASSERT_TRUE(delegate.close_action());
156 EXPECT_EQ(ToolbarActionsBarBubbleDelegate::CLOSE_DISMISS_DEACTIVATION, 139 EXPECT_EQ(ToolbarActionsBarBubbleDelegate::CLOSE_DISMISS_USER_ACTION,
157 *delegate.close_action()); 140 *delegate.close_action());
158 EXPECT_TRUE(bubble_observer.widget_closed()); 141 EXPECT_TRUE(bubble_observer.widget_closed());
159 } 142 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698