Chromium Code Reviews| Index: ui/views/mus/native_widget_mus_unittest.cc |
| diff --git a/ui/views/mus/native_widget_mus_unittest.cc b/ui/views/mus/native_widget_mus_unittest.cc |
| index 8dcebbcd8015e20124e8ab3bb7c1dd944a37160b..5f5df30c7c6f1ef42b08d5d8ba5478984b11e36c 100644 |
| --- a/ui/views/mus/native_widget_mus_unittest.cc |
| +++ b/ui/views/mus/native_widget_mus_unittest.cc |
| @@ -31,6 +31,43 @@ SkBitmap MakeBitmap(SkColor color) { |
| return bitmap; |
| } |
| +// A Widget that tracks activation changes. |
|
sky
2016/04/07 17:55:10
Rather than creating a widget subclass can you use
James Cook
2016/04/07 20:43:43
Switched to using TestWidgetFocusChangeListener an
|
| +class TestWidget : public Widget { |
| + public: |
| + TestWidget() {} |
| + ~TestWidget() override {} |
| + |
| + bool last_activation_change() const { return last_activation_change_; } |
| + int focus_count() const { return focus_count_; } |
| + int blur_count() const { return blur_count_; } |
| + |
| + void ResetCounts() { |
| + focus_count_ = 0; |
| + blur_count_ = 0; |
| + } |
| + |
| + // views::internal::NativeWidgetDelegate: |
| + void OnNativeWidgetActivationChanged(bool active) override { |
| + last_activation_change_ = active; |
| + Widget::OnNativeWidgetActivationChanged(active); |
| + } |
| + void OnNativeFocus() override { |
| + focus_count_++; |
| + Widget::OnNativeFocus(); |
| + } |
| + void OnNativeBlur() override { |
| + blur_count_++; |
| + Widget::OnNativeBlur(); |
| + } |
| + |
| + private: |
| + bool last_activation_change_ = false; |
| + int focus_count_ = 0; |
| + int blur_count_ = 0; |
| + |
| + DISALLOW_COPY_AND_ASSIGN(TestWidget); |
| +}; |
| + |
| // A WidgetDelegate that supplies an app icon. |
| class TestWidgetDelegate : public WidgetDelegateView { |
| public: |
| @@ -58,8 +95,8 @@ class NativeWidgetMusTest : public ViewsTestBase { |
| ~NativeWidgetMusTest() override {} |
| // Creates a test widget. Takes ownership of |delegate|. |
| - Widget* CreateWidget(TestWidgetDelegate* delegate) { |
| - Widget* widget = new Widget(); |
| + TestWidget* CreateWidget(TestWidgetDelegate* delegate) { |
|
sky
2016/04/07 17:55:10
Make this return a scoped_ptr
James Cook
2016/04/07 20:43:43
Done.
|
| + TestWidget* widget = new TestWidget(); |
| Widget::InitParams params = CreateParams(Widget::InitParams::TYPE_WINDOW); |
| params.delegate = delegate; |
| params.ownership = Widget::InitParams::WIDGET_OWNS_NATIVE_WIDGET; |
| @@ -72,6 +109,27 @@ class NativeWidgetMusTest : public ViewsTestBase { |
| DISALLOW_COPY_AND_ASSIGN(NativeWidgetMusTest); |
| }; |
| +// Tests that native window activation and focus is passed to the Widget. |
| +TEST_F(NativeWidgetMusTest, OnActivationChanged) { |
| + scoped_ptr<TestWidget> widget(CreateWidget(nullptr)); |
| + NativeWidgetMus* native_widget = static_cast<NativeWidgetMus*>(widget |
| + ->native_widget_private()); |
| + |
| + // Simulate native widget being activated. |
| + native_widget->OnActivationChanged(true); |
|
sky
2016/04/07 17:55:10
If you call widget->Activate() does it call this?
James Cook
2016/04/07 20:43:43
Yes. Changed test to start the widget in the shown
|
| + EXPECT_EQ(1, widget->focus_count()); |
| + EXPECT_EQ(0, widget->blur_count()); |
| + EXPECT_TRUE(widget->last_activation_change()); |
| + |
| + widget->ResetCounts(); |
| + |
| + // Simulate native widget being deactivated. |
| + native_widget->OnActivationChanged(false); |
| + EXPECT_EQ(0, widget->focus_count()); |
| + EXPECT_EQ(1, widget->blur_count()); |
| + EXPECT_FALSE(widget->last_activation_change()); |
| +} |
| + |
| // Tests that a window with an icon sets the mus::Window icon property. |
| TEST_F(NativeWidgetMusTest, AppIcon) { |
| // Create a Widget with a bitmap as the icon. |