Chromium Code Reviews| 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 <stddef.h> | 5 #include <stddef.h> |
| 6 | 6 |
| 7 #include "base/macros.h" | 7 #include "base/macros.h" |
| 8 #include "ui/base/hit_test.h" | 8 #include "ui/base/hit_test.h" |
| 9 #include "ui/events/event_utils.h" | 9 #include "ui/events/event_utils.h" |
| 10 #include "ui/views/bubble/bubble_delegate.h" | 10 #include "ui/views/bubble/bubble_delegate.h" |
| 11 #include "ui/views/bubble/bubble_frame_view.h" | 11 #include "ui/views/bubble/bubble_frame_view.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 #include "ui/views/widget/widget_observer.h" | 16 #include "ui/views/widget/widget_observer.h" |
| 17 | 17 |
| 18 #if defined(OS_MACOSX) | |
| 19 #include "ui/base/test/scoped_fake_nswindow_focus.h" | |
| 20 #endif | |
| 21 | |
| 18 namespace views { | 22 namespace views { |
| 19 | 23 |
| 20 namespace { | 24 namespace { |
| 21 | 25 |
| 22 class TestBubbleDelegateView : public BubbleDelegateView { | 26 class TestBubbleDelegateView : public BubbleDelegateView { |
| 23 public: | 27 public: |
| 24 TestBubbleDelegateView(View* anchor_view) | 28 TestBubbleDelegateView(View* anchor_view) |
| 25 : BubbleDelegateView(anchor_view, BubbleBorder::TOP_LEFT), | 29 : BubbleDelegateView(anchor_view, BubbleBorder::TOP_LEFT), |
| 26 view_(new View()) { | 30 view_(new View()) { |
| 27 view_->SetFocusable(true); | 31 view_->SetFocusable(true); |
| (...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 59 // Creates a test widget that owns its native widget. | 63 // Creates a test widget that owns its native widget. |
| 60 Widget* CreateTestWidget() { | 64 Widget* CreateTestWidget() { |
| 61 Widget* widget = new Widget(); | 65 Widget* widget = new Widget(); |
| 62 Widget::InitParams params = CreateParams(Widget::InitParams::TYPE_WINDOW); | 66 Widget::InitParams params = CreateParams(Widget::InitParams::TYPE_WINDOW); |
| 63 params.ownership = views::Widget::InitParams::WIDGET_OWNS_NATIVE_WIDGET; | 67 params.ownership = views::Widget::InitParams::WIDGET_OWNS_NATIVE_WIDGET; |
| 64 widget->Init(params); | 68 widget->Init(params); |
| 65 return widget; | 69 return widget; |
| 66 } | 70 } |
| 67 | 71 |
| 68 private: | 72 private: |
| 73 #if defined(OS_MACOSX) | |
| 74 ui::test::ScopedFakeNSWindowFocus fake_focus; | |
|
tapted
2016/03/03 23:34:50
oops - this should have an underscore on the end.
Patti Lor
2016/03/04 06:27:11
Done.
| |
| 75 #endif | |
| 76 | |
| 69 DISALLOW_COPY_AND_ASSIGN(BubbleDelegateTest); | 77 DISALLOW_COPY_AND_ASSIGN(BubbleDelegateTest); |
| 70 }; | 78 }; |
| 71 | 79 |
| 72 } // namespace | 80 } // namespace |
| 73 | 81 |
| 74 TEST_F(BubbleDelegateTest, CreateDelegate) { | 82 TEST_F(BubbleDelegateTest, CreateDelegate) { |
| 75 scoped_ptr<Widget> anchor_widget(CreateTestWidget()); | 83 scoped_ptr<Widget> anchor_widget(CreateTestWidget()); |
| 76 BubbleDelegateView* bubble_delegate = new BubbleDelegateView( | 84 BubbleDelegateView* bubble_delegate = new BubbleDelegateView( |
| 77 anchor_widget->GetContentsView(), BubbleBorder::NONE); | 85 anchor_widget->GetContentsView(), BubbleBorder::NONE); |
| 78 bubble_delegate->set_color(SK_ColorGREEN); | 86 bubble_delegate->set_color(SK_ColorGREEN); |
| (...skipping 192 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 271 } | 279 } |
| 272 | 280 |
| 273 TEST_F(BubbleDelegateTest, CloseReasons) { | 281 TEST_F(BubbleDelegateTest, CloseReasons) { |
| 274 { | 282 { |
| 275 scoped_ptr<Widget> anchor_widget(CreateTestWidget()); | 283 scoped_ptr<Widget> anchor_widget(CreateTestWidget()); |
| 276 BubbleDelegateView* bubble_delegate = new BubbleDelegateView( | 284 BubbleDelegateView* bubble_delegate = new BubbleDelegateView( |
| 277 anchor_widget->GetContentsView(), BubbleBorder::NONE); | 285 anchor_widget->GetContentsView(), BubbleBorder::NONE); |
| 278 bubble_delegate->set_close_on_deactivate(true); | 286 bubble_delegate->set_close_on_deactivate(true); |
| 279 Widget* bubble_widget = BubbleDelegateView::CreateBubble(bubble_delegate); | 287 Widget* bubble_widget = BubbleDelegateView::CreateBubble(bubble_delegate); |
| 280 bubble_widget->Show(); | 288 bubble_widget->Show(); |
| 289 EXPECT_FALSE(anchor_widget->IsVisible()); | |
|
msw
2016/03/04 00:23:58
Why don't we just show |anchor_widget| earlier in
Patti Lor
2016/03/04 06:27:11
Done, will add another test fixture for the Aura b
| |
| 290 #if !defined(USE_AURA) | |
| 291 // Bubbles are top-level which, on Aura, causes the parent->child | |
| 292 // relationship to be managed by wm::TransientWindowManager rather than the | |
| 293 // ui::Layer hierarchy. TransientWindowManager currently permits a child to | |
| 294 // be shown when its parent is hidden, but it shouldn't. | |
| 295 // This is http://crbug.com/590957. | |
| 296 EXPECT_FALSE(bubble_widget->IsVisible()); | |
| 297 anchor_widget->Show(); | |
| 298 bubble_widget->Activate(); | |
| 299 #endif | |
| 300 EXPECT_TRUE(bubble_widget->IsVisible()); | |
| 301 EXPECT_TRUE(bubble_widget->IsActive()); | |
| 281 anchor_widget->Activate(); | 302 anchor_widget->Activate(); |
| 282 EXPECT_TRUE(bubble_widget->IsClosed()); | 303 EXPECT_TRUE(bubble_widget->IsClosed()); |
| 283 EXPECT_EQ(BubbleDelegateView::CloseReason::DEACTIVATION, | 304 EXPECT_EQ(BubbleDelegateView::CloseReason::DEACTIVATION, |
| 284 bubble_delegate->close_reason()); | 305 bubble_delegate->close_reason()); |
| 285 } | 306 } |
| 286 | 307 |
| 287 { | 308 { |
| 288 scoped_ptr<Widget> anchor_widget(CreateTestWidget()); | 309 scoped_ptr<Widget> anchor_widget(CreateTestWidget()); |
| 289 BubbleDelegateView* bubble_delegate = new BubbleDelegateView( | 310 BubbleDelegateView* bubble_delegate = new BubbleDelegateView( |
| 290 anchor_widget->GetContentsView(), BubbleBorder::NONE); | 311 anchor_widget->GetContentsView(), BubbleBorder::NONE); |
| (...skipping 22 matching lines...) Expand all Loading... | |
| 313 close_button, | 334 close_button, |
| 314 ui::MouseEvent(ui::ET_MOUSE_PRESSED, gfx::Point(0, 0), gfx::Point(0, 0), | 335 ui::MouseEvent(ui::ET_MOUSE_PRESSED, gfx::Point(0, 0), gfx::Point(0, 0), |
| 315 ui::EventTimeForNow(), ui::EF_NONE, ui::EF_NONE)); | 336 ui::EventTimeForNow(), ui::EF_NONE, ui::EF_NONE)); |
| 316 EXPECT_TRUE(bubble_widget->IsClosed()); | 337 EXPECT_TRUE(bubble_widget->IsClosed()); |
| 317 EXPECT_EQ(BubbleDelegateView::CloseReason::CLOSE_BUTTON, | 338 EXPECT_EQ(BubbleDelegateView::CloseReason::CLOSE_BUTTON, |
| 318 bubble_delegate->close_reason()); | 339 bubble_delegate->close_reason()); |
| 319 } | 340 } |
| 320 } | 341 } |
| 321 | 342 |
| 322 } // namespace views | 343 } // namespace views |
| OLD | NEW |