OLD | NEW |
1 // Copyright 2015 The Chromium Authors. All rights reserved. | 1 // Copyright 2015 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 "cc/layers/layer_proto_converter.h" | 5 #include "cc/layers/layer_proto_converter.h" |
6 | 6 |
7 #include "cc/layers/empty_content_layer_client.h" | 7 #include "cc/layers/empty_content_layer_client.h" |
8 #include "cc/layers/heads_up_display_layer.h" | 8 #include "cc/layers/heads_up_display_layer.h" |
9 #include "cc/layers/layer.h" | 9 #include "cc/layers/layer.h" |
10 #include "cc/layers/layer_settings.h" | 10 #include "cc/layers/layer_settings.h" |
(...skipping 171 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
182 scoped_refptr<Layer> layer_src_b_replica = Layer::Create(LayerSettings()); | 182 scoped_refptr<Layer> layer_src_b_replica = Layer::Create(LayerSettings()); |
183 scoped_refptr<Layer> layer_src_c = Layer::Create(LayerSettings()); | 183 scoped_refptr<Layer> layer_src_c = Layer::Create(LayerSettings()); |
184 scoped_refptr<Layer> layer_src_d = Layer::Create(LayerSettings()); | 184 scoped_refptr<Layer> layer_src_d = Layer::Create(LayerSettings()); |
185 layer_src_root->AddChild(layer_src_a); | 185 layer_src_root->AddChild(layer_src_a); |
186 layer_src_root->AddChild(layer_src_b); | 186 layer_src_root->AddChild(layer_src_b); |
187 layer_src_a->AddChild(layer_src_c); | 187 layer_src_a->AddChild(layer_src_c); |
188 layer_src_b->AddChild(layer_src_d); | 188 layer_src_b->AddChild(layer_src_d); |
189 layer_src_b->SetMaskLayer(layer_src_b_mask.get()); | 189 layer_src_b->SetMaskLayer(layer_src_b_mask.get()); |
190 layer_src_b->SetReplicaLayer(layer_src_b_replica.get()); | 190 layer_src_b->SetReplicaLayer(layer_src_b_replica.get()); |
191 | 191 |
| 192 proto::LayerUpdate layer_update; |
| 193 LayerProtoConverter::SerializeLayerProperties(layer_src_root.get(), |
| 194 &layer_update); |
| 195 |
| 196 // All flags for pushing properties should have been cleared. |
| 197 EXPECT_FALSE(layer_src_root->needs_push_properties()); |
| 198 EXPECT_FALSE(layer_src_root->descendant_needs_push_properties()); |
| 199 EXPECT_FALSE(layer_src_a->needs_push_properties()); |
| 200 EXPECT_FALSE(layer_src_a->descendant_needs_push_properties()); |
| 201 EXPECT_FALSE(layer_src_b->needs_push_properties()); |
| 202 EXPECT_FALSE(layer_src_b->descendant_needs_push_properties()); |
| 203 EXPECT_FALSE(layer_src_b_mask->needs_push_properties()); |
| 204 EXPECT_FALSE(layer_src_b_mask->descendant_needs_push_properties()); |
| 205 EXPECT_FALSE(layer_src_b_replica->needs_push_properties()); |
| 206 EXPECT_FALSE(layer_src_b_replica->descendant_needs_push_properties()); |
| 207 EXPECT_FALSE(layer_src_c->needs_push_properties()); |
| 208 EXPECT_FALSE(layer_src_c->descendant_needs_push_properties()); |
| 209 EXPECT_FALSE(layer_src_d->needs_push_properties()); |
| 210 EXPECT_FALSE(layer_src_d->descendant_needs_push_properties()); |
| 211 |
| 212 // AddChild changes the stacking order of child and it needs to push |
| 213 // properties. |
| 214 ASSERT_EQ(5, layer_update.layers_size()); |
| 215 EXPECT_EQ(layer_src_root->id(), layer_update.layers(0).id()); |
| 216 proto::LayerProperties dest_root = layer_update.layers(0); |
| 217 EXPECT_EQ(layer_src_a->id(), layer_update.layers(1).id()); |
| 218 proto::LayerProperties dest_a = layer_update.layers(1); |
| 219 EXPECT_EQ(layer_src_c->id(), layer_update.layers(2).id()); |
| 220 proto::LayerProperties dest_c = layer_update.layers(2); |
| 221 EXPECT_EQ(layer_src_b->id(), layer_update.layers(3).id()); |
| 222 proto::LayerProperties dest_b = layer_update.layers(3); |
| 223 EXPECT_EQ(layer_src_d->id(), layer_update.layers(4).id()); |
| 224 proto::LayerProperties dest_d = layer_update.layers(4); |
| 225 layer_update.Clear(); |
| 226 |
192 layer_src_a->SetNeedsPushProperties(); | 227 layer_src_a->SetNeedsPushProperties(); |
193 layer_src_b->SetNeedsPushProperties(); | 228 layer_src_b->SetNeedsPushProperties(); |
194 layer_src_b_mask->SetNeedsPushProperties(); | 229 layer_src_b_mask->SetNeedsPushProperties(); |
195 layer_src_d->SetNeedsPushProperties(); | 230 layer_src_d->SetNeedsPushProperties(); |
196 | 231 |
197 proto::LayerUpdate layer_update; | |
198 LayerProtoConverter::SerializeLayerProperties(layer_src_root.get(), | 232 LayerProtoConverter::SerializeLayerProperties(layer_src_root.get(), |
199 &layer_update); | 233 &layer_update); |
200 | 234 |
201 // All flags for pushing properties should have been cleared. | 235 // All flags for pushing properties should have been cleared. |
202 EXPECT_FALSE(layer_src_root->needs_push_properties()); | 236 EXPECT_FALSE(layer_src_root->needs_push_properties()); |
203 EXPECT_FALSE(layer_src_root->descendant_needs_push_properties()); | 237 EXPECT_FALSE(layer_src_root->descendant_needs_push_properties()); |
204 EXPECT_FALSE(layer_src_a->needs_push_properties()); | 238 EXPECT_FALSE(layer_src_a->needs_push_properties()); |
205 EXPECT_FALSE(layer_src_a->descendant_needs_push_properties()); | 239 EXPECT_FALSE(layer_src_a->descendant_needs_push_properties()); |
206 EXPECT_FALSE(layer_src_b->needs_push_properties()); | 240 EXPECT_FALSE(layer_src_b->needs_push_properties()); |
207 EXPECT_FALSE(layer_src_b->descendant_needs_push_properties()); | 241 EXPECT_FALSE(layer_src_b->descendant_needs_push_properties()); |
208 EXPECT_FALSE(layer_src_b_mask->needs_push_properties()); | 242 EXPECT_FALSE(layer_src_b_mask->needs_push_properties()); |
209 EXPECT_FALSE(layer_src_b_mask->descendant_needs_push_properties()); | 243 EXPECT_FALSE(layer_src_b_mask->descendant_needs_push_properties()); |
210 EXPECT_FALSE(layer_src_b_replica->needs_push_properties()); | 244 EXPECT_FALSE(layer_src_b_replica->needs_push_properties()); |
211 EXPECT_FALSE(layer_src_b_replica->descendant_needs_push_properties()); | 245 EXPECT_FALSE(layer_src_b_replica->descendant_needs_push_properties()); |
212 EXPECT_FALSE(layer_src_c->needs_push_properties()); | 246 EXPECT_FALSE(layer_src_c->needs_push_properties()); |
213 EXPECT_FALSE(layer_src_c->descendant_needs_push_properties()); | 247 EXPECT_FALSE(layer_src_c->descendant_needs_push_properties()); |
214 EXPECT_FALSE(layer_src_d->needs_push_properties()); | 248 EXPECT_FALSE(layer_src_d->needs_push_properties()); |
215 EXPECT_FALSE(layer_src_d->descendant_needs_push_properties()); | 249 EXPECT_FALSE(layer_src_d->descendant_needs_push_properties()); |
216 | 250 |
217 // Only 5 of the layers should have been serialized. | 251 // Only 5 of the layers should have been serialized. |
218 ASSERT_EQ(5, layer_update.layers_size()); | 252 ASSERT_EQ(5, layer_update.layers_size()); |
219 EXPECT_EQ(layer_src_root->id(), layer_update.layers(0).id()); | 253 EXPECT_EQ(layer_src_root->id(), layer_update.layers(0).id()); |
220 proto::LayerProperties dest_root = layer_update.layers(0); | 254 dest_root = layer_update.layers(0); |
221 EXPECT_EQ(layer_src_a->id(), layer_update.layers(1).id()); | 255 EXPECT_EQ(layer_src_a->id(), layer_update.layers(1).id()); |
222 proto::LayerProperties dest_a = layer_update.layers(1); | 256 dest_a = layer_update.layers(1); |
223 EXPECT_EQ(layer_src_b->id(), layer_update.layers(2).id()); | 257 EXPECT_EQ(layer_src_b->id(), layer_update.layers(2).id()); |
224 proto::LayerProperties dest_b = layer_update.layers(2); | 258 dest_b = layer_update.layers(2); |
225 EXPECT_EQ(layer_src_d->id(), layer_update.layers(3).id()); | 259 EXPECT_EQ(layer_src_d->id(), layer_update.layers(3).id()); |
226 proto::LayerProperties dest_d = layer_update.layers(3); | 260 dest_d = layer_update.layers(3); |
227 EXPECT_EQ(layer_src_b_mask->id(), layer_update.layers(4).id()); | 261 EXPECT_EQ(layer_src_b_mask->id(), layer_update.layers(4).id()); |
228 proto::LayerProperties dest_b_mask = layer_update.layers(4); | 262 proto::LayerProperties dest_b_mask = layer_update.layers(4); |
229 | 263 |
230 // Ensure the properties and dependants metadata is correctly serialized. | 264 // Ensure the properties and dependants metadata is correctly serialized. |
231 EXPECT_FALSE(dest_root.needs_push_properties()); | 265 EXPECT_FALSE(dest_root.needs_push_properties()); |
232 EXPECT_EQ(2, dest_root.num_dependents_need_push_properties()); | 266 EXPECT_EQ(2, dest_root.num_dependents_need_push_properties()); |
233 EXPECT_FALSE(dest_root.has_base()); | 267 EXPECT_FALSE(dest_root.has_base()); |
234 | 268 |
235 EXPECT_TRUE(dest_a.needs_push_properties()); | 269 EXPECT_TRUE(dest_a.needs_push_properties()); |
236 EXPECT_EQ(0, dest_a.num_dependents_need_push_properties()); | 270 EXPECT_EQ(0, dest_a.num_dependents_need_push_properties()); |
(...skipping 24 matching lines...) Expand all Loading... |
261 Layer b also has a mask layer. | 295 Layer b also has a mask layer. |
262 */ | 296 */ |
263 scoped_refptr<Layer> layer_src_root = Layer::Create(LayerSettings()); | 297 scoped_refptr<Layer> layer_src_root = Layer::Create(LayerSettings()); |
264 scoped_refptr<Layer> layer_src_b = Layer::Create(LayerSettings()); | 298 scoped_refptr<Layer> layer_src_b = Layer::Create(LayerSettings()); |
265 scoped_refptr<Layer> layer_src_b_mask = Layer::Create(LayerSettings()); | 299 scoped_refptr<Layer> layer_src_b_mask = Layer::Create(LayerSettings()); |
266 scoped_refptr<Layer> layer_src_c = Layer::Create(LayerSettings()); | 300 scoped_refptr<Layer> layer_src_c = Layer::Create(LayerSettings()); |
267 layer_src_root->AddChild(layer_src_b); | 301 layer_src_root->AddChild(layer_src_b); |
268 layer_src_b->AddChild(layer_src_c); | 302 layer_src_b->AddChild(layer_src_c); |
269 layer_src_b->SetMaskLayer(layer_src_b_mask.get()); | 303 layer_src_b->SetMaskLayer(layer_src_b_mask.get()); |
270 | 304 |
| 305 proto::LayerUpdate layer_update; |
| 306 LayerProtoConverter::SerializeLayerProperties(layer_src_root.get(), |
| 307 &layer_update); |
| 308 // AddChild changes stacking order of child and we need to push proeprties of |
| 309 // child. |
| 310 ASSERT_EQ(3, layer_update.layers_size()); |
| 311 layer_update.Clear(); |
| 312 |
271 layer_src_b->SetNeedsPushProperties(); | 313 layer_src_b->SetNeedsPushProperties(); |
272 layer_src_b_mask->SetNeedsPushProperties(); | 314 layer_src_b_mask->SetNeedsPushProperties(); |
273 | 315 |
274 proto::LayerUpdate layer_update; | |
275 LayerProtoConverter::SerializeLayerProperties(layer_src_root.get(), | 316 LayerProtoConverter::SerializeLayerProperties(layer_src_root.get(), |
276 &layer_update); | 317 &layer_update); |
277 | 318 |
278 // All flags for pushing properties should have been cleared. | 319 // All flags for pushing properties should have been cleared. |
279 EXPECT_FALSE(layer_src_root->needs_push_properties()); | 320 EXPECT_FALSE(layer_src_root->needs_push_properties()); |
280 EXPECT_FALSE(layer_src_root->descendant_needs_push_properties()); | 321 EXPECT_FALSE(layer_src_root->descendant_needs_push_properties()); |
281 EXPECT_FALSE(layer_src_b->needs_push_properties()); | 322 EXPECT_FALSE(layer_src_b->needs_push_properties()); |
282 EXPECT_FALSE(layer_src_b->descendant_needs_push_properties()); | 323 EXPECT_FALSE(layer_src_b->descendant_needs_push_properties()); |
283 EXPECT_FALSE(layer_src_b_mask->needs_push_properties()); | 324 EXPECT_FALSE(layer_src_b_mask->needs_push_properties()); |
284 EXPECT_FALSE(layer_src_b_mask->descendant_needs_push_properties()); | 325 EXPECT_FALSE(layer_src_b_mask->descendant_needs_push_properties()); |
(...skipping 146 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
431 | 472 |
432 // Check that the layer type is equal by using the type this layer would | 473 // Check that the layer type is equal by using the type this layer would |
433 // serialize to. | 474 // serialize to. |
434 proto::LayerNode layer_node; | 475 proto::LayerNode layer_node; |
435 new_root->SetTypeForProtoSerialization(&layer_node); | 476 new_root->SetTypeForProtoSerialization(&layer_node); |
436 EXPECT_EQ(proto::LayerType::HEADS_UP_DISPLAY_LAYER, layer_node.type()); | 477 EXPECT_EQ(proto::LayerType::HEADS_UP_DISPLAY_LAYER, layer_node.type()); |
437 } | 478 } |
438 | 479 |
439 } // namespace | 480 } // namespace |
440 } // namespace cc | 481 } // namespace cc |
OLD | NEW |