OLD | NEW |
1 // Copyright 2014 The Chromium Authors. All rights reserved. | 1 // Copyright 2014 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 "ui/views/view.h" | 5 #include "ui/views/view.h" |
6 | 6 |
7 #include "base/memory/scoped_ptr.h" | 7 #include "base/memory/scoped_ptr.h" |
8 #include "ui/aura/window.h" | 8 #include "ui/aura/window.h" |
9 #include "ui/compositor/layer.h" | 9 #include "ui/compositor/layer.h" |
10 #include "ui/compositor/layer_tree_owner.h" | 10 #include "ui/compositor/layer_tree_owner.h" |
(...skipping 93 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
104 | 104 |
105 // Test the initial order of the layers. | 105 // Test the initial order of the layers. |
106 ui::Layer* w1_layer = w1->GetNativeView()->layer(); | 106 ui::Layer* w1_layer = w1->GetNativeView()->layer(); |
107 ASSERT_EQ("w1", w1_layer->name()); | 107 ASSERT_EQ("w1", w1_layer->name()); |
108 ASSERT_EQ("v1 v4 w2 v7", ui::test::ChildLayerNamesAsString(*w1_layer)); | 108 ASSERT_EQ("v1 v4 w2 v7", ui::test::ChildLayerNamesAsString(*w1_layer)); |
109 ui::Layer* w2_layer = w1_layer->children()[2]; | 109 ui::Layer* w2_layer = w1_layer->children()[2]; |
110 ASSERT_EQ("v5", ui::test::ChildLayerNamesAsString(*w2_layer)); | 110 ASSERT_EQ("v5", ui::test::ChildLayerNamesAsString(*w2_layer)); |
111 ui::Layer* v5_layer = w2_layer->children()[0]; | 111 ui::Layer* v5_layer = w2_layer->children()[0]; |
112 ASSERT_EQ("v6", ui::test::ChildLayerNamesAsString(*v5_layer)); | 112 ASSERT_EQ("v6", ui::test::ChildLayerNamesAsString(*v5_layer)); |
113 | 113 |
| 114 // Verify the value of Widget::GetRootLayers(). It should only include layers |
| 115 // from layer-backed Views descended from the Widget's root View. |
| 116 std::vector<ui::Layer*> old_w1_root_sublayers = w1->GetRootLayers(); |
| 117 ASSERT_EQ(3u, old_w1_root_sublayers.size()); |
| 118 EXPECT_EQ(v1_layer, old_w1_root_sublayers[0]); |
| 119 EXPECT_EQ(v4_layer, old_w1_root_sublayers[1]); |
| 120 EXPECT_EQ(v7_layer, old_w1_root_sublayers[2]); |
| 121 |
114 { | 122 { |
115 scoped_ptr<ui::LayerTreeOwner> cloned_owner( | 123 scoped_ptr<ui::LayerTreeOwner> cloned_owner( |
116 wm::RecreateLayers(w1->GetNativeView())); | 124 wm::RecreateLayers(w1->GetNativeView())); |
117 EXPECT_EQ(w1_layer, cloned_owner->root()); | 125 EXPECT_EQ(w1_layer, cloned_owner->root()); |
118 EXPECT_NE(w1_layer, w1->GetNativeView()->layer()); | 126 EXPECT_NE(w1_layer, w1->GetNativeView()->layer()); |
119 | 127 |
120 // The old layers should still exist and have the same hierarchy. | 128 // The old layers should still exist and have the same hierarchy. |
121 ASSERT_EQ("w1", w1_layer->name()); | 129 ASSERT_EQ("w1", w1_layer->name()); |
122 ASSERT_EQ("v1 v4 w2 v7", ui::test::ChildLayerNamesAsString(*w1_layer)); | 130 ASSERT_EQ("v1 v4 w2 v7", ui::test::ChildLayerNamesAsString(*w1_layer)); |
123 ASSERT_EQ("v5", ui::test::ChildLayerNamesAsString(*w2_layer)); | 131 ASSERT_EQ("v5", ui::test::ChildLayerNamesAsString(*w2_layer)); |
(...skipping 11 matching lines...) Expand all Loading... |
135 | 143 |
136 ASSERT_EQ(1u, v5_layer->children().size()); | 144 ASSERT_EQ(1u, v5_layer->children().size()); |
137 EXPECT_EQ(v6_layer, v5_layer->children()[0]); | 145 EXPECT_EQ(v6_layer, v5_layer->children()[0]); |
138 | 146 |
139 ASSERT_EQ(0u, v6_layer->children().size()); | 147 ASSERT_EQ(0u, v6_layer->children().size()); |
140 | 148 |
141 EXPECT_EQ(2u, v7_layer->children().size()); | 149 EXPECT_EQ(2u, v7_layer->children().size()); |
142 EXPECT_EQ(v8_layer, v7_layer->children()[0]); | 150 EXPECT_EQ(v8_layer, v7_layer->children()[0]); |
143 EXPECT_EQ(v9_layer, v7_layer->children()[1]); | 151 EXPECT_EQ(v9_layer, v7_layer->children()[1]); |
144 | 152 |
145 // The cloned layers should have the same hierarchy as old. | 153 // The cloned layers should have the same hierarchy as old, but with new |
| 154 // ui::Layer instances. |
146 ui::Layer* w1_new_layer = w1->GetNativeView()->layer(); | 155 ui::Layer* w1_new_layer = w1->GetNativeView()->layer(); |
147 EXPECT_EQ("w1", w1_new_layer->name()); | 156 EXPECT_EQ("w1", w1_new_layer->name()); |
| 157 EXPECT_NE(w1_layer, w1_new_layer); |
| 158 ui::Layer* v1_new_layer = w1_new_layer->children()[0]; |
| 159 ui::Layer* v4_new_layer = w1_new_layer->children()[1]; |
148 ASSERT_EQ("v1 v4 w2 v7", ui::test::ChildLayerNamesAsString(*w1_new_layer)); | 160 ASSERT_EQ("v1 v4 w2 v7", ui::test::ChildLayerNamesAsString(*w1_new_layer)); |
| 161 EXPECT_NE(v1_layer, v1_new_layer); |
| 162 EXPECT_NE(v4_layer, v4_new_layer); |
149 ui::Layer* w2_new_layer = w1_new_layer->children()[2]; | 163 ui::Layer* w2_new_layer = w1_new_layer->children()[2]; |
150 ASSERT_EQ("v5", ui::test::ChildLayerNamesAsString(*w2_new_layer)); | 164 ASSERT_EQ("v5", ui::test::ChildLayerNamesAsString(*w2_new_layer)); |
151 ui::Layer* v5_new_layer = w2_new_layer->children()[0]; | 165 ui::Layer* v5_new_layer = w2_new_layer->children()[0]; |
152 ASSERT_EQ("v6", ui::test::ChildLayerNamesAsString(*v5_new_layer)); | 166 ASSERT_EQ("v6", ui::test::ChildLayerNamesAsString(*v5_new_layer)); |
153 ui::Layer* v7_new_layer = w1_new_layer->children()[3]; | 167 ui::Layer* v7_new_layer = w1_new_layer->children()[3]; |
154 ASSERT_EQ("v8 v9", ui::test::ChildLayerNamesAsString(*v7_new_layer)); | 168 ASSERT_EQ("v8 v9", ui::test::ChildLayerNamesAsString(*v7_new_layer)); |
| 169 EXPECT_NE(v7_layer, v7_new_layer); |
| 170 |
| 171 // Ensure Widget::GetRootLayers() is correctly updated. |
| 172 std::vector<ui::Layer*> new_w1_root_sublayers = w1->GetRootLayers(); |
| 173 ASSERT_EQ(3u, new_w1_root_sublayers.size()); |
| 174 EXPECT_EQ(v1_new_layer, new_w1_root_sublayers[0]); |
| 175 EXPECT_EQ(v4_new_layer, new_w1_root_sublayers[1]); |
| 176 EXPECT_EQ(v7_new_layer, new_w1_root_sublayers[2]); |
155 } | 177 } |
156 w1->CloseNow(); | 178 w1->CloseNow(); |
157 } | 179 } |
158 | 180 |
159 } // namespace views | 181 } // namespace views |
OLD | NEW |