OLD | NEW |
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 "ui/views/bubble/bubble_dialog_delegate.h" | 5 #include "ui/views/bubble/bubble_dialog_delegate.h" |
6 | 6 |
7 #include <stddef.h> | 7 #include <stddef.h> |
8 | 8 |
9 #include "base/macros.h" | 9 #include "base/macros.h" |
10 #include "ui/base/hit_test.h" | 10 #include "ui/base/hit_test.h" |
(...skipping 46 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
57 return widget; | 57 return widget; |
58 } | 58 } |
59 | 59 |
60 private: | 60 private: |
61 DISALLOW_COPY_AND_ASSIGN(BubbleDialogDelegateTest); | 61 DISALLOW_COPY_AND_ASSIGN(BubbleDialogDelegateTest); |
62 }; | 62 }; |
63 | 63 |
64 } // namespace | 64 } // namespace |
65 | 65 |
66 TEST_F(BubbleDialogDelegateTest, CreateDelegate) { | 66 TEST_F(BubbleDialogDelegateTest, CreateDelegate) { |
67 scoped_ptr<Widget> anchor_widget(CreateTestWidget()); | 67 std::unique_ptr<Widget> anchor_widget(CreateTestWidget()); |
68 TestBubbleDialogDelegateView* bubble_delegate = | 68 TestBubbleDialogDelegateView* bubble_delegate = |
69 new TestBubbleDialogDelegateView(anchor_widget->GetContentsView()); | 69 new TestBubbleDialogDelegateView(anchor_widget->GetContentsView()); |
70 bubble_delegate->set_color(SK_ColorGREEN); | 70 bubble_delegate->set_color(SK_ColorGREEN); |
71 Widget* bubble_widget = | 71 Widget* bubble_widget = |
72 BubbleDialogDelegateView::CreateBubble(bubble_delegate); | 72 BubbleDialogDelegateView::CreateBubble(bubble_delegate); |
73 EXPECT_EQ(bubble_delegate, bubble_widget->widget_delegate()); | 73 EXPECT_EQ(bubble_delegate, bubble_widget->widget_delegate()); |
74 EXPECT_EQ(bubble_widget, bubble_delegate->GetWidget()); | 74 EXPECT_EQ(bubble_widget, bubble_delegate->GetWidget()); |
75 test::TestWidgetObserver bubble_observer(bubble_widget); | 75 test::TestWidgetObserver bubble_observer(bubble_widget); |
76 bubble_widget->Show(); | 76 bubble_widget->Show(); |
77 | 77 |
78 BubbleBorder* border = bubble_delegate->GetBubbleFrameView()->bubble_border(); | 78 BubbleBorder* border = bubble_delegate->GetBubbleFrameView()->bubble_border(); |
79 EXPECT_EQ(bubble_delegate->arrow(), border->arrow()); | 79 EXPECT_EQ(bubble_delegate->arrow(), border->arrow()); |
80 EXPECT_EQ(bubble_delegate->color(), border->background_color()); | 80 EXPECT_EQ(bubble_delegate->color(), border->background_color()); |
81 | 81 |
82 EXPECT_FALSE(bubble_observer.widget_closed()); | 82 EXPECT_FALSE(bubble_observer.widget_closed()); |
83 bubble_widget->CloseNow(); | 83 bubble_widget->CloseNow(); |
84 EXPECT_TRUE(bubble_observer.widget_closed()); | 84 EXPECT_TRUE(bubble_observer.widget_closed()); |
85 } | 85 } |
86 | 86 |
87 TEST_F(BubbleDialogDelegateTest, CloseAnchorWidget) { | 87 TEST_F(BubbleDialogDelegateTest, CloseAnchorWidget) { |
88 scoped_ptr<Widget> anchor_widget(CreateTestWidget()); | 88 std::unique_ptr<Widget> anchor_widget(CreateTestWidget()); |
89 BubbleDialogDelegateView* bubble_delegate = | 89 BubbleDialogDelegateView* bubble_delegate = |
90 new TestBubbleDialogDelegateView(anchor_widget->GetContentsView()); | 90 new TestBubbleDialogDelegateView(anchor_widget->GetContentsView()); |
91 // Preventing close on deactivate should not prevent closing with the anchor. | 91 // Preventing close on deactivate should not prevent closing with the anchor. |
92 bubble_delegate->set_close_on_deactivate(false); | 92 bubble_delegate->set_close_on_deactivate(false); |
93 Widget* bubble_widget = | 93 Widget* bubble_widget = |
94 BubbleDialogDelegateView::CreateBubble(bubble_delegate); | 94 BubbleDialogDelegateView::CreateBubble(bubble_delegate); |
95 EXPECT_EQ(bubble_delegate, bubble_widget->widget_delegate()); | 95 EXPECT_EQ(bubble_delegate, bubble_widget->widget_delegate()); |
96 EXPECT_EQ(bubble_widget, bubble_delegate->GetWidget()); | 96 EXPECT_EQ(bubble_widget, bubble_delegate->GetWidget()); |
97 EXPECT_EQ(anchor_widget.get(), bubble_delegate->anchor_widget()); | 97 EXPECT_EQ(anchor_widget.get(), bubble_delegate->anchor_widget()); |
98 test::TestWidgetObserver bubble_observer(bubble_widget); | 98 test::TestWidgetObserver bubble_observer(bubble_widget); |
99 EXPECT_FALSE(bubble_observer.widget_closed()); | 99 EXPECT_FALSE(bubble_observer.widget_closed()); |
100 | 100 |
101 bubble_widget->Show(); | 101 bubble_widget->Show(); |
102 EXPECT_EQ(anchor_widget.get(), bubble_delegate->anchor_widget()); | 102 EXPECT_EQ(anchor_widget.get(), bubble_delegate->anchor_widget()); |
103 EXPECT_FALSE(bubble_observer.widget_closed()); | 103 EXPECT_FALSE(bubble_observer.widget_closed()); |
104 | 104 |
105 // TODO(msw): Remove activation hack to prevent bookkeeping errors in: | 105 // TODO(msw): Remove activation hack to prevent bookkeeping errors in: |
106 // aura::test::TestActivationClient::OnWindowDestroyed(). | 106 // aura::test::TestActivationClient::OnWindowDestroyed(). |
107 scoped_ptr<Widget> smoke_and_mirrors_widget(CreateTestWidget()); | 107 std::unique_ptr<Widget> smoke_and_mirrors_widget(CreateTestWidget()); |
108 EXPECT_FALSE(bubble_observer.widget_closed()); | 108 EXPECT_FALSE(bubble_observer.widget_closed()); |
109 | 109 |
110 // Ensure that closing the anchor widget also closes the bubble itself. | 110 // Ensure that closing the anchor widget also closes the bubble itself. |
111 anchor_widget->CloseNow(); | 111 anchor_widget->CloseNow(); |
112 EXPECT_TRUE(bubble_observer.widget_closed()); | 112 EXPECT_TRUE(bubble_observer.widget_closed()); |
113 } | 113 } |
114 | 114 |
115 // This test checks that the bubble delegate is capable to handle an early | 115 // This test checks that the bubble delegate is capable to handle an early |
116 // destruction of the used anchor view. (Animations and delayed closure of the | 116 // destruction of the used anchor view. (Animations and delayed closure of the |
117 // bubble will call upon the anchor view to get its location). | 117 // bubble will call upon the anchor view to get its location). |
118 TEST_F(BubbleDialogDelegateTest, CloseAnchorViewTest) { | 118 TEST_F(BubbleDialogDelegateTest, CloseAnchorViewTest) { |
119 // Create an anchor widget and add a view to be used as an anchor view. | 119 // Create an anchor widget and add a view to be used as an anchor view. |
120 scoped_ptr<Widget> anchor_widget(CreateTestWidget()); | 120 std::unique_ptr<Widget> anchor_widget(CreateTestWidget()); |
121 scoped_ptr<View> anchor_view(new View()); | 121 std::unique_ptr<View> anchor_view(new View()); |
122 anchor_widget->GetContentsView()->AddChildView(anchor_view.get()); | 122 anchor_widget->GetContentsView()->AddChildView(anchor_view.get()); |
123 TestBubbleDialogDelegateView* bubble_delegate = | 123 TestBubbleDialogDelegateView* bubble_delegate = |
124 new TestBubbleDialogDelegateView(anchor_view.get()); | 124 new TestBubbleDialogDelegateView(anchor_view.get()); |
125 // Prevent flakes by avoiding closing on activation changes. | 125 // Prevent flakes by avoiding closing on activation changes. |
126 bubble_delegate->set_close_on_deactivate(false); | 126 bubble_delegate->set_close_on_deactivate(false); |
127 Widget* bubble_widget = | 127 Widget* bubble_widget = |
128 BubbleDialogDelegateView::CreateBubble(bubble_delegate); | 128 BubbleDialogDelegateView::CreateBubble(bubble_delegate); |
129 | 129 |
130 // Check that the anchor view is correct and set up an anchor view rect. | 130 // Check that the anchor view is correct and set up an anchor view rect. |
131 // Make sure that this rect will get ignored (as long as the anchor view is | 131 // Make sure that this rect will get ignored (as long as the anchor view is |
(...skipping 12 matching lines...) Expand all Loading... |
144 // is still kept, so that the bubble does not jump when the view gets deleted. | 144 // is still kept, so that the bubble does not jump when the view gets deleted. |
145 anchor_widget->GetContentsView()->RemoveChildView(anchor_view.get()); | 145 anchor_widget->GetContentsView()->RemoveChildView(anchor_view.get()); |
146 anchor_view.reset(); | 146 anchor_view.reset(); |
147 EXPECT_EQ(NULL, bubble_delegate->GetAnchorView()); | 147 EXPECT_EQ(NULL, bubble_delegate->GetAnchorView()); |
148 EXPECT_EQ(view_rect.ToString(), bubble_delegate->GetAnchorRect().ToString()); | 148 EXPECT_EQ(view_rect.ToString(), bubble_delegate->GetAnchorRect().ToString()); |
149 } | 149 } |
150 | 150 |
151 // Testing that a move of the anchor view will lead to new bubble locations. | 151 // Testing that a move of the anchor view will lead to new bubble locations. |
152 TEST_F(BubbleDialogDelegateTest, TestAnchorRectMovesWithViewTest) { | 152 TEST_F(BubbleDialogDelegateTest, TestAnchorRectMovesWithViewTest) { |
153 // Create an anchor widget and add a view to be used as anchor view. | 153 // Create an anchor widget and add a view to be used as anchor view. |
154 scoped_ptr<Widget> anchor_widget(CreateTestWidget()); | 154 std::unique_ptr<Widget> anchor_widget(CreateTestWidget()); |
155 TestBubbleDialogDelegateView* bubble_delegate = | 155 TestBubbleDialogDelegateView* bubble_delegate = |
156 new TestBubbleDialogDelegateView(anchor_widget->GetContentsView()); | 156 new TestBubbleDialogDelegateView(anchor_widget->GetContentsView()); |
157 BubbleDialogDelegateView::CreateBubble(bubble_delegate); | 157 BubbleDialogDelegateView::CreateBubble(bubble_delegate); |
158 | 158 |
159 anchor_widget->GetContentsView()->SetBounds(10, 10, 100, 100); | 159 anchor_widget->GetContentsView()->SetBounds(10, 10, 100, 100); |
160 const gfx::Rect view_rect = bubble_delegate->GetAnchorRect(); | 160 const gfx::Rect view_rect = bubble_delegate->GetAnchorRect(); |
161 | 161 |
162 anchor_widget->GetContentsView()->SetBounds(20, 10, 100, 100); | 162 anchor_widget->GetContentsView()->SetBounds(20, 10, 100, 100); |
163 const gfx::Rect view_rect_2 = bubble_delegate->GetAnchorRect(); | 163 const gfx::Rect view_rect_2 = bubble_delegate->GetAnchorRect(); |
164 EXPECT_NE(view_rect.ToString(), view_rect_2.ToString()); | 164 EXPECT_NE(view_rect.ToString(), view_rect_2.ToString()); |
165 } | 165 } |
166 | 166 |
167 TEST_F(BubbleDialogDelegateTest, ResetAnchorWidget) { | 167 TEST_F(BubbleDialogDelegateTest, ResetAnchorWidget) { |
168 scoped_ptr<Widget> anchor_widget(CreateTestWidget()); | 168 std::unique_ptr<Widget> anchor_widget(CreateTestWidget()); |
169 BubbleDialogDelegateView* bubble_delegate = | 169 BubbleDialogDelegateView* bubble_delegate = |
170 new TestBubbleDialogDelegateView(anchor_widget->GetContentsView()); | 170 new TestBubbleDialogDelegateView(anchor_widget->GetContentsView()); |
171 | 171 |
172 // Make sure the bubble widget is parented to a widget other than the anchor | 172 // Make sure the bubble widget is parented to a widget other than the anchor |
173 // widget so that closing the anchor widget does not close the bubble widget. | 173 // widget so that closing the anchor widget does not close the bubble widget. |
174 scoped_ptr<Widget> parent_widget(CreateTestWidget()); | 174 std::unique_ptr<Widget> parent_widget(CreateTestWidget()); |
175 bubble_delegate->set_parent_window(parent_widget->GetNativeView()); | 175 bubble_delegate->set_parent_window(parent_widget->GetNativeView()); |
176 // Preventing close on deactivate should not prevent closing with the parent. | 176 // Preventing close on deactivate should not prevent closing with the parent. |
177 bubble_delegate->set_close_on_deactivate(false); | 177 bubble_delegate->set_close_on_deactivate(false); |
178 Widget* bubble_widget = | 178 Widget* bubble_widget = |
179 BubbleDialogDelegateView::CreateBubble(bubble_delegate); | 179 BubbleDialogDelegateView::CreateBubble(bubble_delegate); |
180 EXPECT_EQ(bubble_delegate, bubble_widget->widget_delegate()); | 180 EXPECT_EQ(bubble_delegate, bubble_widget->widget_delegate()); |
181 EXPECT_EQ(bubble_widget, bubble_delegate->GetWidget()); | 181 EXPECT_EQ(bubble_widget, bubble_delegate->GetWidget()); |
182 EXPECT_EQ(anchor_widget.get(), bubble_delegate->anchor_widget()); | 182 EXPECT_EQ(anchor_widget.get(), bubble_delegate->anchor_widget()); |
183 test::TestWidgetObserver bubble_observer(bubble_widget); | 183 test::TestWidgetObserver bubble_observer(bubble_widget); |
184 EXPECT_FALSE(bubble_observer.widget_closed()); | 184 EXPECT_FALSE(bubble_observer.widget_closed()); |
185 | 185 |
186 // Showing and hiding the bubble widget should have no effect on its anchor. | 186 // Showing and hiding the bubble widget should have no effect on its anchor. |
187 bubble_widget->Show(); | 187 bubble_widget->Show(); |
188 EXPECT_EQ(anchor_widget.get(), bubble_delegate->anchor_widget()); | 188 EXPECT_EQ(anchor_widget.get(), bubble_delegate->anchor_widget()); |
189 bubble_widget->Hide(); | 189 bubble_widget->Hide(); |
190 EXPECT_EQ(anchor_widget.get(), bubble_delegate->anchor_widget()); | 190 EXPECT_EQ(anchor_widget.get(), bubble_delegate->anchor_widget()); |
191 | 191 |
192 // Ensure that closing the anchor widget clears the bubble's reference to that | 192 // Ensure that closing the anchor widget clears the bubble's reference to that |
193 // anchor widget, but the bubble itself does not close. | 193 // anchor widget, but the bubble itself does not close. |
194 anchor_widget->CloseNow(); | 194 anchor_widget->CloseNow(); |
195 EXPECT_NE(anchor_widget.get(), bubble_delegate->anchor_widget()); | 195 EXPECT_NE(anchor_widget.get(), bubble_delegate->anchor_widget()); |
196 EXPECT_FALSE(bubble_observer.widget_closed()); | 196 EXPECT_FALSE(bubble_observer.widget_closed()); |
197 | 197 |
198 // TODO(msw): Remove activation hack to prevent bookkeeping errors in: | 198 // TODO(msw): Remove activation hack to prevent bookkeeping errors in: |
199 // aura::test::TestActivationClient::OnWindowDestroyed(). | 199 // aura::test::TestActivationClient::OnWindowDestroyed(). |
200 scoped_ptr<Widget> smoke_and_mirrors_widget(CreateTestWidget()); | 200 std::unique_ptr<Widget> smoke_and_mirrors_widget(CreateTestWidget()); |
201 EXPECT_FALSE(bubble_observer.widget_closed()); | 201 EXPECT_FALSE(bubble_observer.widget_closed()); |
202 | 202 |
203 // Ensure that closing the parent widget also closes the bubble itself. | 203 // Ensure that closing the parent widget also closes the bubble itself. |
204 parent_widget->CloseNow(); | 204 parent_widget->CloseNow(); |
205 EXPECT_TRUE(bubble_observer.widget_closed()); | 205 EXPECT_TRUE(bubble_observer.widget_closed()); |
206 } | 206 } |
207 | 207 |
208 TEST_F(BubbleDialogDelegateTest, InitiallyFocusedView) { | 208 TEST_F(BubbleDialogDelegateTest, InitiallyFocusedView) { |
209 scoped_ptr<Widget> anchor_widget(CreateTestWidget()); | 209 std::unique_ptr<Widget> anchor_widget(CreateTestWidget()); |
210 BubbleDialogDelegateView* bubble_delegate = | 210 BubbleDialogDelegateView* bubble_delegate = |
211 new TestBubbleDialogDelegateView(anchor_widget->GetContentsView()); | 211 new TestBubbleDialogDelegateView(anchor_widget->GetContentsView()); |
212 Widget* bubble_widget = | 212 Widget* bubble_widget = |
213 BubbleDialogDelegateView::CreateBubble(bubble_delegate); | 213 BubbleDialogDelegateView::CreateBubble(bubble_delegate); |
214 bubble_widget->Show(); | 214 bubble_widget->Show(); |
215 EXPECT_EQ(bubble_delegate->GetInitiallyFocusedView(), | 215 EXPECT_EQ(bubble_delegate->GetInitiallyFocusedView(), |
216 bubble_widget->GetFocusManager()->GetFocusedView()); | 216 bubble_widget->GetFocusManager()->GetFocusedView()); |
217 bubble_widget->CloseNow(); | 217 bubble_widget->CloseNow(); |
218 } | 218 } |
219 | 219 |
220 TEST_F(BubbleDialogDelegateTest, NonClientHitTest) { | 220 TEST_F(BubbleDialogDelegateTest, NonClientHitTest) { |
221 scoped_ptr<Widget> anchor_widget(CreateTestWidget()); | 221 std::unique_ptr<Widget> anchor_widget(CreateTestWidget()); |
222 TestBubbleDialogDelegateView* bubble_delegate = | 222 TestBubbleDialogDelegateView* bubble_delegate = |
223 new TestBubbleDialogDelegateView(anchor_widget->GetContentsView()); | 223 new TestBubbleDialogDelegateView(anchor_widget->GetContentsView()); |
224 BubbleDialogDelegateView::CreateBubble(bubble_delegate); | 224 BubbleDialogDelegateView::CreateBubble(bubble_delegate); |
225 BubbleFrameView* frame = bubble_delegate->GetBubbleFrameView(); | 225 BubbleFrameView* frame = bubble_delegate->GetBubbleFrameView(); |
226 const int border = frame->bubble_border()->GetBorderThickness(); | 226 const int border = frame->bubble_border()->GetBorderThickness(); |
227 | 227 |
228 struct { | 228 struct { |
229 const int point; | 229 const int point; |
230 const int hit; | 230 const int hit; |
231 } cases[] = { | 231 } cases[] = { |
232 {border, HTNOWHERE}, {border + 50, HTCLIENT}, {1000, HTNOWHERE}, | 232 {border, HTNOWHERE}, {border + 50, HTCLIENT}, {1000, HTNOWHERE}, |
233 }; | 233 }; |
234 | 234 |
235 for (size_t i = 0; i < arraysize(cases); ++i) { | 235 for (size_t i = 0; i < arraysize(cases); ++i) { |
236 gfx::Point point(cases[i].point, cases[i].point); | 236 gfx::Point point(cases[i].point, cases[i].point); |
237 EXPECT_EQ(cases[i].hit, frame->NonClientHitTest(point)) | 237 EXPECT_EQ(cases[i].hit, frame->NonClientHitTest(point)) |
238 << " with border: " << border << ", at point " << cases[i].point; | 238 << " with border: " << border << ", at point " << cases[i].point; |
239 } | 239 } |
240 } | 240 } |
241 | 241 |
242 TEST_F(BubbleDialogDelegateTest, VisibleWhenAnchorWidgetBoundsChanged) { | 242 TEST_F(BubbleDialogDelegateTest, VisibleWhenAnchorWidgetBoundsChanged) { |
243 scoped_ptr<Widget> anchor_widget(CreateTestWidget()); | 243 std::unique_ptr<Widget> anchor_widget(CreateTestWidget()); |
244 BubbleDialogDelegateView* bubble_delegate = | 244 BubbleDialogDelegateView* bubble_delegate = |
245 new TestBubbleDialogDelegateView(anchor_widget->GetContentsView()); | 245 new TestBubbleDialogDelegateView(anchor_widget->GetContentsView()); |
246 Widget* bubble_widget = | 246 Widget* bubble_widget = |
247 BubbleDialogDelegateView::CreateBubble(bubble_delegate); | 247 BubbleDialogDelegateView::CreateBubble(bubble_delegate); |
248 test::TestWidgetObserver bubble_observer(bubble_widget); | 248 test::TestWidgetObserver bubble_observer(bubble_widget); |
249 EXPECT_FALSE(bubble_observer.widget_closed()); | 249 EXPECT_FALSE(bubble_observer.widget_closed()); |
250 | 250 |
251 anchor_widget->Show(); | 251 anchor_widget->Show(); |
252 bubble_widget->Show(); | 252 bubble_widget->Show(); |
253 EXPECT_TRUE(bubble_widget->IsVisible()); | 253 EXPECT_TRUE(bubble_widget->IsVisible()); |
254 anchor_widget->SetBounds(gfx::Rect(10, 10, 100, 100)); | 254 anchor_widget->SetBounds(gfx::Rect(10, 10, 100, 100)); |
255 EXPECT_TRUE(bubble_widget->IsVisible()); | 255 EXPECT_TRUE(bubble_widget->IsVisible()); |
256 } | 256 } |
257 | 257 |
258 // Test that setting WidgetDelegate::set_can_activate() to false makes the | 258 // Test that setting WidgetDelegate::set_can_activate() to false makes the |
259 // widget created via BubbleDialogDelegateView::CreateBubble() not activatable. | 259 // widget created via BubbleDialogDelegateView::CreateBubble() not activatable. |
260 TEST_F(BubbleDialogDelegateTest, NotActivatable) { | 260 TEST_F(BubbleDialogDelegateTest, NotActivatable) { |
261 scoped_ptr<Widget> anchor_widget(CreateTestWidget()); | 261 std::unique_ptr<Widget> anchor_widget(CreateTestWidget()); |
262 BubbleDialogDelegateView* bubble_delegate = | 262 BubbleDialogDelegateView* bubble_delegate = |
263 new TestBubbleDialogDelegateView(anchor_widget->GetContentsView()); | 263 new TestBubbleDialogDelegateView(anchor_widget->GetContentsView()); |
264 bubble_delegate->set_can_activate(false); | 264 bubble_delegate->set_can_activate(false); |
265 Widget* bubble_widget = | 265 Widget* bubble_widget = |
266 BubbleDialogDelegateView::CreateBubble(bubble_delegate); | 266 BubbleDialogDelegateView::CreateBubble(bubble_delegate); |
267 bubble_widget->Show(); | 267 bubble_widget->Show(); |
268 EXPECT_FALSE(bubble_widget->CanActivate()); | 268 EXPECT_FALSE(bubble_widget->CanActivate()); |
269 } | 269 } |
270 | 270 |
271 TEST_F(BubbleDialogDelegateTest, CloseMethods) { | 271 TEST_F(BubbleDialogDelegateTest, CloseMethods) { |
272 { | 272 { |
273 scoped_ptr<Widget> anchor_widget(CreateTestWidget()); | 273 std::unique_ptr<Widget> anchor_widget(CreateTestWidget()); |
274 BubbleDialogDelegateView* bubble_delegate = | 274 BubbleDialogDelegateView* bubble_delegate = |
275 new TestBubbleDialogDelegateView(anchor_widget->GetContentsView()); | 275 new TestBubbleDialogDelegateView(anchor_widget->GetContentsView()); |
276 bubble_delegate->set_close_on_deactivate(true); | 276 bubble_delegate->set_close_on_deactivate(true); |
277 Widget* bubble_widget = | 277 Widget* bubble_widget = |
278 BubbleDialogDelegateView::CreateBubble(bubble_delegate); | 278 BubbleDialogDelegateView::CreateBubble(bubble_delegate); |
279 anchor_widget->Show(); | 279 anchor_widget->Show(); |
280 bubble_widget->Show(); | 280 bubble_widget->Show(); |
281 anchor_widget->Activate(); | 281 anchor_widget->Activate(); |
282 EXPECT_TRUE(bubble_widget->IsClosed()); | 282 EXPECT_TRUE(bubble_widget->IsClosed()); |
283 } | 283 } |
284 | 284 |
285 { | 285 { |
286 scoped_ptr<Widget> anchor_widget(CreateTestWidget()); | 286 std::unique_ptr<Widget> anchor_widget(CreateTestWidget()); |
287 BubbleDialogDelegateView* bubble_delegate = | 287 BubbleDialogDelegateView* bubble_delegate = |
288 new TestBubbleDialogDelegateView(anchor_widget->GetContentsView()); | 288 new TestBubbleDialogDelegateView(anchor_widget->GetContentsView()); |
289 Widget* bubble_widget = | 289 Widget* bubble_widget = |
290 BubbleDialogDelegateView::CreateBubble(bubble_delegate); | 290 BubbleDialogDelegateView::CreateBubble(bubble_delegate); |
291 bubble_widget->Show(); | 291 bubble_widget->Show(); |
292 | 292 |
293 ui::KeyEvent escape_event(ui::ET_KEY_PRESSED, ui::VKEY_ESCAPE, ui::EF_NONE); | 293 ui::KeyEvent escape_event(ui::ET_KEY_PRESSED, ui::VKEY_ESCAPE, ui::EF_NONE); |
294 bubble_widget->OnKeyEvent(&escape_event); | 294 bubble_widget->OnKeyEvent(&escape_event); |
295 EXPECT_TRUE(bubble_widget->IsClosed()); | 295 EXPECT_TRUE(bubble_widget->IsClosed()); |
296 } | 296 } |
297 | 297 |
298 { | 298 { |
299 scoped_ptr<Widget> anchor_widget(CreateTestWidget()); | 299 std::unique_ptr<Widget> anchor_widget(CreateTestWidget()); |
300 TestBubbleDialogDelegateView* bubble_delegate = | 300 TestBubbleDialogDelegateView* bubble_delegate = |
301 new TestBubbleDialogDelegateView(anchor_widget->GetContentsView()); | 301 new TestBubbleDialogDelegateView(anchor_widget->GetContentsView()); |
302 Widget* bubble_widget = | 302 Widget* bubble_widget = |
303 BubbleDialogDelegateView::CreateBubble(bubble_delegate); | 303 BubbleDialogDelegateView::CreateBubble(bubble_delegate); |
304 bubble_widget->Show(); | 304 bubble_widget->Show(); |
305 BubbleFrameView* frame_view = bubble_delegate->GetBubbleFrameView(); | 305 BubbleFrameView* frame_view = bubble_delegate->GetBubbleFrameView(); |
306 LabelButton* close_button = frame_view->close_; | 306 LabelButton* close_button = frame_view->close_; |
307 ASSERT_TRUE(close_button); | 307 ASSERT_TRUE(close_button); |
308 frame_view->ButtonPressed( | 308 frame_view->ButtonPressed( |
309 close_button, | 309 close_button, |
310 ui::MouseEvent(ui::ET_MOUSE_PRESSED, gfx::Point(), gfx::Point(), | 310 ui::MouseEvent(ui::ET_MOUSE_PRESSED, gfx::Point(), gfx::Point(), |
311 ui::EventTimeForNow(), ui::EF_NONE, ui::EF_NONE)); | 311 ui::EventTimeForNow(), ui::EF_NONE, ui::EF_NONE)); |
312 EXPECT_TRUE(bubble_widget->IsClosed()); | 312 EXPECT_TRUE(bubble_widget->IsClosed()); |
313 } | 313 } |
314 } | 314 } |
315 | 315 |
316 } // namespace views | 316 } // namespace views |
OLD | NEW |