Index: ui/views/widget/widget_unittest.cc |
diff --git a/ui/views/widget/widget_unittest.cc b/ui/views/widget/widget_unittest.cc |
index 374435f6b038fa0de5b389f73b05e601a26e2f45..ccc3b64af07f42679783be7bb1031d0c867be130 100644 |
--- a/ui/views/widget/widget_unittest.cc |
+++ b/ui/views/widget/widget_unittest.cc |
@@ -869,6 +869,36 @@ TEST_F(WidgetObserverTest, WidgetBoundsChanged) { |
EXPECT_EQ(child2, widget_bounds_changed()); |
} |
+// An extension to WidgetBoundsChanged to ensure notificaitons are forwarded |
+// by the NativeWidget implementation. |
+TEST_F(WidgetObserverTest, WidgetBoundsChangedNative) { |
+ // Don't use NewWidget(), so that the Init() flow can be observed to ensure |
+ // consistency across platforms. |
+ Widget* widget = new Widget(); // Note: owned by NativeWidget. |
+ widget->AddObserver(this); |
+ |
+ EXPECT_FALSE(widget_bounds_changed()); |
+ widget->Init(Widget::InitParams()); |
+ |
+ EXPECT_TRUE(widget_bounds_changed()); |
+ reset(); |
+ |
+ widget->SetSize(gfx::Size(160, 100)); |
+ EXPECT_TRUE(widget_bounds_changed()); |
+ reset(); |
+ |
+ widget->Show(); |
+ EXPECT_TRUE(widget_bounds_changed()); |
+ reset(); |
+ |
+ widget->SetSize(gfx::Size(170, 100)); |
+ EXPECT_TRUE(widget_bounds_changed()); |
+ reset(); |
+ |
+ widget->CloseNow(); |
+ EXPECT_FALSE(widget_bounds_changed()); |
+} |
+ |
// Tests that SetBounds() and GetWindowBoundsInScreen() is symmetric when the |
// widget is visible and not maximized or fullscreen. |
TEST_F(WidgetTest, GetWindowBoundsInScreen) { |