| 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
|
|
|