| OLD | NEW |
| 1 // Copyright 2013 The Chromium Authors. All rights reserved. | 1 // Copyright 2013 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 <memory> |
| 6 |
| 5 #include "ui/aura/test/aura_test_base.h" | 7 #include "ui/aura/test/aura_test_base.h" |
| 6 #include "ui/aura/test/test_windows.h" | 8 #include "ui/aura/test/test_windows.h" |
| 7 #include "ui/aura/window.h" | 9 #include "ui/aura/window.h" |
| 8 #include "ui/aura/window_event_dispatcher.h" | 10 #include "ui/aura/window_event_dispatcher.h" |
| 9 #include "ui/compositor/layer.h" | 11 #include "ui/compositor/layer.h" |
| 10 #include "ui/compositor/test/test_layers.h" | 12 #include "ui/compositor/test/test_layers.h" |
| 11 #include "ui/views/view.h" | 13 #include "ui/views/view.h" |
| 12 #include "ui/views/view_constants_aura.h" | 14 #include "ui/views/view_constants_aura.h" |
| 13 #include "ui/views/widget/widget.h" | 15 #include "ui/views/widget/widget.h" |
| 14 | 16 |
| (...skipping 30 matching lines...) Expand all Loading... |
| 45 names += (*it)->name(); | 47 names += (*it)->name(); |
| 46 } | 48 } |
| 47 return names; | 49 return names; |
| 48 } | 50 } |
| 49 | 51 |
| 50 typedef aura::test::AuraTestBase WindowReordererTest; | 52 typedef aura::test::AuraTestBase WindowReordererTest; |
| 51 | 53 |
| 52 // Test that views with layers and views with associated windows are reordered | 54 // Test that views with layers and views with associated windows are reordered |
| 53 // according to the view hierarchy. | 55 // according to the view hierarchy. |
| 54 TEST_F(WindowReordererTest, Basic) { | 56 TEST_F(WindowReordererTest, Basic) { |
| 55 scoped_ptr<Widget> parent(CreateControlWidget(root_window(), | 57 std::unique_ptr<Widget> parent( |
| 56 gfx::Rect(0, 0, 100, 100))); | 58 CreateControlWidget(root_window(), gfx::Rect(0, 0, 100, 100))); |
| 57 parent->Show(); | 59 parent->Show(); |
| 58 aura::Window* parent_window = parent->GetNativeWindow(); | 60 aura::Window* parent_window = parent->GetNativeWindow(); |
| 59 | 61 |
| 60 View* contents_view = new View(); | 62 View* contents_view = new View(); |
| 61 parent->SetContentsView(contents_view); | 63 parent->SetContentsView(contents_view); |
| 62 | 64 |
| 63 // 1) Test that layers for views and layers for windows associated to a host | 65 // 1) Test that layers for views and layers for windows associated to a host |
| 64 // view are stacked below the layers for any windows not associated to a host | 66 // view are stacked below the layers for any windows not associated to a host |
| 65 // view. | 67 // view. |
| 66 View* v = new View(); | 68 View* v = new View(); |
| 67 v->SetPaintToLayer(true); | 69 v->SetPaintToLayer(true); |
| 68 v->layer()->set_name("v"); | 70 v->layer()->set_name("v"); |
| 69 contents_view->AddChildView(v); | 71 contents_view->AddChildView(v); |
| 70 | 72 |
| 71 scoped_ptr<Widget> w1(CreateControlWidget(parent_window, | 73 std::unique_ptr<Widget> w1( |
| 72 gfx::Rect(0, 1, 100, 101))); | 74 CreateControlWidget(parent_window, gfx::Rect(0, 1, 100, 101))); |
| 73 SetWindowAndLayerName(w1->GetNativeView(), "w1"); | 75 SetWindowAndLayerName(w1->GetNativeView(), "w1"); |
| 74 w1->Show(); | 76 w1->Show(); |
| 75 scoped_ptr<Widget> w2(CreateControlWidget(parent_window, | 77 std::unique_ptr<Widget> w2( |
| 76 gfx::Rect(0, 2, 100, 102))); | 78 CreateControlWidget(parent_window, gfx::Rect(0, 2, 100, 102))); |
| 77 SetWindowAndLayerName(w2->GetNativeView(), "w2"); | 79 SetWindowAndLayerName(w2->GetNativeView(), "w2"); |
| 78 w2->Show(); | 80 w2->Show(); |
| 79 | 81 |
| 80 EXPECT_EQ("w1 w2", ChildWindowNamesAsString(*parent_window)); | 82 EXPECT_EQ("w1 w2", ChildWindowNamesAsString(*parent_window)); |
| 81 EXPECT_EQ("v w1 w2", | 83 EXPECT_EQ("v w1 w2", |
| 82 ui::test::ChildLayerNamesAsString(*parent_window->layer())); | 84 ui::test::ChildLayerNamesAsString(*parent_window->layer())); |
| 83 | 85 |
| 84 View* host_view2 = new View(); | 86 View* host_view2 = new View(); |
| 85 contents_view->AddChildView(host_view2); | 87 contents_view->AddChildView(host_view2); |
| 86 w2->GetNativeView()->SetProperty(kHostViewKey, host_view2); | 88 w2->GetNativeView()->SetProperty(kHostViewKey, host_view2); |
| (...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 123 // TODO: fix bug and remove this. | 125 // TODO: fix bug and remove this. |
| 124 parent->Close(); | 126 parent->Close(); |
| 125 } | 127 } |
| 126 | 128 |
| 127 // Test that different orderings of: | 129 // Test that different orderings of: |
| 128 // - adding a window to a parent widget | 130 // - adding a window to a parent widget |
| 129 // - adding a "host" view to a parent widget | 131 // - adding a "host" view to a parent widget |
| 130 // - associating the "host" view and window | 132 // - associating the "host" view and window |
| 131 // all correctly reorder the child windows and layers. | 133 // all correctly reorder the child windows and layers. |
| 132 TEST_F(WindowReordererTest, Association) { | 134 TEST_F(WindowReordererTest, Association) { |
| 133 scoped_ptr<Widget> parent(CreateControlWidget(root_window(), | 135 std::unique_ptr<Widget> parent( |
| 134 gfx::Rect(0, 0, 100, 100))); | 136 CreateControlWidget(root_window(), gfx::Rect(0, 0, 100, 100))); |
| 135 parent->Show(); | 137 parent->Show(); |
| 136 aura::Window* parent_window = parent->GetNativeWindow(); | 138 aura::Window* parent_window = parent->GetNativeWindow(); |
| 137 | 139 |
| 138 View* contents_view = new View(); | 140 View* contents_view = new View(); |
| 139 parent->SetContentsView(contents_view); | 141 parent->SetContentsView(contents_view); |
| 140 | 142 |
| 141 aura::Window* w1 = aura::test::CreateTestWindowWithId(0, | 143 aura::Window* w1 = aura::test::CreateTestWindowWithId(0, |
| 142 parent->GetNativeWindow()); | 144 parent->GetNativeWindow()); |
| 143 SetWindowAndLayerName(w1, "w1"); | 145 SetWindowAndLayerName(w1, "w1"); |
| 144 | 146 |
| (...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 184 // Work around for bug in NativeWidgetAura. | 186 // Work around for bug in NativeWidgetAura. |
| 185 // TODO: fix bug and remove this. | 187 // TODO: fix bug and remove this. |
| 186 parent->Close(); | 188 parent->Close(); |
| 187 } | 189 } |
| 188 | 190 |
| 189 // It is possible to associate a window to a view which has a parent layer | 191 // It is possible to associate a window to a view which has a parent layer |
| 190 // (other than the widget layer). In this case, the parent layer of the host | 192 // (other than the widget layer). In this case, the parent layer of the host |
| 191 // view and the parent layer of the associated window are different. Test that | 193 // view and the parent layer of the associated window are different. Test that |
| 192 // the layers and windows are properly reordered in this case. | 194 // the layers and windows are properly reordered in this case. |
| 193 TEST_F(WindowReordererTest, HostViewParentHasLayer) { | 195 TEST_F(WindowReordererTest, HostViewParentHasLayer) { |
| 194 scoped_ptr<Widget> parent(CreateControlWidget(root_window(), | 196 std::unique_ptr<Widget> parent( |
| 195 gfx::Rect(0, 0, 100, 100))); | 197 CreateControlWidget(root_window(), gfx::Rect(0, 0, 100, 100))); |
| 196 parent->Show(); | 198 parent->Show(); |
| 197 aura::Window* parent_window = parent->GetNativeWindow(); | 199 aura::Window* parent_window = parent->GetNativeWindow(); |
| 198 | 200 |
| 199 View* contents_view = new View(); | 201 View* contents_view = new View(); |
| 200 parent->SetContentsView(contents_view); | 202 parent->SetContentsView(contents_view); |
| 201 | 203 |
| 202 // Create the following view hierarchy. (*) denotes views which paint to a | 204 // Create the following view hierarchy. (*) denotes views which paint to a |
| 203 // layer. | 205 // layer. |
| 204 // | 206 // |
| 205 // contents_view | 207 // contents_view |
| 206 // +-- v1 | 208 // +-- v1 |
| 207 // +-- v11* | 209 // +-- v11* |
| 208 // +-- v12 (attached window) | 210 // +-- v12 (attached window) |
| 209 // +-- v13* | 211 // +-- v13* |
| 210 // +--v2* | 212 // +--v2* |
| 211 | 213 |
| 212 View* v1 = new View(); | 214 View* v1 = new View(); |
| 213 contents_view->AddChildView(v1); | 215 contents_view->AddChildView(v1); |
| 214 | 216 |
| 215 View* v11 = new View(); | 217 View* v11 = new View(); |
| 216 v11->SetPaintToLayer(true); | 218 v11->SetPaintToLayer(true); |
| 217 v11->layer()->set_name("v11"); | 219 v11->layer()->set_name("v11"); |
| 218 v1->AddChildView(v11); | 220 v1->AddChildView(v11); |
| 219 | 221 |
| 220 scoped_ptr<Widget> w(CreateControlWidget(parent_window, | 222 std::unique_ptr<Widget> w( |
| 221 gfx::Rect(0, 1, 100, 101))); | 223 CreateControlWidget(parent_window, gfx::Rect(0, 1, 100, 101))); |
| 222 SetWindowAndLayerName(w->GetNativeView(), "w"); | 224 SetWindowAndLayerName(w->GetNativeView(), "w"); |
| 223 w->Show(); | 225 w->Show(); |
| 224 | 226 |
| 225 View* v12 = new View(); | 227 View* v12 = new View(); |
| 226 v1->AddChildView(v12); | 228 v1->AddChildView(v12); |
| 227 w->GetNativeView()->SetProperty(kHostViewKey, v12); | 229 w->GetNativeView()->SetProperty(kHostViewKey, v12); |
| 228 | 230 |
| 229 View* v13 = new View(); | 231 View* v13 = new View(); |
| 230 v13->SetPaintToLayer(true); | 232 v13->SetPaintToLayer(true); |
| 231 v13->layer()->set_name("v13"); | 233 v13->layer()->set_name("v13"); |
| (...skipping 22 matching lines...) Expand all Loading... |
| 254 EXPECT_EQ("v1 v2 w", | 256 EXPECT_EQ("v1 v2 w", |
| 255 ui::test::ChildLayerNamesAsString(*parent_window->layer())); | 257 ui::test::ChildLayerNamesAsString(*parent_window->layer())); |
| 256 | 258 |
| 257 // Work around for bug in NativeWidgetAura. | 259 // Work around for bug in NativeWidgetAura. |
| 258 // TODO: fix bug and remove this. | 260 // TODO: fix bug and remove this. |
| 259 parent->Close(); | 261 parent->Close(); |
| 260 } | 262 } |
| 261 | 263 |
| 262 } // namespace | 264 } // namespace |
| 263 } // namespace views | 265 } // namespace views |
| OLD | NEW |