| 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 // Ensure tests running in parallel don't steal focus from the Widget on Mac. |
| 75 ui::test::ScopedFakeNSWindowFocus fake_focus_; |
| 76 #endif |
| 77 |
| 69 DISALLOW_COPY_AND_ASSIGN(BubbleDelegateTest); | 78 DISALLOW_COPY_AND_ASSIGN(BubbleDelegateTest); |
| 70 }; | 79 }; |
| 71 | 80 |
| 72 } // namespace | 81 } // namespace |
| 73 | 82 |
| 74 TEST_F(BubbleDelegateTest, CreateDelegate) { | 83 TEST_F(BubbleDelegateTest, CreateDelegate) { |
| 75 scoped_ptr<Widget> anchor_widget(CreateTestWidget()); | 84 scoped_ptr<Widget> anchor_widget(CreateTestWidget()); |
| 76 BubbleDelegateView* bubble_delegate = new BubbleDelegateView( | 85 BubbleDelegateView* bubble_delegate = new BubbleDelegateView( |
| 77 anchor_widget->GetContentsView(), BubbleBorder::NONE); | 86 anchor_widget->GetContentsView(), BubbleBorder::NONE); |
| 78 bubble_delegate->set_color(SK_ColorGREEN); | 87 bubble_delegate->set_color(SK_ColorGREEN); |
| (...skipping 191 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 270 EXPECT_FALSE(bubble_widget->CanActivate()); | 279 EXPECT_FALSE(bubble_widget->CanActivate()); |
| 271 } | 280 } |
| 272 | 281 |
| 273 TEST_F(BubbleDelegateTest, CloseReasons) { | 282 TEST_F(BubbleDelegateTest, CloseReasons) { |
| 274 { | 283 { |
| 275 scoped_ptr<Widget> anchor_widget(CreateTestWidget()); | 284 scoped_ptr<Widget> anchor_widget(CreateTestWidget()); |
| 276 BubbleDelegateView* bubble_delegate = new BubbleDelegateView( | 285 BubbleDelegateView* bubble_delegate = new BubbleDelegateView( |
| 277 anchor_widget->GetContentsView(), BubbleBorder::NONE); | 286 anchor_widget->GetContentsView(), BubbleBorder::NONE); |
| 278 bubble_delegate->set_close_on_deactivate(true); | 287 bubble_delegate->set_close_on_deactivate(true); |
| 279 Widget* bubble_widget = BubbleDelegateView::CreateBubble(bubble_delegate); | 288 Widget* bubble_widget = BubbleDelegateView::CreateBubble(bubble_delegate); |
| 289 anchor_widget->Show(); |
| 280 bubble_widget->Show(); | 290 bubble_widget->Show(); |
| 281 anchor_widget->Activate(); | 291 anchor_widget->Activate(); |
| 282 EXPECT_TRUE(bubble_widget->IsClosed()); | 292 EXPECT_TRUE(bubble_widget->IsClosed()); |
| 283 EXPECT_EQ(BubbleDelegateView::CloseReason::DEACTIVATION, | 293 EXPECT_EQ(BubbleDelegateView::CloseReason::DEACTIVATION, |
| 284 bubble_delegate->close_reason()); | 294 bubble_delegate->close_reason()); |
| 285 } | 295 } |
| 286 | 296 |
| 287 { | 297 { |
| 288 scoped_ptr<Widget> anchor_widget(CreateTestWidget()); | 298 scoped_ptr<Widget> anchor_widget(CreateTestWidget()); |
| 289 BubbleDelegateView* bubble_delegate = new BubbleDelegateView( | 299 BubbleDelegateView* bubble_delegate = new BubbleDelegateView( |
| (...skipping 23 matching lines...) Expand all Loading... |
| 313 close_button, | 323 close_button, |
| 314 ui::MouseEvent(ui::ET_MOUSE_PRESSED, gfx::Point(0, 0), gfx::Point(0, 0), | 324 ui::MouseEvent(ui::ET_MOUSE_PRESSED, gfx::Point(0, 0), gfx::Point(0, 0), |
| 315 ui::EventTimeForNow(), ui::EF_NONE, ui::EF_NONE)); | 325 ui::EventTimeForNow(), ui::EF_NONE, ui::EF_NONE)); |
| 316 EXPECT_TRUE(bubble_widget->IsClosed()); | 326 EXPECT_TRUE(bubble_widget->IsClosed()); |
| 317 EXPECT_EQ(BubbleDelegateView::CloseReason::CLOSE_BUTTON, | 327 EXPECT_EQ(BubbleDelegateView::CloseReason::CLOSE_BUTTON, |
| 318 bubble_delegate->close_reason()); | 328 bubble_delegate->close_reason()); |
| 319 } | 329 } |
| 320 } | 330 } |
| 321 | 331 |
| 322 } // namespace views | 332 } // namespace views |
| OLD | NEW |