Index: views/widget/widget_unittest.cc |
diff --git a/views/widget/widget_unittest.cc b/views/widget/widget_unittest.cc |
index a9f43dcb2b156e3a3ef2e32dcd0febdb9dd8e4da..aafa408544dba1c47b2a3bb1d77b7eeca4b836ac 100644 |
--- a/views/widget/widget_unittest.cc |
+++ b/views/widget/widget_unittest.cc |
@@ -132,6 +132,15 @@ Widget* CreateChildPlatformWidget(gfx::NativeView parent_native_view) { |
return child; |
} |
+Widget* CreateTopLevelNativeWidgetViews() { |
+ Widget* toplevel = new Widget; |
+ Widget::InitParams params(Widget::InitParams::TYPE_WINDOW); |
+ params.native_widget = new NativeWidgetViews(toplevel); |
+ toplevel->Init(params); |
+ toplevel->SetContentsView(new View); |
+ return toplevel; |
+} |
+ |
Widget* CreateChildNativeWidgetViewsWithParent(Widget* parent) { |
Widget* child = new Widget; |
Widget::InitParams params(Widget::InitParams::TYPE_CONTROL); |
@@ -178,7 +187,7 @@ TEST_F(WidgetTest, GetTopLevelWidget_Synthetic) { |
// child NativeWidgetViews. |
Widget* toplevel = CreateTopLevelPlatformWidget(); |
widget_views_delegate().set_default_parent_view(toplevel->GetRootView()); |
- Widget* child = CreateChildNativeWidgetViews(); |
+ Widget* child = CreateTopLevelNativeWidgetViews(); |
EXPECT_EQ(toplevel, toplevel->GetTopLevelWidget()); |
EXPECT_EQ(child, child->GetTopLevelWidget()); |
@@ -187,23 +196,26 @@ TEST_F(WidgetTest, GetTopLevelWidget_Synthetic) { |
// |child| should be automatically destroyed with |toplevel|. |
} |
-// Creates a hierarchy consisting of a top level platform native widget, a child |
-// NativeWidgetViews, and a child of that child, another NativeWidgetViews. |
-TEST_F(WidgetTest, GetTopLevelWidget_SyntheticParent) { |
- Widget* toplevel = CreateTopLevelPlatformWidget(); |
- widget_views_delegate().set_default_parent_view(toplevel->GetRootView()); |
- |
- Widget* child1 = CreateChildNativeWidgetViews(); // Will be parented |
- // automatically to |
- // |toplevel|. |
- Widget* child11 = CreateChildNativeWidgetViewsWithParent(child1); |
- |
+// Creates a hierarchy consisting of a desktop platform native widget, a |
+// toplevel NativeWidgetViews, and a child of that toplevel, another |
+// NativeWidgetViews. |
+TEST_F(WidgetTest, GetTopLevelWidget_SyntheticDesktop) { |
+ // Create a hierarchy consisting of a desktop platform native widget, |
+ // a toplevel NativeWidgetViews and a chlid NativeWidgetViews. |
+ Widget* desktop = CreateTopLevelPlatformWidget(); |
+ widget_views_delegate().set_default_parent_view(desktop->GetRootView()); |
+ Widget* toplevel = CreateTopLevelNativeWidgetViews(); // Will be parented |
+ // automatically to |
+ // |toplevel|. |
+ |
+ Widget* child = CreateChildNativeWidgetViewsWithParent(toplevel); |
+ |
+ EXPECT_EQ(desktop, desktop->GetTopLevelWidget()); |
EXPECT_EQ(toplevel, toplevel->GetTopLevelWidget()); |
- EXPECT_EQ(child1, child1->GetTopLevelWidget()); |
- EXPECT_EQ(child1, child11->GetTopLevelWidget()); |
+ EXPECT_EQ(toplevel, child->GetTopLevelWidget()); |
- toplevel->CloseNow(); |
- // |child1| and |child11| should be destroyed with |toplevel|. |
+ desktop->CloseNow(); |
+ // |toplevel|, |child| should be automatically destroyed with |toplevel|. |
} |
// This is flaky on touch build. See crbug.com/94137. |
@@ -215,12 +227,8 @@ TEST_F(WidgetTest, GetTopLevelWidget_SyntheticParent) { |
// Tests some grab/ungrab events. |
TEST_F(WidgetTest, MAYBE_GrabUngrab) { |
Widget* toplevel = CreateTopLevelPlatformWidget(); |
- widget_views_delegate().set_default_parent_view(toplevel->GetRootView()); |
- |
- Widget* child1 = CreateChildNativeWidgetViews(); // Will be parented |
- // automatically to |
- // |toplevel|. |
- Widget* child2 = CreateChildNativeWidgetViews(); |
+ Widget* child1 = CreateChildNativeWidgetViewsWithParent(toplevel); |
+ Widget* child2 = CreateChildNativeWidgetViewsWithParent(toplevel); |
toplevel->SetBounds(gfx::Rect(0, 0, 500, 500)); |
@@ -650,7 +658,7 @@ class WidgetObserverTest : public WidgetTest, |
} |
Widget* NewWidget() { |
- Widget* widget = CreateChildNativeWidgetViews(); |
+ Widget* widget = CreateTopLevelNativeWidgetViews(); |
widget->AddObserver(this); |
return widget; |
} |
@@ -677,18 +685,26 @@ TEST_F(WidgetObserverTest, ActivationChange) { |
Widget* toplevel = CreateTopLevelPlatformWidget(); |
widget_views_delegate().set_default_parent_view(toplevel->GetRootView()); |
- Widget* child1 = NewWidget(); |
- Widget* child2 = NewWidget(); |
+ Widget* toplevel1 = NewWidget(); |
+ Widget* toplevel2 = NewWidget(); |
+ |
+ toplevel1->Show(); |
+ toplevel2->Show(); |
reset(); |
- child1->Activate(); |
- EXPECT_EQ(child1, widget_activated()); |
+ toplevel1->Activate(); |
+ |
+ RunPendingMessages(); |
+ EXPECT_EQ(toplevel1, widget_activated()); |
- child2->Activate(); |
- EXPECT_EQ(child1, widget_deactivated()); |
- EXPECT_EQ(child2, widget_activated()); |
- EXPECT_EQ(child2, active()); |
+ toplevel2->Activate(); |
+ RunPendingMessages(); |
+ EXPECT_EQ(toplevel1, widget_deactivated()); |
+ EXPECT_EQ(toplevel2, widget_activated()); |
+ EXPECT_EQ(toplevel2, active()); |
+ |
+ toplevel->CloseNow(); |
} |
TEST_F(WidgetObserverTest, VisibilityChange) { |
@@ -711,6 +727,8 @@ TEST_F(WidgetObserverTest, VisibilityChange) { |
child2->Show(); |
EXPECT_EQ(child2, widget_shown()); |
+ |
+ toplevel->CloseNow(); |
} |
} // namespace |