OLD | NEW |
1 // Copyright 2011 The Chromium Authors. All rights reserved. | 1 // Copyright 2011 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/trees/tree_synchronizer.h" | 5 #include "cc/trees/tree_synchronizer.h" |
6 | 6 |
7 #include <algorithm> | 7 #include <algorithm> |
8 #include <set> | 8 #include <set> |
9 #include <vector> | 9 #include <vector> |
10 | 10 |
(...skipping 184 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
195 | 195 |
196 protected: | 196 protected: |
197 FakeLayerTreeHostClient client_; | 197 FakeLayerTreeHostClient client_; |
198 scoped_ptr<FakeLayerTreeHost> host_; | 198 scoped_ptr<FakeLayerTreeHost> host_; |
199 }; | 199 }; |
200 | 200 |
201 // Attempts to synchronizes a null tree. This should not crash, and should | 201 // Attempts to synchronizes a null tree. This should not crash, and should |
202 // return a null tree. | 202 // return a null tree. |
203 TEST_F(TreeSynchronizerTest, SyncNullTree) { | 203 TEST_F(TreeSynchronizerTest, SyncNullTree) { |
204 scoped_ptr<LayerImpl> layer_impl_tree_root = | 204 scoped_ptr<LayerImpl> layer_impl_tree_root = |
205 TreeSynchronizer::SynchronizeTrees(static_cast<Layer*>(NULL), | 205 TreeSynchronizer::SynchronizeTrees( |
206 scoped_ptr<LayerImpl>(), | 206 static_cast<Layer*>(NULL), nullptr, host_->active_tree()); |
207 host_->active_tree()); | |
208 | 207 |
209 EXPECT_TRUE(!layer_impl_tree_root.get()); | 208 EXPECT_TRUE(!layer_impl_tree_root.get()); |
210 } | 209 } |
211 | 210 |
212 // Constructs a very simple tree and synchronizes it without trying to reuse any | 211 // Constructs a very simple tree and synchronizes it without trying to reuse any |
213 // preexisting layers. | 212 // preexisting layers. |
214 TEST_F(TreeSynchronizerTest, SyncSimpleTreeFromEmpty) { | 213 TEST_F(TreeSynchronizerTest, SyncSimpleTreeFromEmpty) { |
215 scoped_refptr<Layer> layer_tree_root = Layer::Create(); | 214 scoped_refptr<Layer> layer_tree_root = Layer::Create(); |
216 layer_tree_root->AddChild(Layer::Create()); | 215 layer_tree_root->AddChild(Layer::Create()); |
217 layer_tree_root->AddChild(Layer::Create()); | 216 layer_tree_root->AddChild(Layer::Create()); |
218 | 217 |
219 host_->SetRootLayer(layer_tree_root); | 218 host_->SetRootLayer(layer_tree_root); |
220 | 219 |
221 scoped_ptr<LayerImpl> layer_impl_tree_root = | 220 scoped_ptr<LayerImpl> layer_impl_tree_root = |
222 TreeSynchronizer::SynchronizeTrees(layer_tree_root.get(), | 221 TreeSynchronizer::SynchronizeTrees( |
223 scoped_ptr<LayerImpl>(), | 222 layer_tree_root.get(), nullptr, host_->active_tree()); |
224 host_->active_tree()); | |
225 | 223 |
226 ExpectTreesAreIdentical(layer_tree_root.get(), | 224 ExpectTreesAreIdentical(layer_tree_root.get(), |
227 layer_impl_tree_root.get(), | 225 layer_impl_tree_root.get(), |
228 host_->active_tree()); | 226 host_->active_tree()); |
229 } | 227 } |
230 | 228 |
231 // Constructs a very simple tree and synchronizes it attempting to reuse some | 229 // Constructs a very simple tree and synchronizes it attempting to reuse some |
232 // layers | 230 // layers |
233 TEST_F(TreeSynchronizerTest, SyncSimpleTreeReusingLayers) { | 231 TEST_F(TreeSynchronizerTest, SyncSimpleTreeReusingLayers) { |
234 std::vector<int> layer_impl_destruction_list; | 232 std::vector<int> layer_impl_destruction_list; |
235 | 233 |
236 scoped_refptr<Layer> layer_tree_root = | 234 scoped_refptr<Layer> layer_tree_root = |
237 MockLayer::Create(&layer_impl_destruction_list); | 235 MockLayer::Create(&layer_impl_destruction_list); |
238 layer_tree_root->AddChild(MockLayer::Create(&layer_impl_destruction_list)); | 236 layer_tree_root->AddChild(MockLayer::Create(&layer_impl_destruction_list)); |
239 layer_tree_root->AddChild(MockLayer::Create(&layer_impl_destruction_list)); | 237 layer_tree_root->AddChild(MockLayer::Create(&layer_impl_destruction_list)); |
240 | 238 |
241 host_->SetRootLayer(layer_tree_root); | 239 host_->SetRootLayer(layer_tree_root); |
242 | 240 |
243 scoped_ptr<LayerImpl> layer_impl_tree_root = | 241 scoped_ptr<LayerImpl> layer_impl_tree_root = |
244 TreeSynchronizer::SynchronizeTrees(layer_tree_root.get(), | 242 TreeSynchronizer::SynchronizeTrees( |
245 scoped_ptr<LayerImpl>(), | 243 layer_tree_root.get(), nullptr, host_->active_tree()); |
246 host_->active_tree()); | |
247 ExpectTreesAreIdentical(layer_tree_root.get(), | 244 ExpectTreesAreIdentical(layer_tree_root.get(), |
248 layer_impl_tree_root.get(), | 245 layer_impl_tree_root.get(), |
249 host_->active_tree()); | 246 host_->active_tree()); |
250 | 247 |
251 // We have to push properties to pick up the destruction list pointer. | 248 // We have to push properties to pick up the destruction list pointer. |
252 TreeSynchronizer::PushProperties(layer_tree_root.get(), | 249 TreeSynchronizer::PushProperties(layer_tree_root.get(), |
253 layer_impl_tree_root.get()); | 250 layer_impl_tree_root.get()); |
254 | 251 |
255 // Add a new layer to the Layer side | 252 // Add a new layer to the Layer side |
256 layer_tree_root->children()[0]-> | 253 layer_tree_root->children()[0]-> |
(...skipping 25 matching lines...) Expand all Loading... |
282 // though we remove it to set up the intended scenario. | 279 // though we remove it to set up the intended scenario. |
283 scoped_refptr<Layer> layer_tree_root = | 280 scoped_refptr<Layer> layer_tree_root = |
284 MockLayer::Create(&layer_impl_destruction_list); | 281 MockLayer::Create(&layer_impl_destruction_list); |
285 scoped_refptr<Layer> child2 = MockLayer::Create(&layer_impl_destruction_list); | 282 scoped_refptr<Layer> child2 = MockLayer::Create(&layer_impl_destruction_list); |
286 layer_tree_root->AddChild(MockLayer::Create(&layer_impl_destruction_list)); | 283 layer_tree_root->AddChild(MockLayer::Create(&layer_impl_destruction_list)); |
287 layer_tree_root->AddChild(child2); | 284 layer_tree_root->AddChild(child2); |
288 | 285 |
289 host_->SetRootLayer(layer_tree_root); | 286 host_->SetRootLayer(layer_tree_root); |
290 | 287 |
291 scoped_ptr<LayerImpl> layer_impl_tree_root = | 288 scoped_ptr<LayerImpl> layer_impl_tree_root = |
292 TreeSynchronizer::SynchronizeTrees(layer_tree_root.get(), | 289 TreeSynchronizer::SynchronizeTrees( |
293 scoped_ptr<LayerImpl>(), | 290 layer_tree_root.get(), nullptr, host_->active_tree()); |
294 host_->active_tree()); | |
295 ExpectTreesAreIdentical(layer_tree_root.get(), | 291 ExpectTreesAreIdentical(layer_tree_root.get(), |
296 layer_impl_tree_root.get(), | 292 layer_impl_tree_root.get(), |
297 host_->active_tree()); | 293 host_->active_tree()); |
298 | 294 |
299 // We have to push properties to pick up the destruction list pointer. | 295 // We have to push properties to pick up the destruction list pointer. |
300 TreeSynchronizer::PushProperties(layer_tree_root.get(), | 296 TreeSynchronizer::PushProperties(layer_tree_root.get(), |
301 layer_impl_tree_root.get()); | 297 layer_impl_tree_root.get()); |
302 | 298 |
303 layer_impl_tree_root->ResetAllChangeTrackingForSubtree(); | 299 layer_impl_tree_root->ResetAllChangeTrackingForSubtree(); |
304 | 300 |
(...skipping 30 matching lines...) Expand all Loading... |
335 layer_tree_root->SetPosition(root_position); | 331 layer_tree_root->SetPosition(root_position); |
336 | 332 |
337 float first_child_opacity = 0.25f; | 333 float first_child_opacity = 0.25f; |
338 layer_tree_root->children()[0]->SetOpacity(first_child_opacity); | 334 layer_tree_root->children()[0]->SetOpacity(first_child_opacity); |
339 | 335 |
340 gfx::Size second_child_bounds = gfx::Size(25, 53); | 336 gfx::Size second_child_bounds = gfx::Size(25, 53); |
341 layer_tree_root->children()[1]->SetBounds(second_child_bounds); | 337 layer_tree_root->children()[1]->SetBounds(second_child_bounds); |
342 layer_tree_root->children()[1]->SavePaintProperties(); | 338 layer_tree_root->children()[1]->SavePaintProperties(); |
343 | 339 |
344 scoped_ptr<LayerImpl> layer_impl_tree_root = | 340 scoped_ptr<LayerImpl> layer_impl_tree_root = |
345 TreeSynchronizer::SynchronizeTrees(layer_tree_root.get(), | 341 TreeSynchronizer::SynchronizeTrees( |
346 scoped_ptr<LayerImpl>(), | 342 layer_tree_root.get(), nullptr, host_->active_tree()); |
347 host_->active_tree()); | |
348 ExpectTreesAreIdentical(layer_tree_root.get(), | 343 ExpectTreesAreIdentical(layer_tree_root.get(), |
349 layer_impl_tree_root.get(), | 344 layer_impl_tree_root.get(), |
350 host_->active_tree()); | 345 host_->active_tree()); |
351 | 346 |
352 TreeSynchronizer::PushProperties(layer_tree_root.get(), | 347 TreeSynchronizer::PushProperties(layer_tree_root.get(), |
353 layer_impl_tree_root.get()); | 348 layer_impl_tree_root.get()); |
354 | 349 |
355 // Check that the property values we set on the Layer tree are reflected in | 350 // Check that the property values we set on the Layer tree are reflected in |
356 // the LayerImpl tree. | 351 // the LayerImpl tree. |
357 gfx::PointF root_layer_impl_position = layer_impl_tree_root->position(); | 352 gfx::PointF root_layer_impl_position = layer_impl_tree_root->position(); |
(...skipping 28 matching lines...) Expand all Loading... |
386 scoped_refptr<Layer> layer_b = layer_a->children()[0].get(); | 381 scoped_refptr<Layer> layer_b = layer_a->children()[0].get(); |
387 layer_b->AddChild(MockLayer::Create(&layer_impl_destruction_list)); | 382 layer_b->AddChild(MockLayer::Create(&layer_impl_destruction_list)); |
388 | 383 |
389 scoped_refptr<Layer> layer_c = layer_b->children()[0].get(); | 384 scoped_refptr<Layer> layer_c = layer_b->children()[0].get(); |
390 layer_b->AddChild(MockLayer::Create(&layer_impl_destruction_list)); | 385 layer_b->AddChild(MockLayer::Create(&layer_impl_destruction_list)); |
391 scoped_refptr<Layer> layer_d = layer_b->children()[1].get(); | 386 scoped_refptr<Layer> layer_d = layer_b->children()[1].get(); |
392 | 387 |
393 host_->SetRootLayer(layer_tree_root); | 388 host_->SetRootLayer(layer_tree_root); |
394 | 389 |
395 scoped_ptr<LayerImpl> layer_impl_tree_root = | 390 scoped_ptr<LayerImpl> layer_impl_tree_root = |
396 TreeSynchronizer::SynchronizeTrees(layer_tree_root.get(), | 391 TreeSynchronizer::SynchronizeTrees( |
397 scoped_ptr<LayerImpl>(), | 392 layer_tree_root.get(), nullptr, host_->active_tree()); |
398 host_->active_tree()); | |
399 ExpectTreesAreIdentical(layer_tree_root.get(), | 393 ExpectTreesAreIdentical(layer_tree_root.get(), |
400 layer_impl_tree_root.get(), | 394 layer_impl_tree_root.get(), |
401 host_->active_tree()); | 395 host_->active_tree()); |
402 | 396 |
403 // We have to push properties to pick up the destruction list pointer. | 397 // We have to push properties to pick up the destruction list pointer. |
404 TreeSynchronizer::PushProperties(layer_tree_root.get(), | 398 TreeSynchronizer::PushProperties(layer_tree_root.get(), |
405 layer_impl_tree_root.get()); | 399 layer_impl_tree_root.get()); |
406 | 400 |
407 // Now restructure the tree to look like this: | 401 // Now restructure the tree to look like this: |
408 // root --- D ---+--- A | 402 // root --- D ---+--- A |
(...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
443 old_layer_tree_root->AddChild( | 437 old_layer_tree_root->AddChild( |
444 MockLayer::Create(&layer_impl_destruction_list)); | 438 MockLayer::Create(&layer_impl_destruction_list)); |
445 | 439 |
446 host_->SetRootLayer(old_layer_tree_root); | 440 host_->SetRootLayer(old_layer_tree_root); |
447 | 441 |
448 int old_tree_root_layer_id = old_layer_tree_root->id(); | 442 int old_tree_root_layer_id = old_layer_tree_root->id(); |
449 int old_tree_first_child_layer_id = old_layer_tree_root->children()[0]->id(); | 443 int old_tree_first_child_layer_id = old_layer_tree_root->children()[0]->id(); |
450 int old_tree_second_child_layer_id = old_layer_tree_root->children()[1]->id(); | 444 int old_tree_second_child_layer_id = old_layer_tree_root->children()[1]->id(); |
451 | 445 |
452 scoped_ptr<LayerImpl> layer_impl_tree_root = | 446 scoped_ptr<LayerImpl> layer_impl_tree_root = |
453 TreeSynchronizer::SynchronizeTrees(old_layer_tree_root.get(), | 447 TreeSynchronizer::SynchronizeTrees( |
454 scoped_ptr<LayerImpl>(), | 448 old_layer_tree_root.get(), nullptr, host_->active_tree()); |
455 host_->active_tree()); | |
456 ExpectTreesAreIdentical(old_layer_tree_root.get(), | 449 ExpectTreesAreIdentical(old_layer_tree_root.get(), |
457 layer_impl_tree_root.get(), | 450 layer_impl_tree_root.get(), |
458 host_->active_tree()); | 451 host_->active_tree()); |
459 | 452 |
460 // We have to push properties to pick up the destruction list pointer. | 453 // We have to push properties to pick up the destruction list pointer. |
461 TreeSynchronizer::PushProperties(old_layer_tree_root.get(), | 454 TreeSynchronizer::PushProperties(old_layer_tree_root.get(), |
462 layer_impl_tree_root.get()); | 455 layer_impl_tree_root.get()); |
463 | 456 |
464 // Remove all children on the Layer side. | 457 // Remove all children on the Layer side. |
465 old_layer_tree_root->RemoveAllChildren(); | 458 old_layer_tree_root->RemoveAllChildren(); |
(...skipping 44 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
510 // Third child gets a replica layer with a mask layer. | 503 // Third child gets a replica layer with a mask layer. |
511 scoped_refptr<Layer> replica_layer_with_mask = Layer::Create(); | 504 scoped_refptr<Layer> replica_layer_with_mask = Layer::Create(); |
512 scoped_refptr<Layer> replica_mask_layer = Layer::Create(); | 505 scoped_refptr<Layer> replica_mask_layer = Layer::Create(); |
513 replica_layer_with_mask->SetMaskLayer(replica_mask_layer.get()); | 506 replica_layer_with_mask->SetMaskLayer(replica_mask_layer.get()); |
514 layer_tree_root->children()[2]-> | 507 layer_tree_root->children()[2]-> |
515 SetReplicaLayer(replica_layer_with_mask.get()); | 508 SetReplicaLayer(replica_layer_with_mask.get()); |
516 | 509 |
517 host_->SetRootLayer(layer_tree_root); | 510 host_->SetRootLayer(layer_tree_root); |
518 | 511 |
519 scoped_ptr<LayerImpl> layer_impl_tree_root = | 512 scoped_ptr<LayerImpl> layer_impl_tree_root = |
520 TreeSynchronizer::SynchronizeTrees(layer_tree_root.get(), | 513 TreeSynchronizer::SynchronizeTrees( |
521 scoped_ptr<LayerImpl>(), | 514 layer_tree_root.get(), nullptr, host_->active_tree()); |
522 host_->active_tree()); | |
523 | 515 |
524 ExpectTreesAreIdentical(layer_tree_root.get(), | 516 ExpectTreesAreIdentical(layer_tree_root.get(), |
525 layer_impl_tree_root.get(), | 517 layer_impl_tree_root.get(), |
526 host_->active_tree()); | 518 host_->active_tree()); |
527 | 519 |
528 // Remove the mask layer. | 520 // Remove the mask layer. |
529 layer_tree_root->children()[0]->SetMaskLayer(NULL); | 521 layer_tree_root->children()[0]->SetMaskLayer(NULL); |
530 layer_impl_tree_root = | 522 layer_impl_tree_root = |
531 TreeSynchronizer::SynchronizeTrees(layer_tree_root.get(), | 523 TreeSynchronizer::SynchronizeTrees(layer_tree_root.get(), |
532 layer_impl_tree_root.Pass(), | 524 layer_impl_tree_root.Pass(), |
(...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
575 scoped_refptr<Layer> layer_tree_root = Layer::Create(); | 567 scoped_refptr<Layer> layer_tree_root = Layer::Create(); |
576 host_->SetRootLayer(layer_tree_root); | 568 host_->SetRootLayer(layer_tree_root); |
577 | 569 |
578 layer_tree_root->SetLayerAnimationControllerForTest( | 570 layer_tree_root->SetLayerAnimationControllerForTest( |
579 FakeLayerAnimationController::Create()); | 571 FakeLayerAnimationController::Create()); |
580 | 572 |
581 EXPECT_FALSE(static_cast<FakeLayerAnimationController*>( | 573 EXPECT_FALSE(static_cast<FakeLayerAnimationController*>( |
582 layer_tree_root->layer_animation_controller())->SynchronizedAnimations()); | 574 layer_tree_root->layer_animation_controller())->SynchronizedAnimations()); |
583 | 575 |
584 scoped_ptr<LayerImpl> layer_impl_tree_root = | 576 scoped_ptr<LayerImpl> layer_impl_tree_root = |
585 TreeSynchronizer::SynchronizeTrees(layer_tree_root.get(), | 577 TreeSynchronizer::SynchronizeTrees( |
586 scoped_ptr<LayerImpl>(), | 578 layer_tree_root.get(), nullptr, host_->active_tree()); |
587 host_->active_tree()); | |
588 TreeSynchronizer::PushProperties(layer_tree_root.get(), | 579 TreeSynchronizer::PushProperties(layer_tree_root.get(), |
589 layer_impl_tree_root.get()); | 580 layer_impl_tree_root.get()); |
590 layer_impl_tree_root = | 581 layer_impl_tree_root = |
591 TreeSynchronizer::SynchronizeTrees(layer_tree_root.get(), | 582 TreeSynchronizer::SynchronizeTrees(layer_tree_root.get(), |
592 layer_impl_tree_root.Pass(), | 583 layer_impl_tree_root.Pass(), |
593 host_->active_tree()); | 584 host_->active_tree()); |
594 | 585 |
595 EXPECT_TRUE(static_cast<FakeLayerAnimationController*>( | 586 EXPECT_TRUE(static_cast<FakeLayerAnimationController*>( |
596 layer_tree_root->layer_animation_controller())->SynchronizedAnimations()); | 587 layer_tree_root->layer_animation_controller())->SynchronizedAnimations()); |
597 } | 588 } |
(...skipping 20 matching lines...) Expand all Loading... |
618 layer_tree_root->AddChild(Layer::Create()); | 609 layer_tree_root->AddChild(Layer::Create()); |
619 layer_tree_root->AddChild(Layer::Create()); | 610 layer_tree_root->AddChild(Layer::Create()); |
620 | 611 |
621 host_->SetRootLayer(layer_tree_root); | 612 host_->SetRootLayer(layer_tree_root); |
622 | 613 |
623 // First child is the second and third child's scroll parent. | 614 // First child is the second and third child's scroll parent. |
624 layer_tree_root->children()[1]->SetScrollParent(scroll_parent.get()); | 615 layer_tree_root->children()[1]->SetScrollParent(scroll_parent.get()); |
625 layer_tree_root->children()[2]->SetScrollParent(scroll_parent.get()); | 616 layer_tree_root->children()[2]->SetScrollParent(scroll_parent.get()); |
626 | 617 |
627 scoped_ptr<LayerImpl> layer_impl_tree_root = | 618 scoped_ptr<LayerImpl> layer_impl_tree_root = |
628 TreeSynchronizer::SynchronizeTrees(layer_tree_root.get(), | 619 TreeSynchronizer::SynchronizeTrees( |
629 scoped_ptr<LayerImpl>(), | 620 layer_tree_root.get(), nullptr, host_impl->active_tree()); |
630 host_impl->active_tree()); | |
631 TreeSynchronizer::PushProperties(layer_tree_root.get(), | 621 TreeSynchronizer::PushProperties(layer_tree_root.get(), |
632 layer_impl_tree_root.get()); | 622 layer_impl_tree_root.get()); |
633 { | 623 { |
634 SCOPED_TRACE("case one"); | 624 SCOPED_TRACE("case one"); |
635 ExpectTreesAreIdentical(layer_tree_root.get(), | 625 ExpectTreesAreIdentical(layer_tree_root.get(), |
636 layer_impl_tree_root.get(), | 626 layer_impl_tree_root.get(), |
637 host_impl->active_tree()); | 627 host_impl->active_tree()); |
638 } | 628 } |
639 | 629 |
640 // Remove the first scroll child. | 630 // Remove the first scroll child. |
(...skipping 55 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
696 intervening->AddChild(clip_child1); | 686 intervening->AddChild(clip_child1); |
697 intervening->AddChild(clip_child2); | 687 intervening->AddChild(clip_child2); |
698 | 688 |
699 host_->SetRootLayer(layer_tree_root); | 689 host_->SetRootLayer(layer_tree_root); |
700 | 690 |
701 // First child is the second and third child's scroll parent. | 691 // First child is the second and third child's scroll parent. |
702 clip_child1->SetClipParent(clip_parent.get()); | 692 clip_child1->SetClipParent(clip_parent.get()); |
703 clip_child2->SetClipParent(clip_parent.get()); | 693 clip_child2->SetClipParent(clip_parent.get()); |
704 | 694 |
705 scoped_ptr<LayerImpl> layer_impl_tree_root = | 695 scoped_ptr<LayerImpl> layer_impl_tree_root = |
706 TreeSynchronizer::SynchronizeTrees(layer_tree_root.get(), | 696 TreeSynchronizer::SynchronizeTrees( |
707 scoped_ptr<LayerImpl>(), | 697 layer_tree_root.get(), nullptr, host_impl->active_tree()); |
708 host_impl->active_tree()); | |
709 TreeSynchronizer::PushProperties(layer_tree_root.get(), | 698 TreeSynchronizer::PushProperties(layer_tree_root.get(), |
710 layer_impl_tree_root.get()); | 699 layer_impl_tree_root.get()); |
711 ExpectTreesAreIdentical(layer_tree_root.get(), | 700 ExpectTreesAreIdentical(layer_tree_root.get(), |
712 layer_impl_tree_root.get(), | 701 layer_impl_tree_root.get(), |
713 host_impl->active_tree()); | 702 host_impl->active_tree()); |
714 | 703 |
715 // Remove the first clip child. | 704 // Remove the first clip child. |
716 clip_child1->RemoveFromParent(); | 705 clip_child1->RemoveFromParent(); |
717 clip_child1 = NULL; | 706 clip_child1 = NULL; |
718 | 707 |
(...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
754 host_impl->active_tree()); | 743 host_impl->active_tree()); |
755 | 744 |
756 // The clip children should have been unhooked. | 745 // The clip children should have been unhooked. |
757 EXPECT_EQ(2u, intervening->children().size()); | 746 EXPECT_EQ(2u, intervening->children().size()); |
758 EXPECT_FALSE(clip_child2->clip_parent()); | 747 EXPECT_FALSE(clip_child2->clip_parent()); |
759 EXPECT_FALSE(additional_clip_child->clip_parent()); | 748 EXPECT_FALSE(additional_clip_child->clip_parent()); |
760 } | 749 } |
761 | 750 |
762 } // namespace | 751 } // namespace |
763 } // namespace cc | 752 } // namespace cc |
OLD | NEW |