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/layer_tree_host_common.h" | 5 #include "cc/trees/layer_tree_host_common.h" |
6 | 6 |
7 #include <stddef.h> | 7 #include <stddef.h> |
8 | 8 |
9 #include <algorithm> | 9 #include <algorithm> |
10 #include <memory> | 10 #include <memory> |
(...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
48 #include "testing/gtest/include/gtest/gtest.h" | 48 #include "testing/gtest/include/gtest/gtest.h" |
49 #include "ui/gfx/geometry/quad_f.h" | 49 #include "ui/gfx/geometry/quad_f.h" |
50 #include "ui/gfx/geometry/vector2d_conversions.h" | 50 #include "ui/gfx/geometry/vector2d_conversions.h" |
51 #include "ui/gfx/transform.h" | 51 #include "ui/gfx/transform.h" |
52 | 52 |
53 namespace cc { | 53 namespace cc { |
54 namespace { | 54 namespace { |
55 | 55 |
56 class LayerWithForcedDrawsContent : public Layer { | 56 class LayerWithForcedDrawsContent : public Layer { |
57 public: | 57 public: |
58 LayerWithForcedDrawsContent() {} | 58 LayerWithForcedDrawsContent() { SetElementId(NextTestElementId()); } |
59 | 59 |
60 bool DrawsContent() const override; | 60 bool DrawsContent() const override; |
61 | 61 |
62 private: | 62 private: |
63 ~LayerWithForcedDrawsContent() override {} | 63 ~LayerWithForcedDrawsContent() override {} |
64 }; | 64 }; |
65 | 65 |
66 bool LayerWithForcedDrawsContent::DrawsContent() const { return true; } | 66 bool LayerWithForcedDrawsContent::DrawsContent() const { return true; } |
67 | 67 |
68 class MockContentLayerClient : public ContentLayerClient { | 68 class MockContentLayerClient : public ContentLayerClient { |
(...skipping 227 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
296 const float kDeviceScale = 1.666f; | 296 const float kDeviceScale = 1.666f; |
297 | 297 |
298 FakeImplTaskRunnerProvider task_runner_provider; | 298 FakeImplTaskRunnerProvider task_runner_provider; |
299 TestSharedBitmapManager shared_bitmap_manager; | 299 TestSharedBitmapManager shared_bitmap_manager; |
300 TestTaskGraphRunner task_graph_runner; | 300 TestTaskGraphRunner task_graph_runner; |
301 FakeLayerTreeHostImpl host_impl(&task_runner_provider, &shared_bitmap_manager, | 301 FakeLayerTreeHostImpl host_impl(&task_runner_provider, &shared_bitmap_manager, |
302 &task_graph_runner); | 302 &task_graph_runner); |
303 | 303 |
304 gfx::Transform identity_matrix; | 304 gfx::Transform identity_matrix; |
305 std::unique_ptr<LayerImpl> sublayer_scoped_ptr( | 305 std::unique_ptr<LayerImpl> sublayer_scoped_ptr( |
306 LayerImpl::Create(host_impl.active_tree(), 1)); | 306 CreateTestLayerImpl(host_impl.active_tree(), 1)); |
307 LayerImpl* sublayer = sublayer_scoped_ptr.get(); | 307 LayerImpl* sublayer = sublayer_scoped_ptr.get(); |
308 sublayer->SetDrawsContent(true); | 308 sublayer->SetDrawsContent(true); |
309 SetLayerPropertiesForTesting(sublayer, identity_matrix, gfx::Point3F(), | 309 SetLayerPropertiesForTesting(sublayer, identity_matrix, gfx::Point3F(), |
310 gfx::PointF(), gfx::Size(500, 500), true, false, | 310 gfx::PointF(), gfx::Size(500, 500), true, false, |
311 false); | 311 false); |
312 | 312 |
313 std::unique_ptr<LayerImpl> scroll_layer_scoped_ptr( | 313 std::unique_ptr<LayerImpl> scroll_layer_scoped_ptr( |
314 LayerImpl::Create(host_impl.active_tree(), 2)); | 314 CreateTestLayerImpl(host_impl.active_tree(), 2)); |
315 LayerImpl* scroll_layer = scroll_layer_scoped_ptr.get(); | 315 LayerImpl* scroll_layer = scroll_layer_scoped_ptr.get(); |
316 SetLayerPropertiesForTesting(scroll_layer, identity_matrix, gfx::Point3F(), | 316 SetLayerPropertiesForTesting(scroll_layer, identity_matrix, gfx::Point3F(), |
317 gfx::PointF(), gfx::Size(10, 20), true, false, | 317 gfx::PointF(), gfx::Size(10, 20), true, false, |
318 false); | 318 false); |
319 std::unique_ptr<LayerImpl> clip_layer_scoped_ptr( | 319 std::unique_ptr<LayerImpl> clip_layer_scoped_ptr( |
320 LayerImpl::Create(host_impl.active_tree(), 4)); | 320 CreateTestLayerImpl(host_impl.active_tree(), 4)); |
321 LayerImpl* clip_layer = clip_layer_scoped_ptr.get(); | 321 LayerImpl* clip_layer = clip_layer_scoped_ptr.get(); |
322 | 322 |
323 scroll_layer->SetScrollClipLayer(clip_layer->id()); | 323 scroll_layer->SetScrollClipLayer(clip_layer->id()); |
324 clip_layer->SetBounds( | 324 clip_layer->SetBounds( |
325 gfx::Size(scroll_layer->bounds().width() + kMaxScrollOffset.x(), | 325 gfx::Size(scroll_layer->bounds().width() + kMaxScrollOffset.x(), |
326 scroll_layer->bounds().height() + kMaxScrollOffset.y())); | 326 scroll_layer->bounds().height() + kMaxScrollOffset.y())); |
327 scroll_layer->SetScrollClipLayer(clip_layer->id()); | 327 scroll_layer->SetScrollClipLayer(clip_layer->id()); |
328 SetScrollOffsetDelta(scroll_layer, kScrollDelta); | 328 SetScrollOffsetDelta(scroll_layer, kScrollDelta); |
329 gfx::Transform impl_transform; | 329 gfx::Transform impl_transform; |
330 scroll_layer->AddChild(std::move(sublayer_scoped_ptr)); | 330 scroll_layer->AddChild(std::move(sublayer_scoped_ptr)); |
331 LayerImpl* scroll_layer_raw_ptr = scroll_layer_scoped_ptr.get(); | 331 LayerImpl* scroll_layer_raw_ptr = scroll_layer_scoped_ptr.get(); |
332 clip_layer->AddChild(std::move(scroll_layer_scoped_ptr)); | 332 clip_layer->AddChild(std::move(scroll_layer_scoped_ptr)); |
333 scroll_layer_raw_ptr->layer_tree_impl() | 333 scroll_layer_raw_ptr->layer_tree_impl() |
334 ->property_trees() | 334 ->property_trees() |
335 ->scroll_tree.UpdateScrollOffsetBaseForTesting(scroll_layer_raw_ptr->id(), | 335 ->scroll_tree.UpdateScrollOffsetBaseForTesting(scroll_layer_raw_ptr->id(), |
336 kScrollOffset); | 336 kScrollOffset); |
337 | 337 |
338 std::unique_ptr<LayerImpl> root( | 338 std::unique_ptr<LayerImpl> root( |
339 LayerImpl::Create(host_impl.active_tree(), 3)); | 339 CreateTestLayerImpl(host_impl.active_tree(), 3)); |
340 SetLayerPropertiesForTesting(root.get(), identity_matrix, gfx::Point3F(), | 340 SetLayerPropertiesForTesting(root.get(), identity_matrix, gfx::Point3F(), |
341 gfx::PointF(), gfx::Size(3, 4), true, false, | 341 gfx::PointF(), gfx::Size(3, 4), true, false, |
342 false); | 342 false); |
343 root->AddChild(std::move(clip_layer_scoped_ptr)); | 343 root->AddChild(std::move(clip_layer_scoped_ptr)); |
344 root->SetHasRenderSurface(true); | 344 root->SetHasRenderSurface(true); |
345 LayerImpl* root_layer = root.get(); | 345 LayerImpl* root_layer = root.get(); |
346 host_impl.active_tree()->SetRootLayer(std::move(root)); | 346 host_impl.active_tree()->SetRootLayer(std::move(root)); |
347 | 347 |
348 ExecuteCalculateDrawProperties(root_layer, kDeviceScale, page_scale, | 348 ExecuteCalculateDrawProperties(root_layer, kDeviceScale, page_scale, |
349 scroll_layer->parent()); | 349 scroll_layer->parent()); |
(...skipping 270 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
620 grand_child->ScreenSpaceTransform()); | 620 grand_child->ScreenSpaceTransform()); |
621 } | 621 } |
622 | 622 |
623 TEST_F(LayerTreeHostCommonTest, TransformsForReplica) { | 623 TEST_F(LayerTreeHostCommonTest, TransformsForReplica) { |
624 LayerImpl* root = root_layer(); | 624 LayerImpl* root = root_layer(); |
625 LayerImpl* parent = AddChildToRoot<LayerImpl>(); | 625 LayerImpl* parent = AddChildToRoot<LayerImpl>(); |
626 LayerImpl* child = AddChild<LayerImpl>(parent); | 626 LayerImpl* child = AddChild<LayerImpl>(parent); |
627 LayerImpl* grand_child = AddChild<LayerImpl>(child); | 627 LayerImpl* grand_child = AddChild<LayerImpl>(child); |
628 grand_child->SetDrawsContent(true); | 628 grand_child->SetDrawsContent(true); |
629 std::unique_ptr<LayerImpl> child_replica = | 629 std::unique_ptr<LayerImpl> child_replica = |
630 LayerImpl::Create(host_impl()->active_tree(), 100); | 630 CreateTestLayerImpl(host_impl()->active_tree(), 100); |
631 | 631 |
632 // One-time setup of root layer | 632 // One-time setup of root layer |
633 gfx::Transform identity_matrix; | 633 gfx::Transform identity_matrix; |
634 SetLayerPropertiesForTesting(root, identity_matrix, gfx::Point3F(), | 634 SetLayerPropertiesForTesting(root, identity_matrix, gfx::Point3F(), |
635 gfx::PointF(), gfx::Size(1, 2), true, false, | 635 gfx::PointF(), gfx::Size(1, 2), true, false, |
636 true); | 636 true); |
637 | 637 |
638 // Child is set up so that a new render surface should be created. | 638 // Child is set up so that a new render surface should be created. |
639 child->SetOpacity(0.5f); | 639 child->SetOpacity(0.5f); |
640 | 640 |
(...skipping 75 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
716 LayerImpl* child_of_rs2 = AddChild<LayerImpl>(render_surface2); | 716 LayerImpl* child_of_rs2 = AddChild<LayerImpl>(render_surface2); |
717 child_of_rs2->SetDrawsContent(true); | 717 child_of_rs2->SetDrawsContent(true); |
718 LayerImpl* grand_child_of_root = AddChild<LayerImpl>(child_of_root); | 718 LayerImpl* grand_child_of_root = AddChild<LayerImpl>(child_of_root); |
719 grand_child_of_root->SetDrawsContent(true); | 719 grand_child_of_root->SetDrawsContent(true); |
720 LayerImpl* grand_child_of_rs1 = AddChild<LayerImpl>(child_of_rs1); | 720 LayerImpl* grand_child_of_rs1 = AddChild<LayerImpl>(child_of_rs1); |
721 grand_child_of_rs1->SetDrawsContent(true); | 721 grand_child_of_rs1->SetDrawsContent(true); |
722 LayerImpl* grand_child_of_rs2 = AddChild<LayerImpl>(child_of_rs2); | 722 LayerImpl* grand_child_of_rs2 = AddChild<LayerImpl>(child_of_rs2); |
723 grand_child_of_rs2->SetDrawsContent(true); | 723 grand_child_of_rs2->SetDrawsContent(true); |
724 | 724 |
725 std::unique_ptr<LayerImpl> replica_of_rs1 = | 725 std::unique_ptr<LayerImpl> replica_of_rs1 = |
726 LayerImpl::Create(host_impl()->active_tree(), 101); | 726 CreateTestLayerImpl(host_impl()->active_tree(), 101); |
727 std::unique_ptr<LayerImpl> replica_of_rs2 = | 727 std::unique_ptr<LayerImpl> replica_of_rs2 = |
728 LayerImpl::Create(host_impl()->active_tree(), 102); | 728 CreateTestLayerImpl(host_impl()->active_tree(), 102); |
729 | 729 |
730 // In combination with descendant draws content, opacity != 1 forces the layer | 730 // In combination with descendant draws content, opacity != 1 forces the layer |
731 // to have a new render surface. | 731 // to have a new render surface. |
732 render_surface1->SetOpacity(0.5f); | 732 render_surface1->SetOpacity(0.5f); |
733 render_surface2->SetOpacity(0.33f); | 733 render_surface2->SetOpacity(0.33f); |
734 | 734 |
735 // One-time setup of root layer | 735 // One-time setup of root layer |
736 gfx::Transform identity_matrix; | 736 gfx::Transform identity_matrix; |
737 SetLayerPropertiesForTesting(root, identity_matrix, gfx::Point3F(), | 737 SetLayerPropertiesForTesting(root, identity_matrix, gfx::Point3F(), |
738 gfx::PointF(), gfx::Size(1, 2), true, false, | 738 gfx::PointF(), gfx::Size(1, 2), true, false, |
(...skipping 1807 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2546 grand_child_of_root, layer_transform, gfx::Point3F(0.25f, 0.f, 0.f), | 2546 grand_child_of_root, layer_transform, gfx::Point3F(0.25f, 0.f, 0.f), |
2547 gfx::PointF(2.5f, 0.f), gfx::Size(10, 10), true, false, false); | 2547 gfx::PointF(2.5f, 0.f), gfx::Size(10, 10), true, false, false); |
2548 SetLayerPropertiesForTesting( | 2548 SetLayerPropertiesForTesting( |
2549 grand_child_of_rs1, layer_transform, gfx::Point3F(0.25f, 0.f, 0.f), | 2549 grand_child_of_rs1, layer_transform, gfx::Point3F(0.25f, 0.f, 0.f), |
2550 gfx::PointF(2.5f, 0.f), gfx::Size(10, 10), true, false, false); | 2550 gfx::PointF(2.5f, 0.f), gfx::Size(10, 10), true, false, false); |
2551 SetLayerPropertiesForTesting( | 2551 SetLayerPropertiesForTesting( |
2552 grand_child_of_rs2, layer_transform, gfx::Point3F(0.25f, 0.f, 0.f), | 2552 grand_child_of_rs2, layer_transform, gfx::Point3F(0.25f, 0.f, 0.f), |
2553 gfx::PointF(2.5f, 0.f), gfx::Size(10, 10), true, false, false); | 2553 gfx::PointF(2.5f, 0.f), gfx::Size(10, 10), true, false, false); |
2554 | 2554 |
2555 // Put an animated opacity on the render surface. | 2555 // Put an animated opacity on the render surface. |
2556 AddOpacityTransitionToLayerWithPlayer(render_surface1->id(), timeline_impl(), | 2556 AddOpacityTransitionToElementWithPlayer( |
2557 10.0, 1.f, 0.f, false); | 2557 render_surface1->element_id(), timeline_impl(), 10.0, 1.f, 0.f, false); |
2558 | 2558 |
2559 // Also put an animated opacity on a layer without descendants. | 2559 // Also put an animated opacity on a layer without descendants. |
2560 AddOpacityTransitionToLayerWithPlayer(grand_child_of_root->id(), | 2560 AddOpacityTransitionToElementWithPlayer(grand_child_of_root->element_id(), |
2561 timeline_impl(), 10.0, 1.f, 0.f, false); | 2561 timeline_impl(), 10.0, 1.f, 0.f, |
| 2562 false); |
2562 | 2563 |
2563 // Put a transform animation on the render surface. | 2564 // Put a transform animation on the render surface. |
2564 AddAnimatedTransformToLayerWithPlayer(render_surface2->id(), timeline_impl(), | 2565 AddAnimatedTransformToElementWithPlayer(render_surface2->element_id(), |
2565 10.0, 30, 0); | 2566 timeline_impl(), 10.0, 30, 0); |
2566 | 2567 |
2567 // Also put transform animations on grand_child_of_root, and | 2568 // Also put transform animations on grand_child_of_root, and |
2568 // grand_child_of_rs2 | 2569 // grand_child_of_rs2 |
2569 AddAnimatedTransformToLayerWithPlayer(grand_child_of_root->id(), | 2570 AddAnimatedTransformToElementWithPlayer(grand_child_of_root->element_id(), |
2570 timeline_impl(), 10.0, 30, 0); | 2571 timeline_impl(), 10.0, 30, 0); |
2571 AddAnimatedTransformToLayerWithPlayer(grand_child_of_rs2->id(), | 2572 AddAnimatedTransformToElementWithPlayer(grand_child_of_rs2->element_id(), |
2572 timeline_impl(), 10.0, 30, 0); | 2573 timeline_impl(), 10.0, 30, 0); |
2573 | 2574 |
2574 ExecuteCalculateDrawProperties(parent); | 2575 ExecuteCalculateDrawProperties(parent); |
2575 | 2576 |
2576 // Only layers that are associated with render surfaces should have an actual | 2577 // Only layers that are associated with render surfaces should have an actual |
2577 // RenderSurface() value. | 2578 // RenderSurface() value. |
2578 ASSERT_TRUE(parent->render_surface()); | 2579 ASSERT_TRUE(parent->render_surface()); |
2579 ASSERT_FALSE(child_of_root->render_surface()); | 2580 ASSERT_FALSE(child_of_root->render_surface()); |
2580 ASSERT_FALSE(grand_child_of_root->render_surface()); | 2581 ASSERT_FALSE(grand_child_of_root->render_surface()); |
2581 | 2582 |
2582 ASSERT_TRUE(render_surface1->render_surface()); | 2583 ASSERT_TRUE(render_surface1->render_surface()); |
(...skipping 103 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2686 SetLayerPropertiesForTesting(great_grand_child, identity, gfx::Point3F(), | 2687 SetLayerPropertiesForTesting(great_grand_child, identity, gfx::Point3F(), |
2687 gfx::PointF(), gfx::Size(10, 10), true, false, | 2688 gfx::PointF(), gfx::Size(10, 10), true, false, |
2688 false); | 2689 false); |
2689 | 2690 |
2690 // Add a transform animation with a start delay to |grand_child|. | 2691 // Add a transform animation with a start delay to |grand_child|. |
2691 std::unique_ptr<Animation> animation = Animation::Create( | 2692 std::unique_ptr<Animation> animation = Animation::Create( |
2692 std::unique_ptr<AnimationCurve>(new FakeTransformTransition(1.0)), 0, 1, | 2693 std::unique_ptr<AnimationCurve>(new FakeTransformTransition(1.0)), 0, 1, |
2693 TargetProperty::TRANSFORM); | 2694 TargetProperty::TRANSFORM); |
2694 animation->set_fill_mode(Animation::FILL_MODE_NONE); | 2695 animation->set_fill_mode(Animation::FILL_MODE_NONE); |
2695 animation->set_time_offset(base::TimeDelta::FromMilliseconds(-1000)); | 2696 animation->set_time_offset(base::TimeDelta::FromMilliseconds(-1000)); |
2696 AddAnimationToLayerWithPlayer(grand_child->id(), timeline_impl(), | 2697 AddAnimationToElementWithPlayer(grand_child->element_id(), timeline_impl(), |
2697 std::move(animation)); | 2698 std::move(animation)); |
2698 ExecuteCalculateDrawProperties(parent); | 2699 ExecuteCalculateDrawProperties(parent); |
2699 | 2700 |
2700 EXPECT_FALSE(parent->screen_space_transform_is_animating()); | 2701 EXPECT_FALSE(parent->screen_space_transform_is_animating()); |
2701 EXPECT_FALSE(child->screen_space_transform_is_animating()); | 2702 EXPECT_FALSE(child->screen_space_transform_is_animating()); |
2702 | 2703 |
2703 EXPECT_FALSE(grand_child->TransformIsAnimating()); | 2704 EXPECT_FALSE(grand_child->TransformIsAnimating()); |
2704 EXPECT_TRUE(grand_child->HasPotentiallyRunningTransformAnimation()); | 2705 EXPECT_TRUE(grand_child->HasPotentiallyRunningTransformAnimation()); |
2705 EXPECT_TRUE(grand_child->screen_space_transform_is_animating()); | 2706 EXPECT_TRUE(grand_child->screen_space_transform_is_animating()); |
2706 EXPECT_TRUE(great_grand_child->screen_space_transform_is_animating()); | 2707 EXPECT_TRUE(great_grand_child->screen_space_transform_is_animating()); |
2707 } | 2708 } |
(...skipping 842 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
3550 | 3551 |
3551 TEST_F(LayerTreeHostCommonTest, | 3552 TEST_F(LayerTreeHostCommonTest, |
3552 OcclusionForLayerWithUninvertibleDrawTransform) { | 3553 OcclusionForLayerWithUninvertibleDrawTransform) { |
3553 FakeImplTaskRunnerProvider task_runner_provider; | 3554 FakeImplTaskRunnerProvider task_runner_provider; |
3554 TestSharedBitmapManager shared_bitmap_manager; | 3555 TestSharedBitmapManager shared_bitmap_manager; |
3555 TestTaskGraphRunner task_graph_runner; | 3556 TestTaskGraphRunner task_graph_runner; |
3556 std::unique_ptr<OutputSurface> output_surface = FakeOutputSurface::Create3d(); | 3557 std::unique_ptr<OutputSurface> output_surface = FakeOutputSurface::Create3d(); |
3557 FakeLayerTreeHostImpl host_impl(&task_runner_provider, &shared_bitmap_manager, | 3558 FakeLayerTreeHostImpl host_impl(&task_runner_provider, &shared_bitmap_manager, |
3558 &task_graph_runner); | 3559 &task_graph_runner); |
3559 std::unique_ptr<LayerImpl> root = | 3560 std::unique_ptr<LayerImpl> root = |
3560 LayerImpl::Create(host_impl.active_tree(), 1); | 3561 CreateTestLayerImpl(host_impl.active_tree(), 1); |
3561 std::unique_ptr<LayerImpl> child = | 3562 std::unique_ptr<LayerImpl> child = |
3562 LayerImpl::Create(host_impl.active_tree(), 2); | 3563 CreateTestLayerImpl(host_impl.active_tree(), 2); |
3563 std::unique_ptr<LayerImpl> grand_child = | 3564 std::unique_ptr<LayerImpl> grand_child = |
3564 LayerImpl::Create(host_impl.active_tree(), 3); | 3565 CreateTestLayerImpl(host_impl.active_tree(), 3); |
3565 std::unique_ptr<LayerImpl> occluding_child = | 3566 std::unique_ptr<LayerImpl> occluding_child = |
3566 LayerImpl::Create(host_impl.active_tree(), 4); | 3567 CreateTestLayerImpl(host_impl.active_tree(), 4); |
3567 child->SetDrawsContent(true); | 3568 child->SetDrawsContent(true); |
3568 grand_child->SetDrawsContent(true); | 3569 grand_child->SetDrawsContent(true); |
3569 occluding_child->SetDrawsContent(true); | 3570 occluding_child->SetDrawsContent(true); |
3570 occluding_child->SetContentsOpaque(true); | 3571 occluding_child->SetContentsOpaque(true); |
3571 | 3572 |
3572 gfx::Transform identity_matrix; | 3573 gfx::Transform identity_matrix; |
3573 gfx::Transform perspective; | 3574 gfx::Transform perspective; |
3574 perspective.ApplyPerspectiveDepth(SkDoubleToMScalar(1e-12)); | 3575 perspective.ApplyPerspectiveDepth(SkDoubleToMScalar(1e-12)); |
3575 | 3576 |
3576 gfx::Transform rotation; | 3577 gfx::Transform rotation; |
(...skipping 584 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
4161 EXPECT_EQ(gfx::Rect(0, 0, 50, 50), child2->visible_layer_rect()); | 4162 EXPECT_EQ(gfx::Rect(0, 0, 50, 50), child2->visible_layer_rect()); |
4162 EXPECT_EQ(gfx::Rect(0, 0, 50, 50), child3->visible_layer_rect()); | 4163 EXPECT_EQ(gfx::Rect(0, 0, 50, 50), child3->visible_layer_rect()); |
4163 } | 4164 } |
4164 | 4165 |
4165 TEST_F(LayerTreeHostCommonTest, BackFaceCullingWithoutPreserves3d) { | 4166 TEST_F(LayerTreeHostCommonTest, BackFaceCullingWithoutPreserves3d) { |
4166 // Verify the behavior of back-face culling when there are no preserve-3d | 4167 // Verify the behavior of back-face culling when there are no preserve-3d |
4167 // layers. Note that 3d transforms still apply in this case, but they are | 4168 // layers. Note that 3d transforms still apply in this case, but they are |
4168 // "flattened" to each parent layer according to current W3C spec. | 4169 // "flattened" to each parent layer according to current W3C spec. |
4169 | 4170 |
4170 const gfx::Transform identity_matrix; | 4171 const gfx::Transform identity_matrix; |
4171 scoped_refptr<Layer> parent = Layer::Create(); | 4172 scoped_refptr<Layer> parent = CreateTestLayer(); |
4172 scoped_refptr<LayerWithForcedDrawsContent> front_facing_child = | 4173 scoped_refptr<LayerWithForcedDrawsContent> front_facing_child = |
4173 make_scoped_refptr(new LayerWithForcedDrawsContent()); | 4174 make_scoped_refptr(new LayerWithForcedDrawsContent()); |
4174 scoped_refptr<LayerWithForcedDrawsContent> back_facing_child = | 4175 scoped_refptr<LayerWithForcedDrawsContent> back_facing_child = |
4175 make_scoped_refptr(new LayerWithForcedDrawsContent()); | 4176 make_scoped_refptr(new LayerWithForcedDrawsContent()); |
4176 scoped_refptr<LayerWithForcedDrawsContent> front_facing_surface = | 4177 scoped_refptr<LayerWithForcedDrawsContent> front_facing_surface = |
4177 make_scoped_refptr(new LayerWithForcedDrawsContent()); | 4178 make_scoped_refptr(new LayerWithForcedDrawsContent()); |
4178 scoped_refptr<LayerWithForcedDrawsContent> back_facing_surface = | 4179 scoped_refptr<LayerWithForcedDrawsContent> back_facing_surface = |
4179 make_scoped_refptr(new LayerWithForcedDrawsContent()); | 4180 make_scoped_refptr(new LayerWithForcedDrawsContent()); |
4180 scoped_refptr<LayerWithForcedDrawsContent> | 4181 scoped_refptr<LayerWithForcedDrawsContent> |
4181 front_facing_child_of_front_facing_surface = | 4182 front_facing_child_of_front_facing_surface = |
(...skipping 242 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
4424 } | 4425 } |
4425 | 4426 |
4426 TEST_F(LayerTreeHostCommonTest, BackFaceCullingWithAnimatingTransforms) { | 4427 TEST_F(LayerTreeHostCommonTest, BackFaceCullingWithAnimatingTransforms) { |
4427 // Verify that layers are appropriately culled when their back face is showing | 4428 // Verify that layers are appropriately culled when their back face is showing |
4428 // and they are not double sided, while animations are going on. | 4429 // and they are not double sided, while animations are going on. |
4429 // | 4430 // |
4430 // Layers that are animating do not get culled on the main thread, as their | 4431 // Layers that are animating do not get culled on the main thread, as their |
4431 // transforms should be treated as "unknown" so we can not be sure that their | 4432 // transforms should be treated as "unknown" so we can not be sure that their |
4432 // back face is really showing. | 4433 // back face is really showing. |
4433 const gfx::Transform identity_matrix; | 4434 const gfx::Transform identity_matrix; |
4434 scoped_refptr<Layer> parent = Layer::Create(); | 4435 scoped_refptr<Layer> parent = CreateTestLayer(); |
4435 scoped_refptr<LayerWithForcedDrawsContent> child = | 4436 scoped_refptr<LayerWithForcedDrawsContent> child = |
4436 make_scoped_refptr(new LayerWithForcedDrawsContent()); | 4437 make_scoped_refptr(new LayerWithForcedDrawsContent()); |
4437 scoped_refptr<LayerWithForcedDrawsContent> animating_surface = | 4438 scoped_refptr<LayerWithForcedDrawsContent> animating_surface = |
4438 make_scoped_refptr(new LayerWithForcedDrawsContent()); | 4439 make_scoped_refptr(new LayerWithForcedDrawsContent()); |
4439 scoped_refptr<LayerWithForcedDrawsContent> child_of_animating_surface = | 4440 scoped_refptr<LayerWithForcedDrawsContent> child_of_animating_surface = |
4440 make_scoped_refptr(new LayerWithForcedDrawsContent()); | 4441 make_scoped_refptr(new LayerWithForcedDrawsContent()); |
4441 scoped_refptr<LayerWithForcedDrawsContent> animating_child = | 4442 scoped_refptr<LayerWithForcedDrawsContent> animating_child = |
4442 make_scoped_refptr(new LayerWithForcedDrawsContent()); | 4443 make_scoped_refptr(new LayerWithForcedDrawsContent()); |
4443 scoped_refptr<LayerWithForcedDrawsContent> child2 = | 4444 scoped_refptr<LayerWithForcedDrawsContent> child2 = |
4444 make_scoped_refptr(new LayerWithForcedDrawsContent()); | 4445 make_scoped_refptr(new LayerWithForcedDrawsContent()); |
(...skipping 15 matching lines...) Expand all Loading... |
4460 | 4461 |
4461 gfx::Transform backface_matrix; | 4462 gfx::Transform backface_matrix; |
4462 backface_matrix.Translate(50.0, 50.0); | 4463 backface_matrix.Translate(50.0, 50.0); |
4463 backface_matrix.RotateAboutYAxis(180.0); | 4464 backface_matrix.RotateAboutYAxis(180.0); |
4464 backface_matrix.Translate(-50.0, -50.0); | 4465 backface_matrix.Translate(-50.0, -50.0); |
4465 | 4466 |
4466 // Make our render surface. | 4467 // Make our render surface. |
4467 animating_surface->SetForceRenderSurfaceForTesting(true); | 4468 animating_surface->SetForceRenderSurfaceForTesting(true); |
4468 | 4469 |
4469 // Animate the transform on the render surface. | 4470 // Animate the transform on the render surface. |
4470 AddAnimatedTransformToLayerWithPlayer(animating_surface->id(), timeline(), | 4471 AddAnimatedTransformToElementWithPlayer(animating_surface->element_id(), |
4471 10.0, 30, 0); | 4472 timeline(), 10.0, 30, 0); |
4472 // This is just an animating layer, not a surface. | 4473 // This is just an animating layer, not a surface. |
4473 AddAnimatedTransformToLayerWithPlayer(animating_child->id(), timeline(), 10.0, | 4474 AddAnimatedTransformToElementWithPlayer(animating_child->element_id(), |
4474 30, 0); | 4475 timeline(), 10.0, 30, 0); |
4475 | 4476 |
4476 SetLayerPropertiesForTesting(parent.get(), | 4477 SetLayerPropertiesForTesting(parent.get(), |
4477 identity_matrix, | 4478 identity_matrix, |
4478 gfx::Point3F(), | 4479 gfx::Point3F(), |
4479 gfx::PointF(), | 4480 gfx::PointF(), |
4480 gfx::Size(100, 100), | 4481 gfx::Size(100, 100), |
4481 true, | 4482 true, |
4482 false); | 4483 false); |
4483 SetLayerPropertiesForTesting(child.get(), | 4484 SetLayerPropertiesForTesting(child.get(), |
4484 backface_matrix, | 4485 backface_matrix, |
(...skipping 65 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
4550 EXPECT_EQ(child_of_animating_surface->visible_layer_rect_for_testing(), | 4551 EXPECT_EQ(child_of_animating_surface->visible_layer_rect_for_testing(), |
4551 gfx::Rect(child_of_animating_surface->bounds())); | 4552 gfx::Rect(child_of_animating_surface->bounds())); |
4552 } | 4553 } |
4553 | 4554 |
4554 TEST_F(LayerTreeHostCommonTest, | 4555 TEST_F(LayerTreeHostCommonTest, |
4555 BackFaceCullingWithPreserves3dForFlatteningSurface) { | 4556 BackFaceCullingWithPreserves3dForFlatteningSurface) { |
4556 // Verify the behavior of back-face culling for a render surface that is | 4557 // Verify the behavior of back-face culling for a render surface that is |
4557 // created when it flattens its subtree, and its parent has preserves-3d. | 4558 // created when it flattens its subtree, and its parent has preserves-3d. |
4558 | 4559 |
4559 const gfx::Transform identity_matrix; | 4560 const gfx::Transform identity_matrix; |
4560 scoped_refptr<Layer> parent = Layer::Create(); | 4561 scoped_refptr<Layer> parent = CreateTestLayer(); |
4561 scoped_refptr<LayerWithForcedDrawsContent> front_facing_surface = | 4562 scoped_refptr<LayerWithForcedDrawsContent> front_facing_surface = |
4562 make_scoped_refptr(new LayerWithForcedDrawsContent()); | 4563 make_scoped_refptr(new LayerWithForcedDrawsContent()); |
4563 scoped_refptr<LayerWithForcedDrawsContent> back_facing_surface = | 4564 scoped_refptr<LayerWithForcedDrawsContent> back_facing_surface = |
4564 make_scoped_refptr(new LayerWithForcedDrawsContent()); | 4565 make_scoped_refptr(new LayerWithForcedDrawsContent()); |
4565 scoped_refptr<LayerWithForcedDrawsContent> child1 = | 4566 scoped_refptr<LayerWithForcedDrawsContent> child1 = |
4566 make_scoped_refptr(new LayerWithForcedDrawsContent()); | 4567 make_scoped_refptr(new LayerWithForcedDrawsContent()); |
4567 scoped_refptr<LayerWithForcedDrawsContent> child2 = | 4568 scoped_refptr<LayerWithForcedDrawsContent> child2 = |
4568 make_scoped_refptr(new LayerWithForcedDrawsContent()); | 4569 make_scoped_refptr(new LayerWithForcedDrawsContent()); |
4569 | 4570 |
4570 parent->AddChild(front_facing_surface); | 4571 parent->AddChild(front_facing_surface); |
(...skipping 339 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
4910 LayerImpl* child = AddChildToRoot<LayerImpl>(); | 4911 LayerImpl* child = AddChildToRoot<LayerImpl>(); |
4911 child->SetDrawsContent(true); | 4912 child->SetDrawsContent(true); |
4912 SetLayerPropertiesForTesting(child, identity_matrix, gfx::Point3F(), | 4913 SetLayerPropertiesForTesting(child, identity_matrix, gfx::Point3F(), |
4913 gfx::PointF(2.f, 2.f), gfx::Size(10, 10), false, | 4914 gfx::PointF(2.f, 2.f), gfx::Size(10, 10), false, |
4914 true, true); | 4915 true, true); |
4915 | 4916 |
4916 gfx::Transform replica_transform; | 4917 gfx::Transform replica_transform; |
4917 replica_transform.Scale(1.0, -1.0); | 4918 replica_transform.Scale(1.0, -1.0); |
4918 | 4919 |
4919 std::unique_ptr<LayerImpl> replica = | 4920 std::unique_ptr<LayerImpl> replica = |
4920 LayerImpl::Create(host_impl()->active_tree(), 7); | 4921 CreateTestLayerImpl(host_impl()->active_tree(), 7); |
4921 SetLayerPropertiesForTesting(replica.get(), replica_transform, gfx::Point3F(), | 4922 SetLayerPropertiesForTesting(replica.get(), replica_transform, gfx::Point3F(), |
4922 gfx::PointF(2.f, 2.f), gfx::Size(10, 10), false, | 4923 gfx::PointF(2.f, 2.f), gfx::Size(10, 10), false, |
4923 true, false); | 4924 true, false); |
4924 // We need to set parent on replica layer for property tree building. | 4925 // We need to set parent on replica layer for property tree building. |
4925 replica->SetParent(child); | 4926 replica->SetParent(child); |
4926 child->SetReplicaLayer(std::move(replica)); | 4927 child->SetReplicaLayer(std::move(replica)); |
4927 | 4928 |
4928 // This layer should end up in the same surface as child, with the same draw | 4929 // This layer should end up in the same surface as child, with the same draw |
4929 // and screen space transforms. | 4930 // and screen space transforms. |
4930 LayerImpl* duplicate_child_non_owner = AddChild<LayerImpl>(child); | 4931 LayerImpl* duplicate_child_non_owner = AddChild<LayerImpl>(child); |
(...skipping 92 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
5023 | 5024 |
5024 LayerImpl* child = AddChildToRoot<LayerImpl>(); | 5025 LayerImpl* child = AddChildToRoot<LayerImpl>(); |
5025 child->SetDrawsContent(true); | 5026 child->SetDrawsContent(true); |
5026 SetLayerPropertiesForTesting(child, identity_matrix, gfx::Point3F(), | 5027 SetLayerPropertiesForTesting(child, identity_matrix, gfx::Point3F(), |
5027 gfx::PointF(), gfx::Size(13, 11), false, true, | 5028 gfx::PointF(), gfx::Size(13, 11), false, true, |
5028 true); | 5029 true); |
5029 | 5030 |
5030 gfx::Transform replica_transform; | 5031 gfx::Transform replica_transform; |
5031 replica_transform.Scale(1.0, -1.0); | 5032 replica_transform.Scale(1.0, -1.0); |
5032 std::unique_ptr<LayerImpl> replica = | 5033 std::unique_ptr<LayerImpl> replica = |
5033 LayerImpl::Create(host_impl()->active_tree(), 7); | 5034 CreateTestLayerImpl(host_impl()->active_tree(), 7); |
5034 SetLayerPropertiesForTesting(replica.get(), replica_transform, gfx::Point3F(), | 5035 SetLayerPropertiesForTesting(replica.get(), replica_transform, gfx::Point3F(), |
5035 gfx::PointF(), gfx::Size(13, 11), false, true, | 5036 gfx::PointF(), gfx::Size(13, 11), false, true, |
5036 false); | 5037 false); |
5037 child->SetReplicaLayer(std::move(replica)); | 5038 child->SetReplicaLayer(std::move(replica)); |
5038 | 5039 |
5039 float device_scale_factor = 1.7f; | 5040 float device_scale_factor = 1.7f; |
5040 ExecuteCalculateDrawProperties(parent, device_scale_factor); | 5041 ExecuteCalculateDrawProperties(parent, device_scale_factor); |
5041 | 5042 |
5042 // We should have two render surfaces. The root's render surface and child's | 5043 // We should have two render surfaces. The root's render surface and child's |
5043 // render surface (it needs one because it has a replica layer). | 5044 // render surface (it needs one because it has a replica layer). |
(...skipping 14 matching lines...) Expand all Loading... |
5058 child->render_surface()->replica_draw_transform()); | 5059 child->render_surface()->replica_draw_transform()); |
5059 | 5060 |
5060 gfx::Transform expected_replica_screen_space_transform; | 5061 gfx::Transform expected_replica_screen_space_transform; |
5061 expected_replica_screen_space_transform.matrix().set(1, 1, -1.0); | 5062 expected_replica_screen_space_transform.matrix().set(1, 1, -1.0); |
5062 EXPECT_TRANSFORMATION_MATRIX_EQ( | 5063 EXPECT_TRANSFORMATION_MATRIX_EQ( |
5063 expected_replica_screen_space_transform, | 5064 expected_replica_screen_space_transform, |
5064 child->render_surface()->replica_screen_space_transform()); | 5065 child->render_surface()->replica_screen_space_transform()); |
5065 } | 5066 } |
5066 | 5067 |
5067 TEST_F(LayerTreeHostCommonTest, LayerSearch) { | 5068 TEST_F(LayerTreeHostCommonTest, LayerSearch) { |
5068 scoped_refptr<Layer> root = Layer::Create(); | 5069 scoped_refptr<Layer> root = CreateTestLayer(); |
5069 scoped_refptr<Layer> child = Layer::Create(); | 5070 scoped_refptr<Layer> child = CreateTestLayer(); |
5070 scoped_refptr<Layer> grand_child = Layer::Create(); | 5071 scoped_refptr<Layer> grand_child = CreateTestLayer(); |
5071 scoped_refptr<Layer> mask_layer = Layer::Create(); | 5072 scoped_refptr<Layer> mask_layer = CreateTestLayer(); |
5072 scoped_refptr<Layer> replica_layer = Layer::Create(); | 5073 scoped_refptr<Layer> replica_layer = CreateTestLayer(); |
5073 | 5074 |
5074 grand_child->SetReplicaLayer(replica_layer.get()); | 5075 grand_child->SetReplicaLayer(replica_layer.get()); |
5075 child->AddChild(grand_child.get()); | 5076 child->AddChild(grand_child.get()); |
5076 child->SetMaskLayer(mask_layer.get()); | 5077 child->SetMaskLayer(mask_layer.get()); |
5077 root->AddChild(child.get()); | 5078 root->AddChild(child.get()); |
5078 | 5079 |
5079 host()->SetRootLayer(root); | 5080 host()->SetRootLayer(root); |
5080 | 5081 |
5081 int nonexistent_id = -1; | 5082 int nonexistent_id = -1; |
5082 EXPECT_EQ(root.get(), host()->LayerById(root->id())); | 5083 EXPECT_EQ(root.get(), host()->LayerById(root->id())); |
5083 EXPECT_EQ(child.get(), host()->LayerById(child->id())); | 5084 EXPECT_EQ(child.get(), host()->LayerById(child->id())); |
5084 EXPECT_EQ(grand_child.get(), host()->LayerById(grand_child->id())); | 5085 EXPECT_EQ(grand_child.get(), host()->LayerById(grand_child->id())); |
5085 EXPECT_EQ(mask_layer.get(), host()->LayerById(mask_layer->id())); | 5086 EXPECT_EQ(mask_layer.get(), host()->LayerById(mask_layer->id())); |
5086 EXPECT_EQ(replica_layer.get(), host()->LayerById(replica_layer->id())); | 5087 EXPECT_EQ(replica_layer.get(), host()->LayerById(replica_layer->id())); |
5087 EXPECT_FALSE(host()->LayerById(nonexistent_id)); | 5088 EXPECT_FALSE(host()->LayerById(nonexistent_id)); |
5088 } | 5089 } |
5089 | 5090 |
5090 TEST_F(LayerTreeHostCommonTest, TransparentChildRenderSurfaceCreation) { | 5091 TEST_F(LayerTreeHostCommonTest, TransparentChildRenderSurfaceCreation) { |
5091 scoped_refptr<Layer> root = Layer::Create(); | 5092 scoped_refptr<Layer> root = CreateTestLayer(); |
5092 scoped_refptr<Layer> child = Layer::Create(); | 5093 scoped_refptr<Layer> child = CreateTestLayer(); |
5093 scoped_refptr<LayerWithForcedDrawsContent> grand_child = | 5094 scoped_refptr<LayerWithForcedDrawsContent> grand_child = |
5094 make_scoped_refptr(new LayerWithForcedDrawsContent()); | 5095 make_scoped_refptr(new LayerWithForcedDrawsContent()); |
5095 | 5096 |
5096 const gfx::Transform identity_matrix; | 5097 const gfx::Transform identity_matrix; |
5097 SetLayerPropertiesForTesting(root.get(), | 5098 SetLayerPropertiesForTesting(root.get(), |
5098 identity_matrix, | 5099 identity_matrix, |
5099 gfx::Point3F(), | 5100 gfx::Point3F(), |
5100 gfx::PointF(), | 5101 gfx::PointF(), |
5101 gfx::Size(100, 100), | 5102 gfx::Size(100, 100), |
5102 true, | 5103 true, |
(...skipping 25 matching lines...) Expand all Loading... |
5128 } | 5129 } |
5129 | 5130 |
5130 TEST_F(LayerTreeHostCommonTest, OpacityAnimatingOnPendingTree) { | 5131 TEST_F(LayerTreeHostCommonTest, OpacityAnimatingOnPendingTree) { |
5131 FakeImplTaskRunnerProvider task_runner_provider; | 5132 FakeImplTaskRunnerProvider task_runner_provider; |
5132 TestSharedBitmapManager shared_bitmap_manager; | 5133 TestSharedBitmapManager shared_bitmap_manager; |
5133 TestTaskGraphRunner task_graph_runner; | 5134 TestTaskGraphRunner task_graph_runner; |
5134 FakeLayerTreeHostImpl host_impl(host()->settings(), &task_runner_provider, | 5135 FakeLayerTreeHostImpl host_impl(host()->settings(), &task_runner_provider, |
5135 &shared_bitmap_manager, &task_graph_runner); | 5136 &shared_bitmap_manager, &task_graph_runner); |
5136 host_impl.CreatePendingTree(); | 5137 host_impl.CreatePendingTree(); |
5137 std::unique_ptr<LayerImpl> root = | 5138 std::unique_ptr<LayerImpl> root = |
5138 LayerImpl::Create(host_impl.pending_tree(), 1); | 5139 CreateTestLayerImpl(host_impl.pending_tree(), 1); |
5139 | 5140 |
5140 const gfx::Transform identity_matrix; | 5141 const gfx::Transform identity_matrix; |
5141 SetLayerPropertiesForTesting(root.get(), identity_matrix, gfx::Point3F(), | 5142 SetLayerPropertiesForTesting(root.get(), identity_matrix, gfx::Point3F(), |
5142 gfx::PointF(), gfx::Size(100, 100), true, false, | 5143 gfx::PointF(), gfx::Size(100, 100), true, false, |
5143 false); | 5144 false); |
5144 root->SetDrawsContent(true); | 5145 root->SetDrawsContent(true); |
5145 | 5146 |
5146 std::unique_ptr<LayerImpl> child = | 5147 std::unique_ptr<LayerImpl> child = |
5147 LayerImpl::Create(host_impl.pending_tree(), 2); | 5148 CreateTestLayerImpl(host_impl.pending_tree(), 2); |
5148 SetLayerPropertiesForTesting(child.get(), identity_matrix, gfx::Point3F(), | 5149 SetLayerPropertiesForTesting(child.get(), identity_matrix, gfx::Point3F(), |
5149 gfx::PointF(), gfx::Size(50, 50), true, false, | 5150 gfx::PointF(), gfx::Size(50, 50), true, false, |
5150 false); | 5151 false); |
5151 child->SetDrawsContent(true); | 5152 child->SetDrawsContent(true); |
5152 child->SetOpacity(0.0f); | 5153 child->SetOpacity(0.0f); |
5153 | 5154 |
5154 // Add opacity animation. | 5155 // Add opacity animation. |
5155 scoped_refptr<AnimationTimeline> timeline = | 5156 scoped_refptr<AnimationTimeline> timeline = |
5156 AnimationTimeline::Create(AnimationIdProvider::NextTimelineId()); | 5157 AnimationTimeline::Create(AnimationIdProvider::NextTimelineId()); |
5157 host_impl.animation_host()->AddAnimationTimeline(timeline); | 5158 host_impl.animation_host()->AddAnimationTimeline(timeline); |
5158 | 5159 |
5159 AddOpacityTransitionToLayerWithPlayer(child->id(), timeline, 10.0, 0.0f, 1.0f, | 5160 AddOpacityTransitionToElementWithPlayer(child->element_id(), timeline, 10.0, |
5160 false); | 5161 0.0f, 1.0f, false); |
5161 | 5162 |
5162 root->AddChild(std::move(child)); | 5163 root->AddChild(std::move(child)); |
5163 root->SetHasRenderSurface(true); | 5164 root->SetHasRenderSurface(true); |
5164 LayerImpl* root_layer = root.get(); | 5165 LayerImpl* root_layer = root.get(); |
5165 host_impl.pending_tree()->SetRootLayer(std::move(root)); | 5166 host_impl.pending_tree()->SetRootLayer(std::move(root)); |
5166 | 5167 |
5167 LayerImplList render_surface_layer_list; | 5168 LayerImplList render_surface_layer_list; |
5168 LayerTreeHostCommon::CalcDrawPropsImplInputsForTesting inputs( | 5169 LayerTreeHostCommon::CalcDrawPropsImplInputsForTesting inputs( |
5169 root_layer, root_layer->bounds(), &render_surface_layer_list); | 5170 root_layer, root_layer->bounds(), &render_surface_layer_list); |
5170 inputs.can_adjust_raster_scales = true; | 5171 inputs.can_adjust_raster_scales = true; |
(...skipping 73 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
5244 protected: | 5245 protected: |
5245 void SetUp() override { | 5246 void SetUp() override { |
5246 timeline_ = | 5247 timeline_ = |
5247 AnimationTimeline::Create(AnimationIdProvider::NextTimelineId()); | 5248 AnimationTimeline::Create(AnimationIdProvider::NextTimelineId()); |
5248 host_impl_.animation_host()->AddAnimationTimeline(timeline_); | 5249 host_impl_.animation_host()->AddAnimationTimeline(timeline_); |
5249 | 5250 |
5250 can_use_lcd_text_ = std::tr1::get<0>(GetParam()); | 5251 can_use_lcd_text_ = std::tr1::get<0>(GetParam()); |
5251 layers_always_allowed_lcd_text_ = std::tr1::get<1>(GetParam()); | 5252 layers_always_allowed_lcd_text_ = std::tr1::get<1>(GetParam()); |
5252 | 5253 |
5253 std::unique_ptr<LayerImpl> root_ptr = | 5254 std::unique_ptr<LayerImpl> root_ptr = |
5254 LayerImpl::Create(host_impl_.active_tree(), 1); | 5255 CreateTestLayerImpl(host_impl_.active_tree(), 1); |
5255 std::unique_ptr<LayerImpl> child_ptr = | 5256 std::unique_ptr<LayerImpl> child_ptr = |
5256 LayerImpl::Create(host_impl_.active_tree(), 2); | 5257 CreateTestLayerImpl(host_impl_.active_tree(), 2); |
5257 std::unique_ptr<LayerImpl> grand_child_ptr = | 5258 std::unique_ptr<LayerImpl> grand_child_ptr = |
5258 LayerImpl::Create(host_impl_.active_tree(), 3); | 5259 CreateTestLayerImpl(host_impl_.active_tree(), 3); |
5259 | 5260 |
5260 // Stash raw pointers to look at later. | 5261 // Stash raw pointers to look at later. |
5261 root_ = root_ptr.get(); | 5262 root_ = root_ptr.get(); |
5262 child_ = child_ptr.get(); | 5263 child_ = child_ptr.get(); |
5263 grand_child_ = grand_child_ptr.get(); | 5264 grand_child_ = grand_child_ptr.get(); |
5264 | 5265 |
5265 child_->AddChild(std::move(grand_child_ptr)); | 5266 child_->AddChild(std::move(grand_child_ptr)); |
5266 root_->AddChild(std::move(child_ptr)); | 5267 root_->AddChild(std::move(child_ptr)); |
5267 host_impl_.active_tree()->SetRootLayer(std::move(root_ptr)); | 5268 host_impl_.active_tree()->SetRootLayer(std::move(root_ptr)); |
5268 | 5269 |
(...skipping 142 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
5411 // Sanity check: Make sure can_use_lcd_text_ is set on each node. | 5412 // Sanity check: Make sure can_use_lcd_text_ is set on each node. |
5412 ExecuteCalculateDrawProperties(root_, 1.f, 1.f, NULL, can_use_lcd_text_, | 5413 ExecuteCalculateDrawProperties(root_, 1.f, 1.f, NULL, can_use_lcd_text_, |
5413 layers_always_allowed_lcd_text_); | 5414 layers_always_allowed_lcd_text_); |
5414 EXPECT_EQ(expect_lcd_text, root_->can_use_lcd_text()); | 5415 EXPECT_EQ(expect_lcd_text, root_->can_use_lcd_text()); |
5415 EXPECT_EQ(expect_lcd_text, child_->can_use_lcd_text()); | 5416 EXPECT_EQ(expect_lcd_text, child_->can_use_lcd_text()); |
5416 EXPECT_EQ(expect_lcd_text, grand_child_->can_use_lcd_text()); | 5417 EXPECT_EQ(expect_lcd_text, grand_child_->can_use_lcd_text()); |
5417 | 5418 |
5418 // Add opacity animation. | 5419 // Add opacity animation. |
5419 child_->SetOpacity(0.9f); | 5420 child_->SetOpacity(0.9f); |
5420 child_->layer_tree_impl()->property_trees()->needs_rebuild = true; | 5421 child_->layer_tree_impl()->property_trees()->needs_rebuild = true; |
5421 AddOpacityTransitionToLayerWithPlayer(child_->id(), timeline(), 10.0, 0.9f, | 5422 AddOpacityTransitionToElementWithPlayer(child_->element_id(), timeline(), |
5422 0.1f, false); | 5423 10.0, 0.9f, 0.1f, false); |
5423 ExecuteCalculateDrawProperties(root_, 1.f, 1.f, NULL, can_use_lcd_text_, | 5424 ExecuteCalculateDrawProperties(root_, 1.f, 1.f, NULL, can_use_lcd_text_, |
5424 layers_always_allowed_lcd_text_); | 5425 layers_always_allowed_lcd_text_); |
5425 // Text LCD should be adjusted while animation is active. | 5426 // Text LCD should be adjusted while animation is active. |
5426 EXPECT_EQ(expect_lcd_text, root_->can_use_lcd_text()); | 5427 EXPECT_EQ(expect_lcd_text, root_->can_use_lcd_text()); |
5427 EXPECT_EQ(expect_not_lcd_text, child_->can_use_lcd_text()); | 5428 EXPECT_EQ(expect_not_lcd_text, child_->can_use_lcd_text()); |
5428 EXPECT_EQ(expect_not_lcd_text, grand_child_->can_use_lcd_text()); | 5429 EXPECT_EQ(expect_not_lcd_text, grand_child_->can_use_lcd_text()); |
5429 } | 5430 } |
5430 | 5431 |
5431 TEST_P(LCDTextTest, CanUseLCDTextWithAnimationContentsOpaque) { | 5432 TEST_P(LCDTextTest, CanUseLCDTextWithAnimationContentsOpaque) { |
5432 bool expect_lcd_text = can_use_lcd_text_ || layers_always_allowed_lcd_text_; | 5433 bool expect_lcd_text = can_use_lcd_text_ || layers_always_allowed_lcd_text_; |
5433 bool expect_not_lcd_text = layers_always_allowed_lcd_text_; | 5434 bool expect_not_lcd_text = layers_always_allowed_lcd_text_; |
5434 | 5435 |
5435 // Sanity check: Make sure can_use_lcd_text_ is set on each node. | 5436 // Sanity check: Make sure can_use_lcd_text_ is set on each node. |
5436 ExecuteCalculateDrawProperties(root_, 1.f, 1.f, NULL, can_use_lcd_text_, | 5437 ExecuteCalculateDrawProperties(root_, 1.f, 1.f, NULL, can_use_lcd_text_, |
5437 layers_always_allowed_lcd_text_); | 5438 layers_always_allowed_lcd_text_); |
5438 EXPECT_EQ(expect_lcd_text, root_->can_use_lcd_text()); | 5439 EXPECT_EQ(expect_lcd_text, root_->can_use_lcd_text()); |
5439 EXPECT_EQ(expect_lcd_text, child_->can_use_lcd_text()); | 5440 EXPECT_EQ(expect_lcd_text, child_->can_use_lcd_text()); |
5440 EXPECT_EQ(expect_lcd_text, grand_child_->can_use_lcd_text()); | 5441 EXPECT_EQ(expect_lcd_text, grand_child_->can_use_lcd_text()); |
5441 | 5442 |
5442 // Mark contents non-opaque within the first animation frame. | 5443 // Mark contents non-opaque within the first animation frame. |
5443 child_->SetContentsOpaque(false); | 5444 child_->SetContentsOpaque(false); |
5444 AddOpacityTransitionToLayerWithPlayer(child_->id(), timeline(), 10.0, 0.9f, | 5445 AddOpacityTransitionToElementWithPlayer(child_->element_id(), timeline(), |
5445 0.1f, false); | 5446 10.0, 0.9f, 0.1f, false); |
5446 ExecuteCalculateDrawProperties(root_, 1.f, 1.f, NULL, can_use_lcd_text_, | 5447 ExecuteCalculateDrawProperties(root_, 1.f, 1.f, NULL, can_use_lcd_text_, |
5447 layers_always_allowed_lcd_text_); | 5448 layers_always_allowed_lcd_text_); |
5448 // LCD text should be disabled for non-opaque layers even during animations. | 5449 // LCD text should be disabled for non-opaque layers even during animations. |
5449 EXPECT_EQ(expect_lcd_text, root_->can_use_lcd_text()); | 5450 EXPECT_EQ(expect_lcd_text, root_->can_use_lcd_text()); |
5450 EXPECT_EQ(expect_not_lcd_text, child_->can_use_lcd_text()); | 5451 EXPECT_EQ(expect_not_lcd_text, child_->can_use_lcd_text()); |
5451 EXPECT_EQ(expect_lcd_text, grand_child_->can_use_lcd_text()); | 5452 EXPECT_EQ(expect_lcd_text, grand_child_->can_use_lcd_text()); |
5452 } | 5453 } |
5453 | 5454 |
5454 INSTANTIATE_TEST_CASE_P(LayerTreeHostCommonTest, | 5455 INSTANTIATE_TEST_CASE_P(LayerTreeHostCommonTest, |
5455 LCDTextTest, | 5456 LCDTextTest, |
5456 testing::Combine(testing::Bool(), | 5457 testing::Combine(testing::Bool(), |
5457 testing::Bool(), | 5458 testing::Bool(), |
5458 testing::Bool())); | 5459 testing::Bool())); |
5459 | 5460 |
5460 TEST_F(LayerTreeHostCommonTest, SubtreeHidden_SingleLayerImpl) { | 5461 TEST_F(LayerTreeHostCommonTest, SubtreeHidden_SingleLayerImpl) { |
5461 FakeImplTaskRunnerProvider task_runner_provider; | 5462 FakeImplTaskRunnerProvider task_runner_provider; |
5462 TestSharedBitmapManager shared_bitmap_manager; | 5463 TestSharedBitmapManager shared_bitmap_manager; |
5463 TestTaskGraphRunner task_graph_runner; | 5464 TestTaskGraphRunner task_graph_runner; |
5464 FakeLayerTreeHostImpl host_impl(&task_runner_provider, &shared_bitmap_manager, | 5465 FakeLayerTreeHostImpl host_impl(&task_runner_provider, &shared_bitmap_manager, |
5465 &task_graph_runner); | 5466 &task_graph_runner); |
5466 host_impl.CreatePendingTree(); | 5467 host_impl.CreatePendingTree(); |
5467 const gfx::Transform identity_matrix; | 5468 const gfx::Transform identity_matrix; |
5468 | 5469 |
5469 std::unique_ptr<LayerImpl> root = | 5470 std::unique_ptr<LayerImpl> root = |
5470 LayerImpl::Create(host_impl.pending_tree(), 1); | 5471 CreateTestLayerImpl(host_impl.pending_tree(), 1); |
5471 LayerImpl* root_layer = root.get(); | 5472 LayerImpl* root_layer = root.get(); |
5472 SetLayerPropertiesForTesting(root.get(), identity_matrix, gfx::Point3F(), | 5473 SetLayerPropertiesForTesting(root.get(), identity_matrix, gfx::Point3F(), |
5473 gfx::PointF(), gfx::Size(50, 50), true, false, | 5474 gfx::PointF(), gfx::Size(50, 50), true, false, |
5474 false); | 5475 false); |
5475 root->SetDrawsContent(true); | 5476 root->SetDrawsContent(true); |
5476 | 5477 |
5477 std::unique_ptr<LayerImpl> child = | 5478 std::unique_ptr<LayerImpl> child = |
5478 LayerImpl::Create(host_impl.pending_tree(), 2); | 5479 CreateTestLayerImpl(host_impl.pending_tree(), 2); |
5479 SetLayerPropertiesForTesting(child.get(), identity_matrix, gfx::Point3F(), | 5480 SetLayerPropertiesForTesting(child.get(), identity_matrix, gfx::Point3F(), |
5480 gfx::PointF(), gfx::Size(40, 40), true, false, | 5481 gfx::PointF(), gfx::Size(40, 40), true, false, |
5481 false); | 5482 false); |
5482 child->SetDrawsContent(true); | 5483 child->SetDrawsContent(true); |
5483 | 5484 |
5484 std::unique_ptr<LayerImpl> grand_child = | 5485 std::unique_ptr<LayerImpl> grand_child = |
5485 LayerImpl::Create(host_impl.pending_tree(), 3); | 5486 CreateTestLayerImpl(host_impl.pending_tree(), 3); |
5486 SetLayerPropertiesForTesting(grand_child.get(), identity_matrix, | 5487 SetLayerPropertiesForTesting(grand_child.get(), identity_matrix, |
5487 gfx::Point3F(), gfx::PointF(), gfx::Size(30, 30), | 5488 gfx::Point3F(), gfx::PointF(), gfx::Size(30, 30), |
5488 true, false, false); | 5489 true, false, false); |
5489 grand_child->SetDrawsContent(true); | 5490 grand_child->SetDrawsContent(true); |
5490 grand_child->test_properties()->hide_layer_and_subtree = true; | 5491 grand_child->test_properties()->hide_layer_and_subtree = true; |
5491 | 5492 |
5492 child->AddChild(std::move(grand_child)); | 5493 child->AddChild(std::move(grand_child)); |
5493 root->AddChild(std::move(child)); | 5494 root->AddChild(std::move(child)); |
5494 root->SetHasRenderSurface(true); | 5495 root->SetHasRenderSurface(true); |
5495 host_impl.pending_tree()->SetRootLayer(std::move(root)); | 5496 host_impl.pending_tree()->SetRootLayer(std::move(root)); |
(...skipping 15 matching lines...) Expand all Loading... |
5511 TEST_F(LayerTreeHostCommonTest, SubtreeHidden_TwoLayersImpl) { | 5512 TEST_F(LayerTreeHostCommonTest, SubtreeHidden_TwoLayersImpl) { |
5512 FakeImplTaskRunnerProvider task_runner_provider; | 5513 FakeImplTaskRunnerProvider task_runner_provider; |
5513 TestSharedBitmapManager shared_bitmap_manager; | 5514 TestSharedBitmapManager shared_bitmap_manager; |
5514 TestTaskGraphRunner task_graph_runner; | 5515 TestTaskGraphRunner task_graph_runner; |
5515 FakeLayerTreeHostImpl host_impl(&task_runner_provider, &shared_bitmap_manager, | 5516 FakeLayerTreeHostImpl host_impl(&task_runner_provider, &shared_bitmap_manager, |
5516 &task_graph_runner); | 5517 &task_graph_runner); |
5517 host_impl.CreatePendingTree(); | 5518 host_impl.CreatePendingTree(); |
5518 const gfx::Transform identity_matrix; | 5519 const gfx::Transform identity_matrix; |
5519 | 5520 |
5520 std::unique_ptr<LayerImpl> root = | 5521 std::unique_ptr<LayerImpl> root = |
5521 LayerImpl::Create(host_impl.pending_tree(), 1); | 5522 CreateTestLayerImpl(host_impl.pending_tree(), 1); |
5522 SetLayerPropertiesForTesting(root.get(), identity_matrix, gfx::Point3F(), | 5523 SetLayerPropertiesForTesting(root.get(), identity_matrix, gfx::Point3F(), |
5523 gfx::PointF(), gfx::Size(50, 50), true, false, | 5524 gfx::PointF(), gfx::Size(50, 50), true, false, |
5524 true); | 5525 true); |
5525 root->SetDrawsContent(true); | 5526 root->SetDrawsContent(true); |
5526 LayerImpl* root_layer = root.get(); | 5527 LayerImpl* root_layer = root.get(); |
5527 | 5528 |
5528 std::unique_ptr<LayerImpl> child = | 5529 std::unique_ptr<LayerImpl> child = |
5529 LayerImpl::Create(host_impl.pending_tree(), 2); | 5530 CreateTestLayerImpl(host_impl.pending_tree(), 2); |
5530 SetLayerPropertiesForTesting(child.get(), identity_matrix, gfx::Point3F(), | 5531 SetLayerPropertiesForTesting(child.get(), identity_matrix, gfx::Point3F(), |
5531 gfx::PointF(), gfx::Size(40, 40), true, false, | 5532 gfx::PointF(), gfx::Size(40, 40), true, false, |
5532 false); | 5533 false); |
5533 child->SetDrawsContent(true); | 5534 child->SetDrawsContent(true); |
5534 child->test_properties()->hide_layer_and_subtree = true; | 5535 child->test_properties()->hide_layer_and_subtree = true; |
5535 | 5536 |
5536 std::unique_ptr<LayerImpl> grand_child = | 5537 std::unique_ptr<LayerImpl> grand_child = |
5537 LayerImpl::Create(host_impl.pending_tree(), 3); | 5538 CreateTestLayerImpl(host_impl.pending_tree(), 3); |
5538 SetLayerPropertiesForTesting(grand_child.get(), identity_matrix, | 5539 SetLayerPropertiesForTesting(grand_child.get(), identity_matrix, |
5539 gfx::Point3F(), gfx::PointF(), gfx::Size(30, 30), | 5540 gfx::Point3F(), gfx::PointF(), gfx::Size(30, 30), |
5540 true, false, false); | 5541 true, false, false); |
5541 grand_child->SetDrawsContent(true); | 5542 grand_child->SetDrawsContent(true); |
5542 | 5543 |
5543 child->AddChild(std::move(grand_child)); | 5544 child->AddChild(std::move(grand_child)); |
5544 root->AddChild(std::move(child)); | 5545 root->AddChild(std::move(child)); |
5545 host_impl.pending_tree()->SetRootLayer(std::move(root)); | 5546 host_impl.pending_tree()->SetRootLayer(std::move(root)); |
5546 | 5547 |
5547 LayerImplList render_surface_layer_list; | 5548 LayerImplList render_surface_layer_list; |
(...skipping 14 matching lines...) Expand all Loading... |
5562 TEST_F(LayerTreeHostCommonTest, SubtreeHiddenWithCopyRequest) { | 5563 TEST_F(LayerTreeHostCommonTest, SubtreeHiddenWithCopyRequest) { |
5563 FakeImplTaskRunnerProvider task_runner_provider; | 5564 FakeImplTaskRunnerProvider task_runner_provider; |
5564 TestSharedBitmapManager shared_bitmap_manager; | 5565 TestSharedBitmapManager shared_bitmap_manager; |
5565 TestTaskGraphRunner task_graph_runner; | 5566 TestTaskGraphRunner task_graph_runner; |
5566 FakeLayerTreeHostImpl host_impl(&task_runner_provider, &shared_bitmap_manager, | 5567 FakeLayerTreeHostImpl host_impl(&task_runner_provider, &shared_bitmap_manager, |
5567 &task_graph_runner); | 5568 &task_graph_runner); |
5568 host_impl.CreatePendingTree(); | 5569 host_impl.CreatePendingTree(); |
5569 const gfx::Transform identity_matrix; | 5570 const gfx::Transform identity_matrix; |
5570 | 5571 |
5571 std::unique_ptr<LayerImpl> root = | 5572 std::unique_ptr<LayerImpl> root = |
5572 LayerImpl::Create(host_impl.pending_tree(), 1); | 5573 CreateTestLayerImpl(host_impl.pending_tree(), 1); |
5573 SetLayerPropertiesForTesting(root.get(), identity_matrix, gfx::Point3F(), | 5574 SetLayerPropertiesForTesting(root.get(), identity_matrix, gfx::Point3F(), |
5574 gfx::PointF(), gfx::Size(50, 50), true, false, | 5575 gfx::PointF(), gfx::Size(50, 50), true, false, |
5575 true); | 5576 true); |
5576 root->SetDrawsContent(true); | 5577 root->SetDrawsContent(true); |
5577 LayerImpl* root_layer = root.get(); | 5578 LayerImpl* root_layer = root.get(); |
5578 | 5579 |
5579 std::unique_ptr<LayerImpl> copy_grand_parent = | 5580 std::unique_ptr<LayerImpl> copy_grand_parent = |
5580 LayerImpl::Create(host_impl.pending_tree(), 2); | 5581 CreateTestLayerImpl(host_impl.pending_tree(), 2); |
5581 SetLayerPropertiesForTesting(copy_grand_parent.get(), identity_matrix, | 5582 SetLayerPropertiesForTesting(copy_grand_parent.get(), identity_matrix, |
5582 gfx::Point3F(), gfx::PointF(), gfx::Size(40, 40), | 5583 gfx::Point3F(), gfx::PointF(), gfx::Size(40, 40), |
5583 true, false, false); | 5584 true, false, false); |
5584 copy_grand_parent->SetDrawsContent(true); | 5585 copy_grand_parent->SetDrawsContent(true); |
5585 LayerImpl* copy_grand_parent_layer = copy_grand_parent.get(); | 5586 LayerImpl* copy_grand_parent_layer = copy_grand_parent.get(); |
5586 | 5587 |
5587 std::unique_ptr<LayerImpl> copy_parent = | 5588 std::unique_ptr<LayerImpl> copy_parent = |
5588 LayerImpl::Create(host_impl.pending_tree(), 3); | 5589 CreateTestLayerImpl(host_impl.pending_tree(), 3); |
5589 SetLayerPropertiesForTesting(copy_parent.get(), identity_matrix, | 5590 SetLayerPropertiesForTesting(copy_parent.get(), identity_matrix, |
5590 gfx::Point3F(), gfx::PointF(), gfx::Size(30, 30), | 5591 gfx::Point3F(), gfx::PointF(), gfx::Size(30, 30), |
5591 true, false, true); | 5592 true, false, true); |
5592 copy_parent->SetDrawsContent(true); | 5593 copy_parent->SetDrawsContent(true); |
5593 LayerImpl* copy_parent_layer = copy_parent.get(); | 5594 LayerImpl* copy_parent_layer = copy_parent.get(); |
5594 | 5595 |
5595 std::unique_ptr<LayerImpl> copy_request = | 5596 std::unique_ptr<LayerImpl> copy_request = |
5596 LayerImpl::Create(host_impl.pending_tree(), 4); | 5597 CreateTestLayerImpl(host_impl.pending_tree(), 4); |
5597 SetLayerPropertiesForTesting(copy_request.get(), identity_matrix, | 5598 SetLayerPropertiesForTesting(copy_request.get(), identity_matrix, |
5598 gfx::Point3F(), gfx::PointF(), gfx::Size(20, 20), | 5599 gfx::Point3F(), gfx::PointF(), gfx::Size(20, 20), |
5599 true, false, true); | 5600 true, false, true); |
5600 copy_request->SetDrawsContent(true); | 5601 copy_request->SetDrawsContent(true); |
5601 LayerImpl* copy_layer = copy_request.get(); | 5602 LayerImpl* copy_layer = copy_request.get(); |
5602 | 5603 |
5603 std::unique_ptr<LayerImpl> copy_child = | 5604 std::unique_ptr<LayerImpl> copy_child = |
5604 LayerImpl::Create(host_impl.pending_tree(), 5); | 5605 CreateTestLayerImpl(host_impl.pending_tree(), 5); |
5605 SetLayerPropertiesForTesting(copy_child.get(), identity_matrix, | 5606 SetLayerPropertiesForTesting(copy_child.get(), identity_matrix, |
5606 gfx::Point3F(), gfx::PointF(), gfx::Size(20, 20), | 5607 gfx::Point3F(), gfx::PointF(), gfx::Size(20, 20), |
5607 true, false, false); | 5608 true, false, false); |
5608 copy_child->SetDrawsContent(true); | 5609 copy_child->SetDrawsContent(true); |
5609 LayerImpl* copy_child_layer = copy_child.get(); | 5610 LayerImpl* copy_child_layer = copy_child.get(); |
5610 | 5611 |
5611 std::unique_ptr<LayerImpl> copy_grand_child = | 5612 std::unique_ptr<LayerImpl> copy_grand_child = |
5612 LayerImpl::Create(host_impl.pending_tree(), 6); | 5613 CreateTestLayerImpl(host_impl.pending_tree(), 6); |
5613 SetLayerPropertiesForTesting(copy_grand_child.get(), identity_matrix, | 5614 SetLayerPropertiesForTesting(copy_grand_child.get(), identity_matrix, |
5614 gfx::Point3F(), gfx::PointF(), gfx::Size(20, 20), | 5615 gfx::Point3F(), gfx::PointF(), gfx::Size(20, 20), |
5615 true, false, false); | 5616 true, false, false); |
5616 copy_child->SetDrawsContent(true); | 5617 copy_child->SetDrawsContent(true); |
5617 LayerImpl* copy_grand_child_layer = copy_grand_child.get(); | 5618 LayerImpl* copy_grand_child_layer = copy_grand_child.get(); |
5618 | 5619 |
5619 std::unique_ptr<LayerImpl> copy_grand_parent_sibling_before = | 5620 std::unique_ptr<LayerImpl> copy_grand_parent_sibling_before = |
5620 LayerImpl::Create(host_impl.pending_tree(), 7); | 5621 CreateTestLayerImpl(host_impl.pending_tree(), 7); |
5621 SetLayerPropertiesForTesting(copy_grand_parent_sibling_before.get(), | 5622 SetLayerPropertiesForTesting(copy_grand_parent_sibling_before.get(), |
5622 identity_matrix, gfx::Point3F(), gfx::PointF(), | 5623 identity_matrix, gfx::Point3F(), gfx::PointF(), |
5623 gfx::Size(40, 40), true, false, false); | 5624 gfx::Size(40, 40), true, false, false); |
5624 copy_grand_parent_sibling_before->SetDrawsContent(true); | 5625 copy_grand_parent_sibling_before->SetDrawsContent(true); |
5625 LayerImpl* copy_grand_parent_sibling_before_layer = | 5626 LayerImpl* copy_grand_parent_sibling_before_layer = |
5626 copy_grand_parent_sibling_before.get(); | 5627 copy_grand_parent_sibling_before.get(); |
5627 | 5628 |
5628 std::unique_ptr<LayerImpl> copy_grand_parent_sibling_after = | 5629 std::unique_ptr<LayerImpl> copy_grand_parent_sibling_after = |
5629 LayerImpl::Create(host_impl.pending_tree(), 8); | 5630 CreateTestLayerImpl(host_impl.pending_tree(), 8); |
5630 SetLayerPropertiesForTesting(copy_grand_parent_sibling_after.get(), | 5631 SetLayerPropertiesForTesting(copy_grand_parent_sibling_after.get(), |
5631 identity_matrix, gfx::Point3F(), gfx::PointF(), | 5632 identity_matrix, gfx::Point3F(), gfx::PointF(), |
5632 gfx::Size(40, 40), true, false, false); | 5633 gfx::Size(40, 40), true, false, false); |
5633 copy_grand_parent_sibling_after->SetDrawsContent(true); | 5634 copy_grand_parent_sibling_after->SetDrawsContent(true); |
5634 LayerImpl* copy_grand_parent_sibling_after_layer = | 5635 LayerImpl* copy_grand_parent_sibling_after_layer = |
5635 copy_grand_parent_sibling_after.get(); | 5636 copy_grand_parent_sibling_after.get(); |
5636 | 5637 |
5637 copy_child->AddChild(std::move(copy_grand_child)); | 5638 copy_child->AddChild(std::move(copy_grand_child)); |
5638 copy_request->AddChild(std::move(copy_child)); | 5639 copy_request->AddChild(std::move(copy_child)); |
5639 copy_parent->AddChild(std::move(copy_request)); | 5640 copy_parent->AddChild(std::move(copy_request)); |
(...skipping 85 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
5725 TEST_F(LayerTreeHostCommonTest, ClippedOutCopyRequest) { | 5726 TEST_F(LayerTreeHostCommonTest, ClippedOutCopyRequest) { |
5726 FakeImplTaskRunnerProvider task_runner_provider; | 5727 FakeImplTaskRunnerProvider task_runner_provider; |
5727 TestSharedBitmapManager shared_bitmap_manager; | 5728 TestSharedBitmapManager shared_bitmap_manager; |
5728 TestTaskGraphRunner task_graph_runner; | 5729 TestTaskGraphRunner task_graph_runner; |
5729 FakeLayerTreeHostImpl host_impl(&task_runner_provider, &shared_bitmap_manager, | 5730 FakeLayerTreeHostImpl host_impl(&task_runner_provider, &shared_bitmap_manager, |
5730 &task_graph_runner); | 5731 &task_graph_runner); |
5731 host_impl.CreatePendingTree(); | 5732 host_impl.CreatePendingTree(); |
5732 const gfx::Transform identity_matrix; | 5733 const gfx::Transform identity_matrix; |
5733 | 5734 |
5734 std::unique_ptr<LayerImpl> root = | 5735 std::unique_ptr<LayerImpl> root = |
5735 LayerImpl::Create(host_impl.pending_tree(), 1); | 5736 CreateTestLayerImpl(host_impl.pending_tree(), 1); |
5736 SetLayerPropertiesForTesting(root.get(), identity_matrix, gfx::Point3F(), | 5737 SetLayerPropertiesForTesting(root.get(), identity_matrix, gfx::Point3F(), |
5737 gfx::PointF(), gfx::Size(50, 50), true, false, | 5738 gfx::PointF(), gfx::Size(50, 50), true, false, |
5738 true); | 5739 true); |
5739 root->SetDrawsContent(true); | 5740 root->SetDrawsContent(true); |
5740 | 5741 |
5741 std::unique_ptr<LayerImpl> copy_parent = | 5742 std::unique_ptr<LayerImpl> copy_parent = |
5742 LayerImpl::Create(host_impl.pending_tree(), 2); | 5743 CreateTestLayerImpl(host_impl.pending_tree(), 2); |
5743 SetLayerPropertiesForTesting(copy_parent.get(), identity_matrix, | 5744 SetLayerPropertiesForTesting(copy_parent.get(), identity_matrix, |
5744 gfx::Point3F(), gfx::PointF(), gfx::Size(), true, | 5745 gfx::Point3F(), gfx::PointF(), gfx::Size(), true, |
5745 false, false); | 5746 false, false); |
5746 copy_parent->SetDrawsContent(true); | 5747 copy_parent->SetDrawsContent(true); |
5747 copy_parent->SetMasksToBounds(true); | 5748 copy_parent->SetMasksToBounds(true); |
5748 | 5749 |
5749 std::unique_ptr<LayerImpl> copy_layer = | 5750 std::unique_ptr<LayerImpl> copy_layer = |
5750 LayerImpl::Create(host_impl.pending_tree(), 3); | 5751 CreateTestLayerImpl(host_impl.pending_tree(), 3); |
5751 SetLayerPropertiesForTesting(copy_layer.get(), identity_matrix, | 5752 SetLayerPropertiesForTesting(copy_layer.get(), identity_matrix, |
5752 gfx::Point3F(), gfx::PointF(), gfx::Size(30, 30), | 5753 gfx::Point3F(), gfx::PointF(), gfx::Size(30, 30), |
5753 true, false, true); | 5754 true, false, true); |
5754 copy_layer->SetDrawsContent(true); | 5755 copy_layer->SetDrawsContent(true); |
5755 | 5756 |
5756 std::unique_ptr<LayerImpl> copy_child = | 5757 std::unique_ptr<LayerImpl> copy_child = |
5757 LayerImpl::Create(host_impl.pending_tree(), 4); | 5758 CreateTestLayerImpl(host_impl.pending_tree(), 4); |
5758 SetLayerPropertiesForTesting(copy_child.get(), identity_matrix, | 5759 SetLayerPropertiesForTesting(copy_child.get(), identity_matrix, |
5759 gfx::Point3F(), gfx::PointF(), gfx::Size(20, 20), | 5760 gfx::Point3F(), gfx::PointF(), gfx::Size(20, 20), |
5760 true, false, false); | 5761 true, false, false); |
5761 copy_child->SetDrawsContent(true); | 5762 copy_child->SetDrawsContent(true); |
5762 | 5763 |
5763 std::vector<std::unique_ptr<CopyOutputRequest>> copy_requests; | 5764 std::vector<std::unique_ptr<CopyOutputRequest>> copy_requests; |
5764 copy_requests.push_back( | 5765 copy_requests.push_back( |
5765 CopyOutputRequest::CreateRequest(base::Bind(&EmptyCopyOutputCallback))); | 5766 CopyOutputRequest::CreateRequest(base::Bind(&EmptyCopyOutputCallback))); |
5766 copy_layer->PassCopyRequests(©_requests); | 5767 copy_layer->PassCopyRequests(©_requests); |
5767 EXPECT_TRUE(copy_layer->HasCopyRequest()); | 5768 EXPECT_TRUE(copy_layer->HasCopyRequest()); |
(...skipping 480 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
6248 } | 6249 } |
6249 | 6250 |
6250 TEST_F(LayerTreeHostCommonTest, CanRenderToSeparateSurface) { | 6251 TEST_F(LayerTreeHostCommonTest, CanRenderToSeparateSurface) { |
6251 FakeImplTaskRunnerProvider task_runner_provider; | 6252 FakeImplTaskRunnerProvider task_runner_provider; |
6252 TestSharedBitmapManager shared_bitmap_manager; | 6253 TestSharedBitmapManager shared_bitmap_manager; |
6253 TestTaskGraphRunner task_graph_runner; | 6254 TestTaskGraphRunner task_graph_runner; |
6254 FakeLayerTreeHostImpl host_impl(&task_runner_provider, &shared_bitmap_manager, | 6255 FakeLayerTreeHostImpl host_impl(&task_runner_provider, &shared_bitmap_manager, |
6255 &task_graph_runner); | 6256 &task_graph_runner); |
6256 | 6257 |
6257 std::unique_ptr<LayerImpl> root = | 6258 std::unique_ptr<LayerImpl> root = |
6258 LayerImpl::Create(host_impl.active_tree(), 12345); | 6259 CreateTestLayerImpl(host_impl.active_tree(), 12345); |
6259 std::unique_ptr<LayerImpl> child1 = | 6260 std::unique_ptr<LayerImpl> child1 = |
6260 LayerImpl::Create(host_impl.active_tree(), 123456); | 6261 CreateTestLayerImpl(host_impl.active_tree(), 123456); |
6261 std::unique_ptr<LayerImpl> child2 = | 6262 std::unique_ptr<LayerImpl> child2 = |
6262 LayerImpl::Create(host_impl.active_tree(), 1234567); | 6263 CreateTestLayerImpl(host_impl.active_tree(), 1234567); |
6263 std::unique_ptr<LayerImpl> child3 = | 6264 std::unique_ptr<LayerImpl> child3 = |
6264 LayerImpl::Create(host_impl.active_tree(), 12345678); | 6265 CreateTestLayerImpl(host_impl.active_tree(), 12345678); |
6265 | 6266 |
6266 gfx::Transform identity_matrix; | 6267 gfx::Transform identity_matrix; |
6267 gfx::Point3F transform_origin; | 6268 gfx::Point3F transform_origin; |
6268 gfx::PointF position; | 6269 gfx::PointF position; |
6269 gfx::Size bounds(100, 100); | 6270 gfx::Size bounds(100, 100); |
6270 SetLayerPropertiesForTesting(root.get(), identity_matrix, transform_origin, | 6271 SetLayerPropertiesForTesting(root.get(), identity_matrix, transform_origin, |
6271 position, bounds, true, false, true); | 6272 position, bounds, true, false, true); |
6272 root->SetDrawsContent(true); | 6273 root->SetDrawsContent(true); |
6273 | 6274 |
6274 // This layer structure normally forces render surface due to preserves3d | 6275 // This layer structure normally forces render surface due to preserves3d |
(...skipping 712 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
6987 // + scroller | 6988 // + scroller |
6988 // + fixed | 6989 // + fixed |
6989 // | 6990 // |
6990 FakeImplTaskRunnerProvider task_runner_provider; | 6991 FakeImplTaskRunnerProvider task_runner_provider; |
6991 TestSharedBitmapManager shared_bitmap_manager; | 6992 TestSharedBitmapManager shared_bitmap_manager; |
6992 TestTaskGraphRunner task_graph_runner; | 6993 TestTaskGraphRunner task_graph_runner; |
6993 FakeLayerTreeHostImpl host_impl(&task_runner_provider, &shared_bitmap_manager, | 6994 FakeLayerTreeHostImpl host_impl(&task_runner_provider, &shared_bitmap_manager, |
6994 &task_graph_runner); | 6995 &task_graph_runner); |
6995 host_impl.CreatePendingTree(); | 6996 host_impl.CreatePendingTree(); |
6996 std::unique_ptr<LayerImpl> root_ptr = | 6997 std::unique_ptr<LayerImpl> root_ptr = |
6997 LayerImpl::Create(host_impl.active_tree(), 1); | 6998 CreateTestLayerImpl(host_impl.active_tree(), 1); |
6998 LayerImpl* root = root_ptr.get(); | 6999 LayerImpl* root = root_ptr.get(); |
6999 std::unique_ptr<LayerImpl> container = | 7000 std::unique_ptr<LayerImpl> container = |
7000 LayerImpl::Create(host_impl.active_tree(), 2); | 7001 CreateTestLayerImpl(host_impl.active_tree(), 2); |
7001 LayerImpl* container_layer = container.get(); | 7002 LayerImpl* container_layer = container.get(); |
7002 std::unique_ptr<LayerImpl> scroller = | 7003 std::unique_ptr<LayerImpl> scroller = |
7003 LayerImpl::Create(host_impl.active_tree(), 3); | 7004 CreateTestLayerImpl(host_impl.active_tree(), 3); |
7004 LayerImpl* scroll_layer = scroller.get(); | 7005 LayerImpl* scroll_layer = scroller.get(); |
7005 std::unique_ptr<LayerImpl> fixed = | 7006 std::unique_ptr<LayerImpl> fixed = |
7006 LayerImpl::Create(host_impl.active_tree(), 4); | 7007 CreateTestLayerImpl(host_impl.active_tree(), 4); |
7007 LayerImpl* fixed_layer = fixed.get(); | 7008 LayerImpl* fixed_layer = fixed.get(); |
7008 | 7009 |
7009 container->test_properties()->is_container_for_fixed_position_layers = true; | 7010 container->test_properties()->is_container_for_fixed_position_layers = true; |
7010 | 7011 |
7011 LayerPositionConstraint constraint; | 7012 LayerPositionConstraint constraint; |
7012 constraint.set_is_fixed_position(true); | 7013 constraint.set_is_fixed_position(true); |
7013 fixed->test_properties()->position_constraint = constraint; | 7014 fixed->test_properties()->position_constraint = constraint; |
7014 | 7015 |
7015 scroller->SetScrollClipLayer(container->id()); | 7016 scroller->SetScrollClipLayer(container->id()); |
7016 | 7017 |
(...skipping 140 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
7157 SetLayerPropertiesForTesting(scroller, identity_transform, gfx::Point3F(), | 7158 SetLayerPropertiesForTesting(scroller, identity_transform, gfx::Point3F(), |
7158 gfx::PointF(), gfx::Size(100, 100), true, false, | 7159 gfx::PointF(), gfx::Size(100, 100), true, false, |
7159 false); | 7160 false); |
7160 | 7161 |
7161 gfx::Transform end_scale; | 7162 gfx::Transform end_scale; |
7162 end_scale.Scale(2.f, 2.f); | 7163 end_scale.Scale(2.f, 2.f); |
7163 TransformOperations start_operations; | 7164 TransformOperations start_operations; |
7164 start_operations.AppendMatrix(start_scale); | 7165 start_operations.AppendMatrix(start_scale); |
7165 TransformOperations end_operations; | 7166 TransformOperations end_operations; |
7166 end_operations.AppendMatrix(end_scale); | 7167 end_operations.AppendMatrix(end_scale); |
7167 AddAnimatedTransformToLayerWithPlayer(animated_layer->id(), timeline_impl(), | 7168 AddAnimatedTransformToElementWithPlayer(animated_layer->element_id(), |
7168 1.0, start_operations, end_operations); | 7169 timeline_impl(), 1.0, |
| 7170 start_operations, end_operations); |
7169 gfx::Vector2dF scroll_delta(5.f, 9.f); | 7171 gfx::Vector2dF scroll_delta(5.f, 9.f); |
7170 SetScrollOffsetDelta(scroller, scroll_delta); | 7172 SetScrollOffsetDelta(scroller, scroll_delta); |
7171 | 7173 |
7172 ExecuteCalculateDrawProperties(root); | 7174 ExecuteCalculateDrawProperties(root); |
7173 | 7175 |
7174 gfx::Vector2dF expected_draw_transform_translation(-7.5f, -13.5f); | 7176 gfx::Vector2dF expected_draw_transform_translation(-7.5f, -13.5f); |
7175 EXPECT_VECTOR2DF_EQ(expected_draw_transform_translation, | 7177 EXPECT_VECTOR2DF_EQ(expected_draw_transform_translation, |
7176 scroller->DrawTransform().To2dTranslation()); | 7178 scroller->DrawTransform().To2dTranslation()); |
7177 } | 7179 } |
7178 | 7180 |
7179 class AnimationScaleFactorTrackingLayerImpl : public LayerImpl { | 7181 class AnimationScaleFactorTrackingLayerImpl : public LayerImpl { |
7180 public: | 7182 public: |
7181 static std::unique_ptr<AnimationScaleFactorTrackingLayerImpl> Create( | 7183 static std::unique_ptr<AnimationScaleFactorTrackingLayerImpl> Create( |
7182 LayerTreeImpl* tree_impl, | 7184 LayerTreeImpl* tree_impl, |
7183 int id) { | 7185 int id) { |
7184 return base::WrapUnique( | 7186 auto layer = base::WrapUnique( |
7185 new AnimationScaleFactorTrackingLayerImpl(tree_impl, id)); | 7187 new AnimationScaleFactorTrackingLayerImpl(tree_impl, id)); |
| 7188 layer->SetElementId(NextTestElementId()); |
| 7189 return layer; |
7186 } | 7190 } |
7187 | 7191 |
7188 ~AnimationScaleFactorTrackingLayerImpl() override {} | 7192 ~AnimationScaleFactorTrackingLayerImpl() override {} |
7189 | 7193 |
7190 private: | 7194 private: |
7191 explicit AnimationScaleFactorTrackingLayerImpl(LayerTreeImpl* tree_impl, | 7195 explicit AnimationScaleFactorTrackingLayerImpl(LayerTreeImpl* tree_impl, |
7192 int id) | 7196 int id) |
7193 : LayerImpl(tree_impl, id) { | 7197 : LayerImpl(tree_impl, id) { |
7194 SetDrawsContent(true); | 7198 SetDrawsContent(true); |
7195 } | 7199 } |
(...skipping 65 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
7261 0.f, | 7265 0.f, |
7262 grand_child_raw->draw_properties().starting_animation_contents_scale); | 7266 grand_child_raw->draw_properties().starting_animation_contents_scale); |
7263 | 7267 |
7264 TransformOperations translation; | 7268 TransformOperations translation; |
7265 translation.AppendTranslate(1.f, 2.f, 3.f); | 7269 translation.AppendTranslate(1.f, 2.f, 3.f); |
7266 | 7270 |
7267 scoped_refptr<AnimationTimeline> timeline; | 7271 scoped_refptr<AnimationTimeline> timeline; |
7268 timeline = AnimationTimeline::Create(AnimationIdProvider::NextTimelineId()); | 7272 timeline = AnimationTimeline::Create(AnimationIdProvider::NextTimelineId()); |
7269 host_impl.animation_host()->AddAnimationTimeline(timeline); | 7273 host_impl.animation_host()->AddAnimationTimeline(timeline); |
7270 | 7274 |
7271 AddAnimatedTransformToLayerWithPlayer(parent_raw->id(), timeline, 1.0, | 7275 AddAnimatedTransformToElementWithPlayer(parent_raw->element_id(), timeline, |
7272 TransformOperations(), translation); | 7276 1.0, TransformOperations(), |
| 7277 translation); |
7273 | 7278 |
7274 // No layers have scale-affecting animations. | 7279 // No layers have scale-affecting animations. |
7275 EXPECT_EQ( | 7280 EXPECT_EQ( |
7276 0.f, | 7281 0.f, |
7277 grand_parent_raw->draw_properties().maximum_animation_contents_scale); | 7282 grand_parent_raw->draw_properties().maximum_animation_contents_scale); |
7278 EXPECT_EQ(0.f, | 7283 EXPECT_EQ(0.f, |
7279 parent_raw->draw_properties().maximum_animation_contents_scale); | 7284 parent_raw->draw_properties().maximum_animation_contents_scale); |
7280 EXPECT_EQ(0.f, child_raw->draw_properties().maximum_animation_contents_scale); | 7285 EXPECT_EQ(0.f, child_raw->draw_properties().maximum_animation_contents_scale); |
7281 EXPECT_EQ( | 7286 EXPECT_EQ( |
7282 0.f, grand_child_raw->draw_properties().maximum_animation_contents_scale); | 7287 0.f, grand_child_raw->draw_properties().maximum_animation_contents_scale); |
7283 | 7288 |
7284 EXPECT_EQ( | 7289 EXPECT_EQ( |
7285 0.f, | 7290 0.f, |
7286 grand_parent_raw->draw_properties().starting_animation_contents_scale); | 7291 grand_parent_raw->draw_properties().starting_animation_contents_scale); |
7287 EXPECT_EQ(0.f, | 7292 EXPECT_EQ(0.f, |
7288 parent_raw->draw_properties().starting_animation_contents_scale); | 7293 parent_raw->draw_properties().starting_animation_contents_scale); |
7289 EXPECT_EQ(0.f, | 7294 EXPECT_EQ(0.f, |
7290 child_raw->draw_properties().starting_animation_contents_scale); | 7295 child_raw->draw_properties().starting_animation_contents_scale); |
7291 EXPECT_EQ( | 7296 EXPECT_EQ( |
7292 0.f, | 7297 0.f, |
7293 grand_child_raw->draw_properties().starting_animation_contents_scale); | 7298 grand_child_raw->draw_properties().starting_animation_contents_scale); |
7294 | 7299 |
7295 TransformOperations scale; | 7300 TransformOperations scale; |
7296 scale.AppendScale(5.f, 4.f, 3.f); | 7301 scale.AppendScale(5.f, 4.f, 3.f); |
7297 | 7302 |
7298 AddAnimatedTransformToLayerWithPlayer(child_raw->id(), timeline, 1.0, | 7303 AddAnimatedTransformToElementWithPlayer(child_raw->element_id(), timeline, |
7299 TransformOperations(), scale); | 7304 1.0, TransformOperations(), scale); |
7300 child_raw->layer_tree_impl()->property_trees()->needs_rebuild = true; | 7305 child_raw->layer_tree_impl()->property_trees()->needs_rebuild = true; |
7301 ExecuteCalculateDrawProperties(grand_parent_raw); | 7306 ExecuteCalculateDrawProperties(grand_parent_raw); |
7302 | 7307 |
7303 // Only |child| has a scale-affecting animation. | 7308 // Only |child| has a scale-affecting animation. |
7304 EXPECT_EQ( | 7309 EXPECT_EQ( |
7305 0.f, | 7310 0.f, |
7306 grand_parent_raw->draw_properties().maximum_animation_contents_scale); | 7311 grand_parent_raw->draw_properties().maximum_animation_contents_scale); |
7307 EXPECT_EQ(0.f, | 7312 EXPECT_EQ(0.f, |
7308 parent_raw->draw_properties().maximum_animation_contents_scale); | 7313 parent_raw->draw_properties().maximum_animation_contents_scale); |
7309 EXPECT_EQ(5.f, child_raw->draw_properties().maximum_animation_contents_scale); | 7314 EXPECT_EQ(5.f, child_raw->draw_properties().maximum_animation_contents_scale); |
7310 EXPECT_EQ( | 7315 EXPECT_EQ( |
7311 5.f, grand_child_raw->draw_properties().maximum_animation_contents_scale); | 7316 5.f, grand_child_raw->draw_properties().maximum_animation_contents_scale); |
7312 | 7317 |
7313 EXPECT_EQ( | 7318 EXPECT_EQ( |
7314 0.f, | 7319 0.f, |
7315 grand_parent_raw->draw_properties().starting_animation_contents_scale); | 7320 grand_parent_raw->draw_properties().starting_animation_contents_scale); |
7316 EXPECT_EQ(0.f, | 7321 EXPECT_EQ(0.f, |
7317 parent_raw->draw_properties().starting_animation_contents_scale); | 7322 parent_raw->draw_properties().starting_animation_contents_scale); |
7318 EXPECT_EQ(1.f, | 7323 EXPECT_EQ(1.f, |
7319 child_raw->draw_properties().starting_animation_contents_scale); | 7324 child_raw->draw_properties().starting_animation_contents_scale); |
7320 EXPECT_EQ( | 7325 EXPECT_EQ( |
7321 1.f, | 7326 1.f, |
7322 grand_child_raw->draw_properties().starting_animation_contents_scale); | 7327 grand_child_raw->draw_properties().starting_animation_contents_scale); |
7323 | 7328 |
7324 AddAnimatedTransformToLayerWithPlayer(grand_parent_raw->id(), timeline, 1.0, | 7329 AddAnimatedTransformToElementWithPlayer(grand_parent_raw->element_id(), |
7325 TransformOperations(), scale); | 7330 timeline, 1.0, TransformOperations(), |
| 7331 scale); |
7326 grand_parent_raw->layer_tree_impl()->property_trees()->needs_rebuild = true; | 7332 grand_parent_raw->layer_tree_impl()->property_trees()->needs_rebuild = true; |
7327 ExecuteCalculateDrawProperties(grand_parent_raw); | 7333 ExecuteCalculateDrawProperties(grand_parent_raw); |
7328 | 7334 |
7329 // |grand_parent| and |child| have scale-affecting animations. | 7335 // |grand_parent| and |child| have scale-affecting animations. |
7330 EXPECT_EQ( | 7336 EXPECT_EQ( |
7331 5.f, | 7337 5.f, |
7332 grand_parent_raw->draw_properties().maximum_animation_contents_scale); | 7338 grand_parent_raw->draw_properties().maximum_animation_contents_scale); |
7333 EXPECT_EQ(5.f, | 7339 EXPECT_EQ(5.f, |
7334 parent_raw->draw_properties().maximum_animation_contents_scale); | 7340 parent_raw->draw_properties().maximum_animation_contents_scale); |
7335 // We don't support combining animated scales from two nodes; 0.f means | 7341 // We don't support combining animated scales from two nodes; 0.f means |
7336 // that the maximum scale could not be computed. | 7342 // that the maximum scale could not be computed. |
7337 EXPECT_EQ(0.f, child_raw->draw_properties().maximum_animation_contents_scale); | 7343 EXPECT_EQ(0.f, child_raw->draw_properties().maximum_animation_contents_scale); |
7338 EXPECT_EQ( | 7344 EXPECT_EQ( |
7339 0.f, grand_child_raw->draw_properties().maximum_animation_contents_scale); | 7345 0.f, grand_child_raw->draw_properties().maximum_animation_contents_scale); |
7340 | 7346 |
7341 EXPECT_EQ( | 7347 EXPECT_EQ( |
7342 1.f, | 7348 1.f, |
7343 grand_parent_raw->draw_properties().starting_animation_contents_scale); | 7349 grand_parent_raw->draw_properties().starting_animation_contents_scale); |
7344 EXPECT_EQ(1.f, | 7350 EXPECT_EQ(1.f, |
7345 parent_raw->draw_properties().starting_animation_contents_scale); | 7351 parent_raw->draw_properties().starting_animation_contents_scale); |
7346 EXPECT_EQ(0.f, | 7352 EXPECT_EQ(0.f, |
7347 child_raw->draw_properties().starting_animation_contents_scale); | 7353 child_raw->draw_properties().starting_animation_contents_scale); |
7348 EXPECT_EQ( | 7354 EXPECT_EQ( |
7349 0.f, | 7355 0.f, |
7350 grand_child_raw->draw_properties().starting_animation_contents_scale); | 7356 grand_child_raw->draw_properties().starting_animation_contents_scale); |
7351 | 7357 |
7352 AddAnimatedTransformToLayerWithPlayer(parent_raw->id(), timeline, 1.0, | 7358 AddAnimatedTransformToElementWithPlayer(parent_raw->element_id(), timeline, |
7353 TransformOperations(), scale); | 7359 1.0, TransformOperations(), scale); |
7354 parent_raw->layer_tree_impl()->property_trees()->needs_rebuild = true; | 7360 parent_raw->layer_tree_impl()->property_trees()->needs_rebuild = true; |
7355 ExecuteCalculateDrawProperties(grand_parent_raw); | 7361 ExecuteCalculateDrawProperties(grand_parent_raw); |
7356 | 7362 |
7357 // |grand_parent|, |parent|, and |child| have scale-affecting animations. | 7363 // |grand_parent|, |parent|, and |child| have scale-affecting animations. |
7358 EXPECT_EQ( | 7364 EXPECT_EQ( |
7359 5.f, | 7365 5.f, |
7360 grand_parent_raw->draw_properties().maximum_animation_contents_scale); | 7366 grand_parent_raw->draw_properties().maximum_animation_contents_scale); |
7361 EXPECT_EQ(0.f, | 7367 EXPECT_EQ(0.f, |
7362 parent_raw->draw_properties().maximum_animation_contents_scale); | 7368 parent_raw->draw_properties().maximum_animation_contents_scale); |
7363 EXPECT_EQ(0.f, child_raw->draw_properties().maximum_animation_contents_scale); | 7369 EXPECT_EQ(0.f, child_raw->draw_properties().maximum_animation_contents_scale); |
7364 EXPECT_EQ( | 7370 EXPECT_EQ( |
7365 0.f, grand_child_raw->draw_properties().maximum_animation_contents_scale); | 7371 0.f, grand_child_raw->draw_properties().maximum_animation_contents_scale); |
7366 | 7372 |
7367 EXPECT_EQ( | 7373 EXPECT_EQ( |
7368 1.f, | 7374 1.f, |
7369 grand_parent_raw->draw_properties().starting_animation_contents_scale); | 7375 grand_parent_raw->draw_properties().starting_animation_contents_scale); |
7370 EXPECT_EQ(0.f, | 7376 EXPECT_EQ(0.f, |
7371 parent_raw->draw_properties().starting_animation_contents_scale); | 7377 parent_raw->draw_properties().starting_animation_contents_scale); |
7372 EXPECT_EQ(0.f, | 7378 EXPECT_EQ(0.f, |
7373 child_raw->draw_properties().starting_animation_contents_scale); | 7379 child_raw->draw_properties().starting_animation_contents_scale); |
7374 EXPECT_EQ( | 7380 EXPECT_EQ( |
7375 0.f, | 7381 0.f, |
7376 grand_child_raw->draw_properties().starting_animation_contents_scale); | 7382 grand_child_raw->draw_properties().starting_animation_contents_scale); |
7377 | 7383 |
7378 AbortAnimationsOnLayerWithPlayer(grand_parent_raw->id(), timeline, | 7384 AbortAnimationsOnElementWithPlayer(grand_parent_raw->element_id(), timeline, |
7379 TargetProperty::TRANSFORM); | 7385 TargetProperty::TRANSFORM); |
7380 AbortAnimationsOnLayerWithPlayer(parent_raw->id(), timeline, | 7386 AbortAnimationsOnElementWithPlayer(parent_raw->element_id(), timeline, |
7381 TargetProperty::TRANSFORM); | 7387 TargetProperty::TRANSFORM); |
7382 AbortAnimationsOnLayerWithPlayer(child_raw->id(), timeline, | 7388 AbortAnimationsOnElementWithPlayer(child_raw->element_id(), timeline, |
7383 TargetProperty::TRANSFORM); | 7389 TargetProperty::TRANSFORM); |
7384 | 7390 |
7385 TransformOperations perspective; | 7391 TransformOperations perspective; |
7386 perspective.AppendPerspective(10.f); | 7392 perspective.AppendPerspective(10.f); |
7387 | 7393 |
7388 AddAnimatedTransformToLayerWithPlayer(child_raw->id(), timeline, 1.0, | 7394 AddAnimatedTransformToElementWithPlayer(child_raw->element_id(), timeline, |
7389 TransformOperations(), perspective); | 7395 1.0, TransformOperations(), |
| 7396 perspective); |
7390 child_raw->layer_tree_impl()->property_trees()->needs_rebuild = true; | 7397 child_raw->layer_tree_impl()->property_trees()->needs_rebuild = true; |
7391 ExecuteCalculateDrawProperties(grand_parent_raw); | 7398 ExecuteCalculateDrawProperties(grand_parent_raw); |
7392 | 7399 |
7393 // |child| has a scale-affecting animation but computing the maximum of this | 7400 // |child| has a scale-affecting animation but computing the maximum of this |
7394 // animation is not supported. | 7401 // animation is not supported. |
7395 EXPECT_EQ( | 7402 EXPECT_EQ( |
7396 0.f, | 7403 0.f, |
7397 grand_parent_raw->draw_properties().maximum_animation_contents_scale); | 7404 grand_parent_raw->draw_properties().maximum_animation_contents_scale); |
7398 EXPECT_EQ(0.f, | 7405 EXPECT_EQ(0.f, |
7399 parent_raw->draw_properties().maximum_animation_contents_scale); | 7406 parent_raw->draw_properties().maximum_animation_contents_scale); |
7400 EXPECT_EQ(0.f, child_raw->draw_properties().maximum_animation_contents_scale); | 7407 EXPECT_EQ(0.f, child_raw->draw_properties().maximum_animation_contents_scale); |
7401 EXPECT_EQ( | 7408 EXPECT_EQ( |
7402 0.f, grand_child_raw->draw_properties().maximum_animation_contents_scale); | 7409 0.f, grand_child_raw->draw_properties().maximum_animation_contents_scale); |
7403 | 7410 |
7404 EXPECT_EQ( | 7411 EXPECT_EQ( |
7405 0.f, | 7412 0.f, |
7406 grand_parent_raw->draw_properties().starting_animation_contents_scale); | 7413 grand_parent_raw->draw_properties().starting_animation_contents_scale); |
7407 EXPECT_EQ(0.f, | 7414 EXPECT_EQ(0.f, |
7408 parent_raw->draw_properties().starting_animation_contents_scale); | 7415 parent_raw->draw_properties().starting_animation_contents_scale); |
7409 EXPECT_EQ(0.f, | 7416 EXPECT_EQ(0.f, |
7410 child_raw->draw_properties().starting_animation_contents_scale); | 7417 child_raw->draw_properties().starting_animation_contents_scale); |
7411 EXPECT_EQ( | 7418 EXPECT_EQ( |
7412 0.f, | 7419 0.f, |
7413 grand_child_raw->draw_properties().starting_animation_contents_scale); | 7420 grand_child_raw->draw_properties().starting_animation_contents_scale); |
7414 | 7421 |
7415 AbortAnimationsOnLayerWithPlayer(child_raw->id(), timeline, | 7422 AbortAnimationsOnElementWithPlayer(child_raw->element_id(), timeline, |
7416 TargetProperty::TRANSFORM); | 7423 TargetProperty::TRANSFORM); |
7417 gfx::Transform scale_matrix; | 7424 gfx::Transform scale_matrix; |
7418 scale_matrix.Scale(1.f, 2.f); | 7425 scale_matrix.Scale(1.f, 2.f); |
7419 grand_parent_raw->SetTransform(scale_matrix); | 7426 grand_parent_raw->SetTransform(scale_matrix); |
7420 parent_raw->SetTransform(scale_matrix); | 7427 parent_raw->SetTransform(scale_matrix); |
7421 grand_parent_raw->layer_tree_impl()->property_trees()->needs_rebuild = true; | 7428 grand_parent_raw->layer_tree_impl()->property_trees()->needs_rebuild = true; |
7422 | 7429 |
7423 AddAnimatedTransformToLayerWithPlayer(parent_raw->id(), timeline, 1.0, | 7430 AddAnimatedTransformToElementWithPlayer(parent_raw->element_id(), timeline, |
7424 TransformOperations(), scale); | 7431 1.0, TransformOperations(), scale); |
7425 ExecuteCalculateDrawProperties(grand_parent_raw); | 7432 ExecuteCalculateDrawProperties(grand_parent_raw); |
7426 | 7433 |
7427 // |grand_parent| and |parent| each have scale 2.f. |parent| has a scale | 7434 // |grand_parent| and |parent| each have scale 2.f. |parent| has a scale |
7428 // animation with maximum scale 5.f. | 7435 // animation with maximum scale 5.f. |
7429 EXPECT_EQ( | 7436 EXPECT_EQ( |
7430 0.f, | 7437 0.f, |
7431 grand_parent_raw->draw_properties().maximum_animation_contents_scale); | 7438 grand_parent_raw->draw_properties().maximum_animation_contents_scale); |
7432 EXPECT_EQ(10.f, | 7439 EXPECT_EQ(10.f, |
7433 parent_raw->draw_properties().maximum_animation_contents_scale); | 7440 parent_raw->draw_properties().maximum_animation_contents_scale); |
7434 EXPECT_EQ(10.f, | 7441 EXPECT_EQ(10.f, |
(...skipping 116 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
7551 | 7558 |
7552 TEST_F(LayerTreeHostCommonTest, RenderSurfaceLayerListMembership) { | 7559 TEST_F(LayerTreeHostCommonTest, RenderSurfaceLayerListMembership) { |
7553 FakeImplTaskRunnerProvider task_runner_provider; | 7560 FakeImplTaskRunnerProvider task_runner_provider; |
7554 TestSharedBitmapManager shared_bitmap_manager; | 7561 TestSharedBitmapManager shared_bitmap_manager; |
7555 TestTaskGraphRunner task_graph_runner; | 7562 TestTaskGraphRunner task_graph_runner; |
7556 FakeLayerTreeHostImpl host_impl(&task_runner_provider, &shared_bitmap_manager, | 7563 FakeLayerTreeHostImpl host_impl(&task_runner_provider, &shared_bitmap_manager, |
7557 &task_graph_runner); | 7564 &task_graph_runner); |
7558 gfx::Transform identity_matrix; | 7565 gfx::Transform identity_matrix; |
7559 | 7566 |
7560 std::unique_ptr<LayerImpl> grand_parent = | 7567 std::unique_ptr<LayerImpl> grand_parent = |
7561 LayerImpl::Create(host_impl.active_tree(), 1); | 7568 CreateTestLayerImpl(host_impl.active_tree(), 1); |
7562 std::unique_ptr<LayerImpl> parent = | 7569 std::unique_ptr<LayerImpl> parent = |
7563 LayerImpl::Create(host_impl.active_tree(), 3); | 7570 CreateTestLayerImpl(host_impl.active_tree(), 3); |
7564 std::unique_ptr<LayerImpl> child = | 7571 std::unique_ptr<LayerImpl> child = |
7565 LayerImpl::Create(host_impl.active_tree(), 5); | 7572 CreateTestLayerImpl(host_impl.active_tree(), 5); |
7566 std::unique_ptr<LayerImpl> grand_child1 = | 7573 std::unique_ptr<LayerImpl> grand_child1 = |
7567 LayerImpl::Create(host_impl.active_tree(), 7); | 7574 CreateTestLayerImpl(host_impl.active_tree(), 7); |
7568 std::unique_ptr<LayerImpl> grand_child2 = | 7575 std::unique_ptr<LayerImpl> grand_child2 = |
7569 LayerImpl::Create(host_impl.active_tree(), 9); | 7576 CreateTestLayerImpl(host_impl.active_tree(), 9); |
7570 | 7577 |
7571 LayerImpl* grand_parent_raw = grand_parent.get(); | 7578 LayerImpl* grand_parent_raw = grand_parent.get(); |
7572 LayerImpl* parent_raw = parent.get(); | 7579 LayerImpl* parent_raw = parent.get(); |
7573 LayerImpl* child_raw = child.get(); | 7580 LayerImpl* child_raw = child.get(); |
7574 LayerImpl* grand_child1_raw = grand_child1.get(); | 7581 LayerImpl* grand_child1_raw = grand_child1.get(); |
7575 LayerImpl* grand_child2_raw = grand_child2.get(); | 7582 LayerImpl* grand_child2_raw = grand_child2.get(); |
7576 | 7583 |
7577 child->AddChild(std::move(grand_child1)); | 7584 child->AddChild(std::move(grand_child1)); |
7578 child->AddChild(std::move(grand_child2)); | 7585 child->AddChild(std::move(grand_child2)); |
7579 parent->AddChild(std::move(child)); | 7586 parent->AddChild(std::move(child)); |
(...skipping 87 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
7667 EXPECT_TRUE(grand_child2_raw->is_drawn_render_surface_layer_list_member()); | 7674 EXPECT_TRUE(grand_child2_raw->is_drawn_render_surface_layer_list_member()); |
7668 | 7675 |
7669 expected.clear(); | 7676 expected.clear(); |
7670 expected.insert(grand_child2_raw); | 7677 expected.insert(grand_child2_raw); |
7671 | 7678 |
7672 actual.clear(); | 7679 actual.clear(); |
7673 GatherDrawnLayers(render_surface_layer_list_impl(), &actual); | 7680 GatherDrawnLayers(render_surface_layer_list_impl(), &actual); |
7674 EXPECT_EQ(expected, actual); | 7681 EXPECT_EQ(expected, actual); |
7675 | 7682 |
7676 // Add a mask layer to child. | 7683 // Add a mask layer to child. |
7677 child_raw->SetMaskLayer(LayerImpl::Create(host_impl.active_tree(), 6)); | 7684 child_raw->SetMaskLayer(CreateTestLayerImpl(host_impl.active_tree(), 6)); |
7678 child_raw->layer_tree_impl()->property_trees()->needs_rebuild = true; | 7685 child_raw->layer_tree_impl()->property_trees()->needs_rebuild = true; |
7679 | 7686 |
7680 ExecuteCalculateDrawProperties(grand_parent_raw); | 7687 ExecuteCalculateDrawProperties(grand_parent_raw); |
7681 | 7688 |
7682 EXPECT_FALSE(grand_parent_raw->is_drawn_render_surface_layer_list_member()); | 7689 EXPECT_FALSE(grand_parent_raw->is_drawn_render_surface_layer_list_member()); |
7683 EXPECT_FALSE(parent_raw->is_drawn_render_surface_layer_list_member()); | 7690 EXPECT_FALSE(parent_raw->is_drawn_render_surface_layer_list_member()); |
7684 EXPECT_FALSE(child_raw->is_drawn_render_surface_layer_list_member()); | 7691 EXPECT_FALSE(child_raw->is_drawn_render_surface_layer_list_member()); |
7685 EXPECT_TRUE( | 7692 EXPECT_TRUE( |
7686 child_raw->mask_layer()->is_drawn_render_surface_layer_list_member()); | 7693 child_raw->mask_layer()->is_drawn_render_surface_layer_list_member()); |
7687 EXPECT_FALSE(grand_child1_raw->is_drawn_render_surface_layer_list_member()); | 7694 EXPECT_FALSE(grand_child1_raw->is_drawn_render_surface_layer_list_member()); |
7688 EXPECT_TRUE(grand_child2_raw->is_drawn_render_surface_layer_list_member()); | 7695 EXPECT_TRUE(grand_child2_raw->is_drawn_render_surface_layer_list_member()); |
7689 | 7696 |
7690 expected.clear(); | 7697 expected.clear(); |
7691 expected.insert(grand_child2_raw); | 7698 expected.insert(grand_child2_raw); |
7692 expected.insert(child_raw->mask_layer()); | 7699 expected.insert(child_raw->mask_layer()); |
7693 | 7700 |
7694 expected.clear(); | 7701 expected.clear(); |
7695 expected.insert(grand_child2_raw); | 7702 expected.insert(grand_child2_raw); |
7696 expected.insert(child_raw->mask_layer()); | 7703 expected.insert(child_raw->mask_layer()); |
7697 | 7704 |
7698 actual.clear(); | 7705 actual.clear(); |
7699 GatherDrawnLayers(render_surface_layer_list_impl(), &actual); | 7706 GatherDrawnLayers(render_surface_layer_list_impl(), &actual); |
7700 EXPECT_EQ(expected, actual); | 7707 EXPECT_EQ(expected, actual); |
7701 | 7708 |
7702 // Add replica mask layer. | 7709 // Add replica mask layer. |
7703 std::unique_ptr<LayerImpl> replica_layer = | 7710 std::unique_ptr<LayerImpl> replica_layer = |
7704 LayerImpl::Create(host_impl.active_tree(), 20); | 7711 CreateTestLayerImpl(host_impl.active_tree(), 20); |
7705 replica_layer->SetMaskLayer(LayerImpl::Create(host_impl.active_tree(), 21)); | 7712 replica_layer->SetMaskLayer(CreateTestLayerImpl(host_impl.active_tree(), 21)); |
7706 child_raw->SetReplicaLayer(std::move(replica_layer)); | 7713 child_raw->SetReplicaLayer(std::move(replica_layer)); |
7707 child_raw->layer_tree_impl()->property_trees()->needs_rebuild = true; | 7714 child_raw->layer_tree_impl()->property_trees()->needs_rebuild = true; |
7708 | 7715 |
7709 ExecuteCalculateDrawProperties(grand_parent_raw); | 7716 ExecuteCalculateDrawProperties(grand_parent_raw); |
7710 | 7717 |
7711 EXPECT_FALSE(grand_parent_raw->is_drawn_render_surface_layer_list_member()); | 7718 EXPECT_FALSE(grand_parent_raw->is_drawn_render_surface_layer_list_member()); |
7712 EXPECT_FALSE(parent_raw->is_drawn_render_surface_layer_list_member()); | 7719 EXPECT_FALSE(parent_raw->is_drawn_render_surface_layer_list_member()); |
7713 EXPECT_FALSE(child_raw->is_drawn_render_surface_layer_list_member()); | 7720 EXPECT_FALSE(child_raw->is_drawn_render_surface_layer_list_member()); |
7714 EXPECT_TRUE( | 7721 EXPECT_TRUE( |
7715 child_raw->mask_layer()->is_drawn_render_surface_layer_list_member()); | 7722 child_raw->mask_layer()->is_drawn_render_surface_layer_list_member()); |
(...skipping 86 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
7802 TEST_F(LayerTreeHostCommonTest, DrawPropertyScales) { | 7809 TEST_F(LayerTreeHostCommonTest, DrawPropertyScales) { |
7803 FakeImplTaskRunnerProvider task_runner_provider; | 7810 FakeImplTaskRunnerProvider task_runner_provider; |
7804 TestSharedBitmapManager shared_bitmap_manager; | 7811 TestSharedBitmapManager shared_bitmap_manager; |
7805 TestTaskGraphRunner task_graph_runner; | 7812 TestTaskGraphRunner task_graph_runner; |
7806 LayerTreeSettings settings = host()->settings(); | 7813 LayerTreeSettings settings = host()->settings(); |
7807 settings.layer_transforms_should_scale_layer_contents = true; | 7814 settings.layer_transforms_should_scale_layer_contents = true; |
7808 FakeLayerTreeHostImpl host_impl(settings, &task_runner_provider, | 7815 FakeLayerTreeHostImpl host_impl(settings, &task_runner_provider, |
7809 &shared_bitmap_manager, &task_graph_runner); | 7816 &shared_bitmap_manager, &task_graph_runner); |
7810 | 7817 |
7811 std::unique_ptr<LayerImpl> root = | 7818 std::unique_ptr<LayerImpl> root = |
7812 LayerImpl::Create(host_impl.active_tree(), 1); | 7819 CreateTestLayerImpl(host_impl.active_tree(), 1); |
7813 LayerImpl* root_layer = root.get(); | 7820 LayerImpl* root_layer = root.get(); |
7814 std::unique_ptr<LayerImpl> child1 = | 7821 std::unique_ptr<LayerImpl> child1 = |
7815 LayerImpl::Create(host_impl.active_tree(), 2); | 7822 CreateTestLayerImpl(host_impl.active_tree(), 2); |
7816 LayerImpl* child1_layer = child1.get(); | 7823 LayerImpl* child1_layer = child1.get(); |
7817 std::unique_ptr<LayerImpl> child2 = | 7824 std::unique_ptr<LayerImpl> child2 = |
7818 LayerImpl::Create(host_impl.active_tree(), 3); | 7825 CreateTestLayerImpl(host_impl.active_tree(), 3); |
7819 LayerImpl* child2_layer = child2.get(); | 7826 LayerImpl* child2_layer = child2.get(); |
7820 | 7827 |
7821 root->AddChild(std::move(child1)); | 7828 root->AddChild(std::move(child1)); |
7822 root->AddChild(std::move(child2)); | 7829 root->AddChild(std::move(child2)); |
7823 root->test_properties()->force_render_surface = true; | 7830 root->test_properties()->force_render_surface = true; |
7824 root->SetDrawsContent(true); | 7831 root->SetDrawsContent(true); |
7825 host_impl.active_tree()->SetRootLayer(std::move(root)); | 7832 host_impl.active_tree()->SetRootLayer(std::move(root)); |
7826 | 7833 |
7827 gfx::Transform identity_matrix, scale_transform_child1, | 7834 gfx::Transform identity_matrix, scale_transform_child1, |
7828 scale_transform_child2; | 7835 scale_transform_child2; |
7829 scale_transform_child1.Scale(2, 3); | 7836 scale_transform_child1.Scale(2, 3); |
7830 scale_transform_child2.Scale(4, 5); | 7837 scale_transform_child2.Scale(4, 5); |
7831 | 7838 |
7832 SetLayerPropertiesForTesting(root_layer, identity_matrix, gfx::Point3F(), | 7839 SetLayerPropertiesForTesting(root_layer, identity_matrix, gfx::Point3F(), |
7833 gfx::PointF(), gfx::Size(1, 1), true, false, | 7840 gfx::PointF(), gfx::Size(1, 1), true, false, |
7834 true); | 7841 true); |
7835 SetLayerPropertiesForTesting(child1_layer, scale_transform_child1, | 7842 SetLayerPropertiesForTesting(child1_layer, scale_transform_child1, |
7836 gfx::Point3F(), gfx::PointF(), gfx::Size(1, 1), | 7843 gfx::Point3F(), gfx::PointF(), gfx::Size(1, 1), |
7837 true, false, false); | 7844 true, false, false); |
7838 | 7845 |
7839 child1_layer->SetMaskLayer(LayerImpl::Create(host_impl.active_tree(), 4)); | 7846 child1_layer->SetMaskLayer(CreateTestLayerImpl(host_impl.active_tree(), 4)); |
7840 child1_layer->SetDrawsContent(true); | 7847 child1_layer->SetDrawsContent(true); |
7841 | 7848 |
7842 std::unique_ptr<LayerImpl> replica_layer = | 7849 std::unique_ptr<LayerImpl> replica_layer = |
7843 LayerImpl::Create(host_impl.active_tree(), 5); | 7850 CreateTestLayerImpl(host_impl.active_tree(), 5); |
7844 replica_layer->SetMaskLayer(LayerImpl::Create(host_impl.active_tree(), 6)); | 7851 replica_layer->SetMaskLayer(CreateTestLayerImpl(host_impl.active_tree(), 6)); |
7845 child1_layer->SetReplicaLayer(std::move(replica_layer)); | 7852 child1_layer->SetReplicaLayer(std::move(replica_layer)); |
7846 child1_layer->SetHasRenderSurface(true); | 7853 child1_layer->SetHasRenderSurface(true); |
7847 | 7854 |
7848 ExecuteCalculateDrawProperties(root_layer); | 7855 ExecuteCalculateDrawProperties(root_layer); |
7849 | 7856 |
7850 TransformOperations scale; | 7857 TransformOperations scale; |
7851 scale.AppendScale(5.f, 8.f, 3.f); | 7858 scale.AppendScale(5.f, 8.f, 3.f); |
7852 | 7859 |
7853 scoped_refptr<AnimationTimeline> timeline = | 7860 scoped_refptr<AnimationTimeline> timeline = |
7854 AnimationTimeline::Create(AnimationIdProvider::NextTimelineId()); | 7861 AnimationTimeline::Create(AnimationIdProvider::NextTimelineId()); |
7855 host_impl.animation_host()->AddAnimationTimeline(timeline); | 7862 host_impl.animation_host()->AddAnimationTimeline(timeline); |
7856 | 7863 |
7857 AddAnimatedTransformToLayerWithPlayer(child2_layer->id(), timeline, 1.0, | 7864 AddAnimatedTransformToElementWithPlayer(child2_layer->element_id(), timeline, |
7858 TransformOperations(), scale); | 7865 1.0, TransformOperations(), scale); |
7859 | 7866 |
7860 SetLayerPropertiesForTesting(child2_layer, scale_transform_child2, | 7867 SetLayerPropertiesForTesting(child2_layer, scale_transform_child2, |
7861 gfx::Point3F(), gfx::PointF(), gfx::Size(1, 1), | 7868 gfx::Point3F(), gfx::PointF(), gfx::Size(1, 1), |
7862 true, false, false); | 7869 true, false, false); |
7863 child2_layer->SetDrawsContent(true); | 7870 child2_layer->SetDrawsContent(true); |
7864 | 7871 |
7865 root_layer->layer_tree_impl()->property_trees()->needs_rebuild = true; | 7872 root_layer->layer_tree_impl()->property_trees()->needs_rebuild = true; |
7866 ExecuteCalculateDrawProperties(root_layer); | 7873 ExecuteCalculateDrawProperties(root_layer); |
7867 | 7874 |
7868 EXPECT_FLOAT_EQ(1.f, root_layer->GetIdealContentsScale()); | 7875 EXPECT_FLOAT_EQ(1.f, root_layer->GetIdealContentsScale()); |
(...skipping 144 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
8013 | 8020 |
8014 // Sublayer should be bigger than the root enlarged by bounds_delta. | 8021 // Sublayer should be bigger than the root enlarged by bounds_delta. |
8015 gfx::Size sublayer_size = gfx::Size(300, 1000); | 8022 gfx::Size sublayer_size = gfx::Size(300, 1000); |
8016 | 8023 |
8017 // Device viewport accomidated the root and the top controls. | 8024 // Device viewport accomidated the root and the top controls. |
8018 gfx::Size device_viewport_size = gfx::Size(300, 600); | 8025 gfx::Size device_viewport_size = gfx::Size(300, 600); |
8019 gfx::Transform identity_matrix; | 8026 gfx::Transform identity_matrix; |
8020 | 8027 |
8021 host_impl.SetViewportSize(device_viewport_size); | 8028 host_impl.SetViewportSize(device_viewport_size); |
8022 host_impl.active_tree()->SetRootLayer( | 8029 host_impl.active_tree()->SetRootLayer( |
8023 LayerImpl::Create(host_impl.active_tree(), 1)); | 8030 CreateTestLayerImpl(host_impl.active_tree(), 1)); |
8024 | 8031 |
8025 LayerImpl* root = host_impl.active_tree()->root_layer(); | 8032 LayerImpl* root = host_impl.active_tree()->root_layer(); |
8026 SetLayerPropertiesForTesting(root, | 8033 SetLayerPropertiesForTesting(root, |
8027 identity_matrix, | 8034 identity_matrix, |
8028 gfx::Point3F(), | 8035 gfx::Point3F(), |
8029 gfx::PointF(), | 8036 gfx::PointF(), |
8030 root_size, | 8037 root_size, |
8031 false, | 8038 false, |
8032 false, | 8039 false, |
8033 true); | 8040 true); |
8034 root->SetMasksToBounds(true); | 8041 root->SetMasksToBounds(true); |
8035 | 8042 |
8036 root->AddChild(LayerImpl::Create(host_impl.active_tree(), 2)); | 8043 root->AddChild(CreateTestLayerImpl(host_impl.active_tree(), 2)); |
8037 | 8044 |
8038 LayerImpl* sublayer = root->child_at(0); | 8045 LayerImpl* sublayer = root->child_at(0); |
8039 SetLayerPropertiesForTesting(sublayer, | 8046 SetLayerPropertiesForTesting(sublayer, |
8040 identity_matrix, | 8047 identity_matrix, |
8041 gfx::Point3F(), | 8048 gfx::Point3F(), |
8042 gfx::PointF(), | 8049 gfx::PointF(), |
8043 sublayer_size, | 8050 sublayer_size, |
8044 false, | 8051 false, |
8045 false, | 8052 false, |
8046 false); | 8053 false); |
8047 sublayer->SetDrawsContent(true); | 8054 sublayer->SetDrawsContent(true); |
8048 | 8055 |
8049 LayerImplList layer_impl_list; | 8056 LayerImplList layer_impl_list; |
8050 LayerTreeHostCommon::CalcDrawPropsImplInputsForTesting inputs( | 8057 LayerTreeHostCommon::CalcDrawPropsImplInputsForTesting inputs( |
8051 root, device_viewport_size, &layer_impl_list); | 8058 root, device_viewport_size, &layer_impl_list); |
8052 | 8059 |
8053 LayerTreeHostCommon::CalculateDrawPropertiesForTesting(&inputs); | 8060 LayerTreeHostCommon::CalculateDrawPropertiesForTesting(&inputs); |
8054 EXPECT_EQ(gfx::Rect(root_size), sublayer->visible_layer_rect()); | 8061 EXPECT_EQ(gfx::Rect(root_size), sublayer->visible_layer_rect()); |
8055 | 8062 |
8056 root->SetBoundsDelta(gfx::Vector2dF(0.0, 50.0)); | 8063 root->SetBoundsDelta(gfx::Vector2dF(0.0, 50.0)); |
8057 LayerTreeHostCommon::CalculateDrawPropertiesForTesting(&inputs); | 8064 LayerTreeHostCommon::CalculateDrawPropertiesForTesting(&inputs); |
8058 | 8065 |
8059 gfx::Rect affected_by_delta(0, 0, root_size.width(), | 8066 gfx::Rect affected_by_delta(0, 0, root_size.width(), |
8060 root_size.height() + 50); | 8067 root_size.height() + 50); |
8061 EXPECT_EQ(affected_by_delta, sublayer->visible_layer_rect()); | 8068 EXPECT_EQ(affected_by_delta, sublayer->visible_layer_rect()); |
8062 } | 8069 } |
8063 | 8070 |
8064 TEST_F(LayerTreeHostCommonTest, NodesAffectedByBoundsDeltaGetUpdated) { | 8071 TEST_F(LayerTreeHostCommonTest, NodesAffectedByBoundsDeltaGetUpdated) { |
8065 scoped_refptr<Layer> root = Layer::Create(); | 8072 scoped_refptr<Layer> root = CreateTestLayer(); |
8066 scoped_refptr<Layer> inner_viewport_container_layer = Layer::Create(); | 8073 scoped_refptr<Layer> inner_viewport_container_layer = CreateTestLayer(); |
8067 scoped_refptr<Layer> inner_viewport_scroll_layer = Layer::Create(); | 8074 scoped_refptr<Layer> inner_viewport_scroll_layer = CreateTestLayer(); |
8068 scoped_refptr<Layer> outer_viewport_container_layer = Layer::Create(); | 8075 scoped_refptr<Layer> outer_viewport_container_layer = CreateTestLayer(); |
8069 scoped_refptr<Layer> outer_viewport_scroll_layer = Layer::Create(); | 8076 scoped_refptr<Layer> outer_viewport_scroll_layer = CreateTestLayer(); |
8070 | 8077 |
8071 root->AddChild(inner_viewport_container_layer); | 8078 root->AddChild(inner_viewport_container_layer); |
8072 inner_viewport_container_layer->AddChild(inner_viewport_scroll_layer); | 8079 inner_viewport_container_layer->AddChild(inner_viewport_scroll_layer); |
8073 inner_viewport_scroll_layer->AddChild(outer_viewport_container_layer); | 8080 inner_viewport_scroll_layer->AddChild(outer_viewport_container_layer); |
8074 outer_viewport_container_layer->AddChild(outer_viewport_scroll_layer); | 8081 outer_viewport_container_layer->AddChild(outer_viewport_scroll_layer); |
8075 | 8082 |
8076 inner_viewport_scroll_layer->SetScrollClipLayerId( | 8083 inner_viewport_scroll_layer->SetScrollClipLayerId( |
8077 inner_viewport_container_layer->id()); | 8084 inner_viewport_container_layer->id()); |
8078 outer_viewport_scroll_layer->SetScrollClipLayerId( | 8085 outer_viewport_scroll_layer->SetScrollClipLayerId( |
8079 outer_viewport_container_layer->id()); | 8086 outer_viewport_container_layer->id()); |
8080 | 8087 |
8081 inner_viewport_scroll_layer->SetIsContainerForFixedPositionLayers(true); | 8088 inner_viewport_scroll_layer->SetIsContainerForFixedPositionLayers(true); |
8082 outer_viewport_scroll_layer->SetIsContainerForFixedPositionLayers(true); | 8089 outer_viewport_scroll_layer->SetIsContainerForFixedPositionLayers(true); |
8083 | 8090 |
8084 host()->SetRootLayer(root); | 8091 host()->SetRootLayer(root); |
8085 host()->RegisterViewportLayers(nullptr, root, inner_viewport_scroll_layer, | 8092 host()->RegisterViewportLayers(nullptr, root, inner_viewport_scroll_layer, |
8086 outer_viewport_scroll_layer); | 8093 outer_viewport_scroll_layer); |
8087 | 8094 |
8088 scoped_refptr<Layer> fixed_to_inner = Layer::Create(); | 8095 scoped_refptr<Layer> fixed_to_inner = CreateTestLayer(); |
8089 scoped_refptr<Layer> fixed_to_outer = Layer::Create(); | 8096 scoped_refptr<Layer> fixed_to_outer = CreateTestLayer(); |
8090 | 8097 |
8091 inner_viewport_scroll_layer->AddChild(fixed_to_inner); | 8098 inner_viewport_scroll_layer->AddChild(fixed_to_inner); |
8092 outer_viewport_scroll_layer->AddChild(fixed_to_outer); | 8099 outer_viewport_scroll_layer->AddChild(fixed_to_outer); |
8093 | 8100 |
8094 LayerPositionConstraint fixed_to_right; | 8101 LayerPositionConstraint fixed_to_right; |
8095 fixed_to_right.set_is_fixed_position(true); | 8102 fixed_to_right.set_is_fixed_position(true); |
8096 fixed_to_right.set_is_fixed_to_right_edge(true); | 8103 fixed_to_right.set_is_fixed_to_right_edge(true); |
8097 | 8104 |
8098 fixed_to_inner->SetPositionConstraint(fixed_to_right); | 8105 fixed_to_inner->SetPositionConstraint(fixed_to_right); |
8099 fixed_to_outer->SetPositionConstraint(fixed_to_right); | 8106 fixed_to_outer->SetPositionConstraint(fixed_to_right); |
(...skipping 14 matching lines...) Expand all Loading... |
8114 | 8121 |
8115 fixed_to_outer->SetPositionConstraint(fixed_to_left); | 8122 fixed_to_outer->SetPositionConstraint(fixed_to_left); |
8116 | 8123 |
8117 ExecuteCalculateDrawPropertiesWithPropertyTrees(root.get()); | 8124 ExecuteCalculateDrawPropertiesWithPropertyTrees(root.get()); |
8118 EXPECT_FALSE(transform_tree.HasNodesAffectedByInnerViewportBoundsDelta()); | 8125 EXPECT_FALSE(transform_tree.HasNodesAffectedByInnerViewportBoundsDelta()); |
8119 EXPECT_FALSE(transform_tree.HasNodesAffectedByOuterViewportBoundsDelta()); | 8126 EXPECT_FALSE(transform_tree.HasNodesAffectedByOuterViewportBoundsDelta()); |
8120 } | 8127 } |
8121 | 8128 |
8122 TEST_F(LayerTreeHostCommonTest, VisibleContentRectForAnimatedLayer) { | 8129 TEST_F(LayerTreeHostCommonTest, VisibleContentRectForAnimatedLayer) { |
8123 const gfx::Transform identity_matrix; | 8130 const gfx::Transform identity_matrix; |
8124 scoped_refptr<Layer> root = Layer::Create(); | 8131 scoped_refptr<Layer> root = CreateTestLayer(); |
8125 scoped_refptr<LayerWithForcedDrawsContent> animated = | 8132 scoped_refptr<LayerWithForcedDrawsContent> animated = |
8126 make_scoped_refptr(new LayerWithForcedDrawsContent()); | 8133 make_scoped_refptr(new LayerWithForcedDrawsContent()); |
8127 | 8134 |
8128 root->AddChild(animated); | 8135 root->AddChild(animated); |
8129 | 8136 |
8130 host()->SetRootLayer(root); | 8137 host()->SetRootLayer(root); |
8131 | 8138 |
8132 SetLayerPropertiesForTesting(root.get(), identity_matrix, gfx::Point3F(), | 8139 SetLayerPropertiesForTesting(root.get(), identity_matrix, gfx::Point3F(), |
8133 gfx::PointF(), gfx::Size(100, 100), true, false); | 8140 gfx::PointF(), gfx::Size(100, 100), true, false); |
8134 SetLayerPropertiesForTesting(animated.get(), identity_matrix, gfx::Point3F(), | 8141 SetLayerPropertiesForTesting(animated.get(), identity_matrix, gfx::Point3F(), |
8135 gfx::PointF(), gfx::Size(20, 20), true, false); | 8142 gfx::PointF(), gfx::Size(20, 20), true, false); |
8136 | 8143 |
8137 root->SetMasksToBounds(true); | 8144 root->SetMasksToBounds(true); |
8138 root->SetForceRenderSurfaceForTesting(true); | 8145 root->SetForceRenderSurfaceForTesting(true); |
8139 animated->SetOpacity(0.f); | 8146 animated->SetOpacity(0.f); |
8140 | 8147 |
8141 AddOpacityTransitionToLayerWithPlayer(animated->id(), timeline(), 10.0, 0.f, | 8148 AddOpacityTransitionToElementWithPlayer(animated->element_id(), timeline(), |
8142 1.f, false); | 8149 10.0, 0.f, 1.f, false); |
8143 ExecuteCalculateDrawPropertiesWithPropertyTrees(root.get()); | 8150 ExecuteCalculateDrawPropertiesWithPropertyTrees(root.get()); |
8144 | 8151 |
8145 EXPECT_FALSE(animated->visible_layer_rect_for_testing().IsEmpty()); | 8152 EXPECT_FALSE(animated->visible_layer_rect_for_testing().IsEmpty()); |
8146 } | 8153 } |
8147 | 8154 |
8148 TEST_F(LayerTreeHostCommonTest, | 8155 TEST_F(LayerTreeHostCommonTest, |
8149 VisibleContentRectForAnimatedLayerWithSingularTransform) { | 8156 VisibleContentRectForAnimatedLayerWithSingularTransform) { |
8150 const gfx::Transform identity_matrix; | 8157 const gfx::Transform identity_matrix; |
8151 scoped_refptr<Layer> root = Layer::Create(); | 8158 scoped_refptr<Layer> root = CreateTestLayer(); |
8152 scoped_refptr<Layer> clip = Layer::Create(); | 8159 scoped_refptr<Layer> clip = CreateTestLayer(); |
8153 scoped_refptr<LayerWithForcedDrawsContent> animated = | 8160 scoped_refptr<LayerWithForcedDrawsContent> animated = |
8154 make_scoped_refptr(new LayerWithForcedDrawsContent()); | 8161 make_scoped_refptr(new LayerWithForcedDrawsContent()); |
8155 scoped_refptr<LayerWithForcedDrawsContent> surface = | 8162 scoped_refptr<LayerWithForcedDrawsContent> surface = |
8156 make_scoped_refptr(new LayerWithForcedDrawsContent()); | 8163 make_scoped_refptr(new LayerWithForcedDrawsContent()); |
8157 scoped_refptr<LayerWithForcedDrawsContent> descendant_of_animation = | 8164 scoped_refptr<LayerWithForcedDrawsContent> descendant_of_animation = |
8158 make_scoped_refptr(new LayerWithForcedDrawsContent()); | 8165 make_scoped_refptr(new LayerWithForcedDrawsContent()); |
8159 | 8166 |
8160 root->AddChild(clip); | 8167 root->AddChild(clip); |
8161 clip->AddChild(animated); | 8168 clip->AddChild(animated); |
8162 animated->AddChild(surface); | 8169 animated->AddChild(surface); |
(...skipping 17 matching lines...) Expand all Loading... |
8180 SetLayerPropertiesForTesting(surface.get(), identity_matrix, gfx::Point3F(), | 8187 SetLayerPropertiesForTesting(surface.get(), identity_matrix, gfx::Point3F(), |
8181 gfx::PointF(), gfx::Size(100, 100), true, false); | 8188 gfx::PointF(), gfx::Size(100, 100), true, false); |
8182 SetLayerPropertiesForTesting(descendant_of_animation.get(), identity_matrix, | 8189 SetLayerPropertiesForTesting(descendant_of_animation.get(), identity_matrix, |
8183 gfx::Point3F(), gfx::PointF(), | 8190 gfx::Point3F(), gfx::PointF(), |
8184 gfx::Size(200, 200), true, false); | 8191 gfx::Size(200, 200), true, false); |
8185 | 8192 |
8186 TransformOperations start_transform_operations; | 8193 TransformOperations start_transform_operations; |
8187 start_transform_operations.AppendMatrix(uninvertible_matrix); | 8194 start_transform_operations.AppendMatrix(uninvertible_matrix); |
8188 TransformOperations end_transform_operations; | 8195 TransformOperations end_transform_operations; |
8189 | 8196 |
8190 AddAnimatedTransformToLayerWithPlayer(animated->id(), timeline(), 10.0, | 8197 AddAnimatedTransformToElementWithPlayer(animated->element_id(), timeline(), |
8191 start_transform_operations, | 8198 10.0, start_transform_operations, |
8192 end_transform_operations); | 8199 end_transform_operations); |
8193 ExecuteCalculateDrawPropertiesWithPropertyTrees(root.get()); | 8200 ExecuteCalculateDrawPropertiesWithPropertyTrees(root.get()); |
8194 | 8201 |
8195 // The animated layer has a singular transform and maps to a non-empty rect in | 8202 // The animated layer has a singular transform and maps to a non-empty rect in |
8196 // clipped target space, so is treated as fully visible. | 8203 // clipped target space, so is treated as fully visible. |
8197 EXPECT_EQ(gfx::Rect(120, 120), animated->visible_layer_rect_for_testing()); | 8204 EXPECT_EQ(gfx::Rect(120, 120), animated->visible_layer_rect_for_testing()); |
8198 | 8205 |
8199 // The singular transform on |animated| is flattened when inherited by | 8206 // The singular transform on |animated| is flattened when inherited by |
8200 // |surface|, and this happens to make it invertible. | 8207 // |surface|, and this happens to make it invertible. |
8201 EXPECT_EQ(gfx::Rect(2, 2), surface->visible_layer_rect_for_testing()); | 8208 EXPECT_EQ(gfx::Rect(2, 2), surface->visible_layer_rect_for_testing()); |
8202 EXPECT_EQ(gfx::Rect(2, 2), | 8209 EXPECT_EQ(gfx::Rect(2, 2), |
(...skipping 14 matching lines...) Expand all Loading... |
8217 // means the clip cannot be projected into |surface|'s space, so we treat | 8224 // means the clip cannot be projected into |surface|'s space, so we treat |
8218 // |surface| and layers that draw into it as having empty visible rect. | 8225 // |surface| and layers that draw into it as having empty visible rect. |
8219 EXPECT_EQ(gfx::Rect(), surface->visible_layer_rect_for_testing()); | 8226 EXPECT_EQ(gfx::Rect(), surface->visible_layer_rect_for_testing()); |
8220 EXPECT_EQ(gfx::Rect(), | 8227 EXPECT_EQ(gfx::Rect(), |
8221 descendant_of_animation->visible_layer_rect_for_testing()); | 8228 descendant_of_animation->visible_layer_rect_for_testing()); |
8222 } | 8229 } |
8223 | 8230 |
8224 // Verify that having an animated filter (but no current filter, as these | 8231 // Verify that having an animated filter (but no current filter, as these |
8225 // are mutually exclusive) correctly creates a render surface. | 8232 // are mutually exclusive) correctly creates a render surface. |
8226 TEST_F(LayerTreeHostCommonTest, AnimatedFilterCreatesRenderSurface) { | 8233 TEST_F(LayerTreeHostCommonTest, AnimatedFilterCreatesRenderSurface) { |
8227 scoped_refptr<Layer> root = Layer::Create(); | 8234 scoped_refptr<Layer> root = CreateTestLayer(); |
8228 scoped_refptr<Layer> child = Layer::Create(); | 8235 scoped_refptr<Layer> child = CreateTestLayer(); |
8229 scoped_refptr<Layer> grandchild = Layer::Create(); | 8236 scoped_refptr<Layer> grandchild = CreateTestLayer(); |
8230 root->AddChild(child); | 8237 root->AddChild(child); |
8231 child->AddChild(grandchild); | 8238 child->AddChild(grandchild); |
8232 | 8239 |
8233 gfx::Transform identity_transform; | 8240 gfx::Transform identity_transform; |
8234 SetLayerPropertiesForTesting(root.get(), identity_transform, gfx::Point3F(), | 8241 SetLayerPropertiesForTesting(root.get(), identity_transform, gfx::Point3F(), |
8235 gfx::PointF(), gfx::Size(50, 50), true, false); | 8242 gfx::PointF(), gfx::Size(50, 50), true, false); |
8236 SetLayerPropertiesForTesting(child.get(), identity_transform, gfx::Point3F(), | 8243 SetLayerPropertiesForTesting(child.get(), identity_transform, gfx::Point3F(), |
8237 gfx::PointF(), gfx::Size(50, 50), true, false); | 8244 gfx::PointF(), gfx::Size(50, 50), true, false); |
8238 SetLayerPropertiesForTesting(grandchild.get(), identity_transform, | 8245 SetLayerPropertiesForTesting(grandchild.get(), identity_transform, |
8239 gfx::Point3F(), gfx::PointF(), gfx::Size(50, 50), | 8246 gfx::Point3F(), gfx::PointF(), gfx::Size(50, 50), |
8240 true, false); | 8247 true, false); |
8241 host()->SetRootLayer(root); | 8248 host()->SetRootLayer(root); |
8242 | 8249 |
8243 AddAnimatedFilterToLayerWithPlayer(child->id(), timeline(), 10.0, 0.1f, 0.2f); | 8250 AddAnimatedFilterToElementWithPlayer(child->element_id(), timeline(), 10.0, |
| 8251 0.1f, 0.2f); |
8244 ExecuteCalculateDrawProperties(root.get()); | 8252 ExecuteCalculateDrawProperties(root.get()); |
8245 | 8253 |
8246 EXPECT_TRUE(root->has_render_surface()); | 8254 EXPECT_TRUE(root->has_render_surface()); |
8247 EXPECT_TRUE(child->has_render_surface()); | 8255 EXPECT_TRUE(child->has_render_surface()); |
8248 EXPECT_FALSE(grandchild->has_render_surface()); | 8256 EXPECT_FALSE(grandchild->has_render_surface()); |
8249 | 8257 |
8250 EXPECT_TRUE(root->filters().IsEmpty()); | 8258 EXPECT_TRUE(root->filters().IsEmpty()); |
8251 EXPECT_TRUE(child->filters().IsEmpty()); | 8259 EXPECT_TRUE(child->filters().IsEmpty()); |
8252 EXPECT_TRUE(grandchild->filters().IsEmpty()); | 8260 EXPECT_TRUE(grandchild->filters().IsEmpty()); |
8253 | 8261 |
8254 EXPECT_FALSE(root->FilterIsAnimating()); | 8262 EXPECT_FALSE(root->FilterIsAnimating()); |
8255 EXPECT_TRUE(child->FilterIsAnimating()); | 8263 EXPECT_TRUE(child->FilterIsAnimating()); |
8256 EXPECT_FALSE(grandchild->FilterIsAnimating()); | 8264 EXPECT_FALSE(grandchild->FilterIsAnimating()); |
8257 } | 8265 } |
8258 | 8266 |
8259 // Verify that having a filter animation with a delayed start time creates a | 8267 // Verify that having a filter animation with a delayed start time creates a |
8260 // render surface. | 8268 // render surface. |
8261 TEST_F(LayerTreeHostCommonTest, DelayedFilterAnimationCreatesRenderSurface) { | 8269 TEST_F(LayerTreeHostCommonTest, DelayedFilterAnimationCreatesRenderSurface) { |
8262 scoped_refptr<Layer> root = Layer::Create(); | 8270 scoped_refptr<Layer> root = CreateTestLayer(); |
8263 scoped_refptr<Layer> child = Layer::Create(); | 8271 scoped_refptr<Layer> child = CreateTestLayer(); |
8264 scoped_refptr<Layer> grandchild = Layer::Create(); | 8272 scoped_refptr<Layer> grandchild = CreateTestLayer(); |
8265 root->AddChild(child); | 8273 root->AddChild(child); |
8266 child->AddChild(grandchild); | 8274 child->AddChild(grandchild); |
8267 | 8275 |
8268 gfx::Transform identity_transform; | 8276 gfx::Transform identity_transform; |
8269 SetLayerPropertiesForTesting(root.get(), identity_transform, gfx::Point3F(), | 8277 SetLayerPropertiesForTesting(root.get(), identity_transform, gfx::Point3F(), |
8270 gfx::PointF(), gfx::Size(50, 50), true, false); | 8278 gfx::PointF(), gfx::Size(50, 50), true, false); |
8271 SetLayerPropertiesForTesting(child.get(), identity_transform, gfx::Point3F(), | 8279 SetLayerPropertiesForTesting(child.get(), identity_transform, gfx::Point3F(), |
8272 gfx::PointF(), gfx::Size(50, 50), true, false); | 8280 gfx::PointF(), gfx::Size(50, 50), true, false); |
8273 SetLayerPropertiesForTesting(grandchild.get(), identity_transform, | 8281 SetLayerPropertiesForTesting(grandchild.get(), identity_transform, |
8274 gfx::Point3F(), gfx::PointF(), gfx::Size(50, 50), | 8282 gfx::Point3F(), gfx::PointF(), gfx::Size(50, 50), |
8275 true, false); | 8283 true, false); |
8276 host()->SetRootLayer(root); | 8284 host()->SetRootLayer(root); |
8277 | 8285 |
8278 std::unique_ptr<KeyframedFilterAnimationCurve> curve( | 8286 std::unique_ptr<KeyframedFilterAnimationCurve> curve( |
8279 KeyframedFilterAnimationCurve::Create()); | 8287 KeyframedFilterAnimationCurve::Create()); |
8280 FilterOperations start_filters; | 8288 FilterOperations start_filters; |
8281 start_filters.Append(FilterOperation::CreateBrightnessFilter(0.1f)); | 8289 start_filters.Append(FilterOperation::CreateBrightnessFilter(0.1f)); |
8282 FilterOperations end_filters; | 8290 FilterOperations end_filters; |
8283 end_filters.Append(FilterOperation::CreateBrightnessFilter(0.3f)); | 8291 end_filters.Append(FilterOperation::CreateBrightnessFilter(0.3f)); |
8284 curve->AddKeyframe( | 8292 curve->AddKeyframe( |
8285 FilterKeyframe::Create(base::TimeDelta(), start_filters, nullptr)); | 8293 FilterKeyframe::Create(base::TimeDelta(), start_filters, nullptr)); |
8286 curve->AddKeyframe(FilterKeyframe::Create( | 8294 curve->AddKeyframe(FilterKeyframe::Create( |
8287 base::TimeDelta::FromMilliseconds(100), end_filters, nullptr)); | 8295 base::TimeDelta::FromMilliseconds(100), end_filters, nullptr)); |
8288 std::unique_ptr<Animation> animation = | 8296 std::unique_ptr<Animation> animation = |
8289 Animation::Create(std::move(curve), 0, 1, TargetProperty::FILTER); | 8297 Animation::Create(std::move(curve), 0, 1, TargetProperty::FILTER); |
8290 animation->set_fill_mode(Animation::FILL_MODE_NONE); | 8298 animation->set_fill_mode(Animation::FILL_MODE_NONE); |
8291 animation->set_time_offset(base::TimeDelta::FromMilliseconds(-1000)); | 8299 animation->set_time_offset(base::TimeDelta::FromMilliseconds(-1000)); |
8292 | 8300 |
8293 AddAnimationToLayerWithPlayer(child->id(), timeline(), std::move(animation)); | 8301 AddAnimationToElementWithPlayer(child->element_id(), timeline(), |
| 8302 std::move(animation)); |
8294 ExecuteCalculateDrawProperties(root.get()); | 8303 ExecuteCalculateDrawProperties(root.get()); |
8295 | 8304 |
8296 EXPECT_TRUE(root->has_render_surface()); | 8305 EXPECT_TRUE(root->has_render_surface()); |
8297 EXPECT_TRUE(child->has_render_surface()); | 8306 EXPECT_TRUE(child->has_render_surface()); |
8298 EXPECT_FALSE(grandchild->has_render_surface()); | 8307 EXPECT_FALSE(grandchild->has_render_surface()); |
8299 | 8308 |
8300 EXPECT_TRUE(root->filters().IsEmpty()); | 8309 EXPECT_TRUE(root->filters().IsEmpty()); |
8301 EXPECT_TRUE(child->filters().IsEmpty()); | 8310 EXPECT_TRUE(child->filters().IsEmpty()); |
8302 EXPECT_TRUE(grandchild->filters().IsEmpty()); | 8311 EXPECT_TRUE(grandchild->filters().IsEmpty()); |
8303 | 8312 |
(...skipping 75 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
8379 TEST_F(LayerTreeHostCommonTest, CombineClipsUsingContentTarget) { | 8388 TEST_F(LayerTreeHostCommonTest, CombineClipsUsingContentTarget) { |
8380 // In the following layer tree, the layer |box|'s render target is |surface|. | 8389 // In the following layer tree, the layer |box|'s render target is |surface|. |
8381 // |surface| also creates a transform node. We want to combine clips for |box| | 8390 // |surface| also creates a transform node. We want to combine clips for |box| |
8382 // in the space of its target (i.e., |surface|), not its target's target. This | 8391 // in the space of its target (i.e., |surface|), not its target's target. This |
8383 // test ensures that happens. | 8392 // test ensures that happens. |
8384 | 8393 |
8385 gfx::Transform rotate; | 8394 gfx::Transform rotate; |
8386 rotate.Rotate(5); | 8395 rotate.Rotate(5); |
8387 gfx::Transform identity; | 8396 gfx::Transform identity; |
8388 | 8397 |
8389 scoped_refptr<Layer> root = Layer::Create(); | 8398 scoped_refptr<Layer> root = CreateTestLayer(); |
8390 SetLayerPropertiesForTesting(root.get(), identity, gfx::Point3F(), | 8399 SetLayerPropertiesForTesting(root.get(), identity, gfx::Point3F(), |
8391 gfx::PointF(), gfx::Size(2500, 1500), true, | 8400 gfx::PointF(), gfx::Size(2500, 1500), true, |
8392 false); | 8401 false); |
8393 | 8402 |
8394 scoped_refptr<Layer> frame_clip = Layer::Create(); | 8403 scoped_refptr<Layer> frame_clip = CreateTestLayer(); |
8395 SetLayerPropertiesForTesting(frame_clip.get(), identity, gfx::Point3F(), | 8404 SetLayerPropertiesForTesting(frame_clip.get(), identity, gfx::Point3F(), |
8396 gfx::PointF(), gfx::Size(2500, 1500), true, | 8405 gfx::PointF(), gfx::Size(2500, 1500), true, |
8397 false); | 8406 false); |
8398 frame_clip->SetMasksToBounds(true); | 8407 frame_clip->SetMasksToBounds(true); |
8399 | 8408 |
8400 scoped_refptr<Layer> rotated = Layer::Create(); | 8409 scoped_refptr<Layer> rotated = CreateTestLayer(); |
8401 SetLayerPropertiesForTesting(rotated.get(), rotate, | 8410 SetLayerPropertiesForTesting(rotated.get(), rotate, |
8402 gfx::Point3F(1250, 250, 0), gfx::PointF(), | 8411 gfx::Point3F(1250, 250, 0), gfx::PointF(), |
8403 gfx::Size(2500, 500), true, false); | 8412 gfx::Size(2500, 500), true, false); |
8404 | 8413 |
8405 scoped_refptr<Layer> surface = Layer::Create(); | 8414 scoped_refptr<Layer> surface = CreateTestLayer(); |
8406 SetLayerPropertiesForTesting(surface.get(), rotate, gfx::Point3F(), | 8415 SetLayerPropertiesForTesting(surface.get(), rotate, gfx::Point3F(), |
8407 gfx::PointF(), gfx::Size(2500, 500), true, | 8416 gfx::PointF(), gfx::Size(2500, 500), true, |
8408 false); | 8417 false); |
8409 surface->SetOpacity(0.5); | 8418 surface->SetOpacity(0.5); |
8410 | 8419 |
8411 scoped_refptr<LayerWithForcedDrawsContent> container = | 8420 scoped_refptr<LayerWithForcedDrawsContent> container = |
8412 make_scoped_refptr(new LayerWithForcedDrawsContent()); | 8421 make_scoped_refptr(new LayerWithForcedDrawsContent()); |
8413 SetLayerPropertiesForTesting(container.get(), identity, gfx::Point3F(), | 8422 SetLayerPropertiesForTesting(container.get(), identity, gfx::Point3F(), |
8414 gfx::PointF(), gfx::Size(300, 300), true, false); | 8423 gfx::PointF(), gfx::Size(300, 300), true, false); |
8415 | 8424 |
(...skipping 86 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
8502 } | 8511 } |
8503 | 8512 |
8504 TEST_F(LayerTreeHostCommonTest, ChangingAxisAlignmentTriggersRebuild) { | 8513 TEST_F(LayerTreeHostCommonTest, ChangingAxisAlignmentTriggersRebuild) { |
8505 gfx::Transform identity; | 8514 gfx::Transform identity; |
8506 gfx::Transform translate; | 8515 gfx::Transform translate; |
8507 gfx::Transform rotate; | 8516 gfx::Transform rotate; |
8508 | 8517 |
8509 translate.Translate(10, 10); | 8518 translate.Translate(10, 10); |
8510 rotate.Rotate(45); | 8519 rotate.Rotate(45); |
8511 | 8520 |
8512 scoped_refptr<Layer> root = Layer::Create(); | 8521 scoped_refptr<Layer> root = CreateTestLayer(); |
8513 SetLayerPropertiesForTesting(root.get(), identity, gfx::Point3F(), | 8522 SetLayerPropertiesForTesting(root.get(), identity, gfx::Point3F(), |
8514 gfx::PointF(), gfx::Size(800, 800), true, false); | 8523 gfx::PointF(), gfx::Size(800, 800), true, false); |
8515 root->SetIsContainerForFixedPositionLayers(true); | 8524 root->SetIsContainerForFixedPositionLayers(true); |
8516 | 8525 |
8517 host()->SetRootLayer(root); | 8526 host()->SetRootLayer(root); |
8518 | 8527 |
8519 ExecuteCalculateDrawPropertiesWithPropertyTrees(root.get()); | 8528 ExecuteCalculateDrawPropertiesWithPropertyTrees(root.get()); |
8520 EXPECT_FALSE(host()->property_trees()->needs_rebuild); | 8529 EXPECT_FALSE(host()->property_trees()->needs_rebuild); |
8521 | 8530 |
8522 root->SetTransform(translate); | 8531 root->SetTransform(translate); |
(...skipping 70 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
8593 static void CopyOutputCallback(std::unique_ptr<CopyOutputResult> result) {} | 8602 static void CopyOutputCallback(std::unique_ptr<CopyOutputResult> result) {} |
8594 | 8603 |
8595 TEST_F(LayerTreeHostCommonTest, NumCopyRequestsInTargetSubtree) { | 8604 TEST_F(LayerTreeHostCommonTest, NumCopyRequestsInTargetSubtree) { |
8596 // If the layer has a node in effect_tree, the return value of | 8605 // If the layer has a node in effect_tree, the return value of |
8597 // num_copy_requests_in_target_subtree() must be equal to the actual number | 8606 // num_copy_requests_in_target_subtree() must be equal to the actual number |
8598 // of copy requests in the sub-layer_tree; Otherwise, the number is expected | 8607 // of copy requests in the sub-layer_tree; Otherwise, the number is expected |
8599 // to be the value of its nearest ancestor that owns an effect node and | 8608 // to be the value of its nearest ancestor that owns an effect node and |
8600 // greater than or equal to the actual number of copy requests in the | 8609 // greater than or equal to the actual number of copy requests in the |
8601 // sub-layer_tree. | 8610 // sub-layer_tree. |
8602 | 8611 |
8603 scoped_refptr<Layer> root = Layer::Create(); | 8612 scoped_refptr<Layer> root = CreateTestLayer(); |
8604 scoped_refptr<Layer> child1 = Layer::Create(); | 8613 scoped_refptr<Layer> child1 = CreateTestLayer(); |
8605 scoped_refptr<Layer> child2 = Layer::Create(); | 8614 scoped_refptr<Layer> child2 = CreateTestLayer(); |
8606 scoped_refptr<Layer> grandchild = Layer::Create(); | 8615 scoped_refptr<Layer> grandchild = CreateTestLayer(); |
8607 scoped_refptr<Layer> greatgrandchild = Layer::Create(); | 8616 scoped_refptr<Layer> greatgrandchild = CreateTestLayer(); |
8608 | 8617 |
8609 root->AddChild(child1); | 8618 root->AddChild(child1); |
8610 root->AddChild(child2); | 8619 root->AddChild(child2); |
8611 child1->AddChild(grandchild); | 8620 child1->AddChild(grandchild); |
8612 grandchild->AddChild(greatgrandchild); | 8621 grandchild->AddChild(greatgrandchild); |
8613 host()->SetRootLayer(root); | 8622 host()->SetRootLayer(root); |
8614 | 8623 |
8615 child1->RequestCopyOfOutput( | 8624 child1->RequestCopyOfOutput( |
8616 CopyOutputRequest::CreateBitmapRequest(base::Bind(&CopyOutputCallback))); | 8625 CopyOutputRequest::CreateBitmapRequest(base::Bind(&CopyOutputCallback))); |
8617 greatgrandchild->RequestCopyOfOutput( | 8626 greatgrandchild->RequestCopyOfOutput( |
8618 CopyOutputRequest::CreateBitmapRequest(base::Bind(&CopyOutputCallback))); | 8627 CopyOutputRequest::CreateBitmapRequest(base::Bind(&CopyOutputCallback))); |
8619 child2->SetOpacity(0.f); | 8628 child2->SetOpacity(0.f); |
8620 ExecuteCalculateDrawPropertiesWithPropertyTrees(root.get()); | 8629 ExecuteCalculateDrawPropertiesWithPropertyTrees(root.get()); |
8621 | 8630 |
8622 EXPECT_EQ(root->num_copy_requests_in_target_subtree(), 2); | 8631 EXPECT_EQ(root->num_copy_requests_in_target_subtree(), 2); |
8623 EXPECT_EQ(child1->num_copy_requests_in_target_subtree(), 2); | 8632 EXPECT_EQ(child1->num_copy_requests_in_target_subtree(), 2); |
8624 EXPECT_EQ(child2->num_copy_requests_in_target_subtree(), 0); | 8633 EXPECT_EQ(child2->num_copy_requests_in_target_subtree(), 0); |
8625 EXPECT_EQ(grandchild->num_copy_requests_in_target_subtree(), 2); | 8634 EXPECT_EQ(grandchild->num_copy_requests_in_target_subtree(), 2); |
8626 EXPECT_EQ(greatgrandchild->num_copy_requests_in_target_subtree(), 1); | 8635 EXPECT_EQ(greatgrandchild->num_copy_requests_in_target_subtree(), 1); |
8627 } | 8636 } |
8628 | 8637 |
8629 TEST_F(LayerTreeHostCommonTest, SkippingSubtreeMain) { | 8638 TEST_F(LayerTreeHostCommonTest, SkippingSubtreeMain) { |
8630 gfx::Transform identity; | 8639 gfx::Transform identity; |
8631 scoped_refptr<Layer> root = Layer::Create(); | 8640 scoped_refptr<Layer> root = CreateTestLayer(); |
8632 FakeContentLayerClient client; | 8641 FakeContentLayerClient client; |
8633 client.set_bounds(root->bounds()); | 8642 client.set_bounds(root->bounds()); |
8634 scoped_refptr<LayerWithForcedDrawsContent> child = | 8643 scoped_refptr<LayerWithForcedDrawsContent> child = |
8635 make_scoped_refptr(new LayerWithForcedDrawsContent()); | 8644 make_scoped_refptr(new LayerWithForcedDrawsContent()); |
8636 scoped_refptr<LayerWithForcedDrawsContent> grandchild = | 8645 scoped_refptr<LayerWithForcedDrawsContent> grandchild = |
8637 make_scoped_refptr(new LayerWithForcedDrawsContent()); | 8646 make_scoped_refptr(new LayerWithForcedDrawsContent()); |
8638 scoped_refptr<FakePictureLayer> greatgrandchild( | 8647 scoped_refptr<FakePictureLayer> greatgrandchild( |
8639 FakePictureLayer::Create(&client)); | 8648 FakePictureLayer::Create(&client)); |
8640 SetLayerPropertiesForTesting(root.get(), identity, gfx::Point3F(), | 8649 SetLayerPropertiesForTesting(root.get(), identity, gfx::Point3F(), |
8641 gfx::PointF(), gfx::Size(100, 100), true, false); | 8650 gfx::PointF(), gfx::Size(100, 100), true, false); |
(...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
8679 child->SetTransform(zero_z_scale); | 8688 child->SetTransform(zero_z_scale); |
8680 | 8689 |
8681 // Add a transform animation with a start delay. Now, even though |child| has | 8690 // Add a transform animation with a start delay. Now, even though |child| has |
8682 // a singular transform, the subtree should still get processed. | 8691 // a singular transform, the subtree should still get processed. |
8683 int animation_id = 0; | 8692 int animation_id = 0; |
8684 std::unique_ptr<Animation> animation = Animation::Create( | 8693 std::unique_ptr<Animation> animation = Animation::Create( |
8685 std::unique_ptr<AnimationCurve>(new FakeTransformTransition(1.0)), | 8694 std::unique_ptr<AnimationCurve>(new FakeTransformTransition(1.0)), |
8686 animation_id, 1, TargetProperty::TRANSFORM); | 8695 animation_id, 1, TargetProperty::TRANSFORM); |
8687 animation->set_fill_mode(Animation::FILL_MODE_NONE); | 8696 animation->set_fill_mode(Animation::FILL_MODE_NONE); |
8688 animation->set_time_offset(base::TimeDelta::FromMilliseconds(-1000)); | 8697 animation->set_time_offset(base::TimeDelta::FromMilliseconds(-1000)); |
8689 AddAnimationToLayerWithPlayer(child->id(), timeline(), std::move(animation)); | 8698 AddAnimationToElementWithPlayer(child->element_id(), timeline(), |
| 8699 std::move(animation)); |
8690 ExecuteCalculateDrawPropertiesWithPropertyTrees(root.get()); | 8700 ExecuteCalculateDrawPropertiesWithPropertyTrees(root.get()); |
8691 EXPECT_EQ(gfx::Rect(10, 10), grandchild->visible_layer_rect_for_testing()); | 8701 EXPECT_EQ(gfx::Rect(10, 10), grandchild->visible_layer_rect_for_testing()); |
8692 grandchild->set_visible_layer_rect(gfx::Rect()); | 8702 grandchild->set_visible_layer_rect(gfx::Rect()); |
8693 | 8703 |
8694 RemoveAnimationFromLayerWithExistingPlayer(child->id(), timeline(), | 8704 RemoveAnimationFromElementWithExistingPlayer(child->element_id(), timeline(), |
8695 animation_id); | 8705 animation_id); |
8696 child->SetTransform(identity); | 8706 child->SetTransform(identity); |
8697 child->SetOpacity(0.f); | 8707 child->SetOpacity(0.f); |
8698 ExecuteCalculateDrawPropertiesWithPropertyTrees(root.get()); | 8708 ExecuteCalculateDrawPropertiesWithPropertyTrees(root.get()); |
8699 EXPECT_EQ(gfx::Rect(0, 0), grandchild->visible_layer_rect_for_testing()); | 8709 EXPECT_EQ(gfx::Rect(0, 0), grandchild->visible_layer_rect_for_testing()); |
8700 | 8710 |
8701 // Now, even though child has zero opacity, we will configure |grandchild| and | 8711 // Now, even though child has zero opacity, we will configure |grandchild| and |
8702 // |greatgrandchild| in several ways that should force the subtree to be | 8712 // |greatgrandchild| in several ways that should force the subtree to be |
8703 // processed anyhow. | 8713 // processed anyhow. |
8704 grandchild->RequestCopyOfOutput( | 8714 grandchild->RequestCopyOfOutput( |
8705 CopyOutputRequest::CreateBitmapRequest(base::Bind(&CopyOutputCallback))); | 8715 CopyOutputRequest::CreateBitmapRequest(base::Bind(&CopyOutputCallback))); |
8706 ExecuteCalculateDrawPropertiesWithPropertyTrees(root.get()); | 8716 ExecuteCalculateDrawPropertiesWithPropertyTrees(root.get()); |
8707 EXPECT_EQ(gfx::Rect(10, 10), grandchild->visible_layer_rect_for_testing()); | 8717 EXPECT_EQ(gfx::Rect(10, 10), grandchild->visible_layer_rect_for_testing()); |
8708 greatgrandchild->set_visible_layer_rect(gfx::Rect()); | 8718 greatgrandchild->set_visible_layer_rect(gfx::Rect()); |
8709 | 8719 |
8710 // Add an opacity animation with a start delay. | 8720 // Add an opacity animation with a start delay. |
8711 animation_id = 1; | 8721 animation_id = 1; |
8712 animation = Animation::Create( | 8722 animation = Animation::Create( |
8713 std::unique_ptr<AnimationCurve>(new FakeFloatTransition(1.0, 0.f, 1.f)), | 8723 std::unique_ptr<AnimationCurve>(new FakeFloatTransition(1.0, 0.f, 1.f)), |
8714 animation_id, 1, TargetProperty::OPACITY); | 8724 animation_id, 1, TargetProperty::OPACITY); |
8715 animation->set_fill_mode(Animation::FILL_MODE_NONE); | 8725 animation->set_fill_mode(Animation::FILL_MODE_NONE); |
8716 animation->set_time_offset(base::TimeDelta::FromMilliseconds(-1000)); | 8726 animation->set_time_offset(base::TimeDelta::FromMilliseconds(-1000)); |
8717 AddAnimationToLayerWithExistingPlayer(child->id(), timeline(), | 8727 AddAnimationToElementWithExistingPlayer(child->element_id(), timeline(), |
8718 std::move(animation)); | 8728 std::move(animation)); |
8719 ExecuteCalculateDrawPropertiesWithPropertyTrees(root.get()); | 8729 ExecuteCalculateDrawPropertiesWithPropertyTrees(root.get()); |
8720 EXPECT_EQ(gfx::Rect(10, 10), grandchild->visible_layer_rect_for_testing()); | 8730 EXPECT_EQ(gfx::Rect(10, 10), grandchild->visible_layer_rect_for_testing()); |
8721 } | 8731 } |
8722 | 8732 |
8723 TEST_F(LayerTreeHostCommonTest, SkippingLayerImpl) { | 8733 TEST_F(LayerTreeHostCommonTest, SkippingLayerImpl) { |
8724 FakeImplTaskRunnerProvider task_runner_provider; | 8734 FakeImplTaskRunnerProvider task_runner_provider; |
8725 TestSharedBitmapManager shared_bitmap_manager; | 8735 TestSharedBitmapManager shared_bitmap_manager; |
8726 TestTaskGraphRunner task_graph_runner; | 8736 TestTaskGraphRunner task_graph_runner; |
8727 FakeLayerTreeHostImpl host_impl(&task_runner_provider, &shared_bitmap_manager, | 8737 FakeLayerTreeHostImpl host_impl(&task_runner_provider, &shared_bitmap_manager, |
8728 &task_graph_runner); | 8738 &task_graph_runner); |
8729 | 8739 |
8730 gfx::Transform identity; | 8740 gfx::Transform identity; |
8731 std::unique_ptr<LayerImpl> root = | 8741 std::unique_ptr<LayerImpl> root = |
8732 LayerImpl::Create(host_impl.active_tree(), 1); | 8742 CreateTestLayerImpl(host_impl.active_tree(), 1); |
8733 std::unique_ptr<LayerImpl> child = | 8743 std::unique_ptr<LayerImpl> child = |
8734 LayerImpl::Create(host_impl.active_tree(), 2); | 8744 CreateTestLayerImpl(host_impl.active_tree(), 2); |
8735 std::unique_ptr<LayerImpl> grandchild = | 8745 std::unique_ptr<LayerImpl> grandchild = |
8736 LayerImpl::Create(host_impl.active_tree(), 3); | 8746 CreateTestLayerImpl(host_impl.active_tree(), 3); |
8737 | 8747 |
8738 std::unique_ptr<FakePictureLayerImpl> greatgrandchild( | 8748 std::unique_ptr<FakePictureLayerImpl> greatgrandchild( |
8739 FakePictureLayerImpl::Create(host_impl.active_tree(), 4)); | 8749 FakePictureLayerImpl::Create(host_impl.active_tree(), 4)); |
8740 | 8750 |
8741 child->SetDrawsContent(true); | 8751 child->SetDrawsContent(true); |
8742 grandchild->SetDrawsContent(true); | 8752 grandchild->SetDrawsContent(true); |
8743 greatgrandchild->SetDrawsContent(true); | 8753 greatgrandchild->SetDrawsContent(true); |
8744 | 8754 |
8745 SetLayerPropertiesForTesting(root.get(), identity, gfx::Point3F(), | 8755 SetLayerPropertiesForTesting(root.get(), identity, gfx::Point3F(), |
8746 gfx::PointF(), gfx::Size(100, 100), true, false, | 8756 gfx::PointF(), gfx::Size(100, 100), true, false, |
(...skipping 103 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
8850 TransformOperations operation; | 8860 TransformOperations operation; |
8851 operation.AppendMatrix(transform); | 8861 operation.AppendMatrix(transform); |
8852 curve->AddKeyframe( | 8862 curve->AddKeyframe( |
8853 TransformKeyframe::Create(base::TimeDelta(), start, nullptr)); | 8863 TransformKeyframe::Create(base::TimeDelta(), start, nullptr)); |
8854 curve->AddKeyframe(TransformKeyframe::Create( | 8864 curve->AddKeyframe(TransformKeyframe::Create( |
8855 base::TimeDelta::FromSecondsD(1.0), operation, nullptr)); | 8865 base::TimeDelta::FromSecondsD(1.0), operation, nullptr)); |
8856 std::unique_ptr<Animation> transform_animation( | 8866 std::unique_ptr<Animation> transform_animation( |
8857 Animation::Create(std::move(curve), 3, 3, TargetProperty::TRANSFORM)); | 8867 Animation::Create(std::move(curve), 3, 3, TargetProperty::TRANSFORM)); |
8858 scoped_refptr<AnimationPlayer> player(AnimationPlayer::Create(1)); | 8868 scoped_refptr<AnimationPlayer> player(AnimationPlayer::Create(1)); |
8859 host_impl.active_tree()->animation_host()->RegisterPlayerForElement( | 8869 host_impl.active_tree()->animation_host()->RegisterPlayerForElement( |
8860 root_ptr->id(), player.get()); | 8870 root_ptr->element_id(), player.get()); |
8861 host_impl.active_tree() | 8871 host_impl.active_tree() |
8862 ->animation_host() | 8872 ->animation_host() |
8863 ->GetElementAnimationsForElementId(root_ptr->id()) | 8873 ->GetElementAnimationsForElementId(root_ptr->element_id()) |
8864 ->AddAnimation(std::move(transform_animation)); | 8874 ->AddAnimation(std::move(transform_animation)); |
8865 grandchild_ptr->set_visible_layer_rect(gfx::Rect()); | 8875 grandchild_ptr->set_visible_layer_rect(gfx::Rect()); |
8866 child_ptr->SetScrollClipLayer(root_ptr->id()); | 8876 child_ptr->SetScrollClipLayer(root_ptr->id()); |
8867 root_ptr->SetTransform(singular); | 8877 root_ptr->SetTransform(singular); |
8868 child_ptr->SetTransform(singular); | 8878 child_ptr->SetTransform(singular); |
8869 root_ptr->layer_tree_impl()->property_trees()->needs_rebuild = true; | 8879 root_ptr->layer_tree_impl()->property_trees()->needs_rebuild = true; |
8870 ExecuteCalculateDrawPropertiesWithPropertyTrees(root_ptr); | 8880 ExecuteCalculateDrawPropertiesWithPropertyTrees(root_ptr); |
8871 EXPECT_EQ(gfx::Rect(0, 0), grandchild_ptr->visible_layer_rect()); | 8881 EXPECT_EQ(gfx::Rect(0, 0), grandchild_ptr->visible_layer_rect()); |
8872 | 8882 |
8873 host_impl.active_tree()->animation_host()->UnregisterPlayerForElement( | 8883 host_impl.active_tree()->animation_host()->UnregisterPlayerForElement( |
8874 root_ptr->id(), player.get()); | 8884 root_ptr->element_id(), player.get()); |
8875 } | 8885 } |
8876 | 8886 |
8877 TEST_F(LayerTreeHostCommonTest, LayerSkippingInSubtreeOfSingularTransform) { | 8887 TEST_F(LayerTreeHostCommonTest, LayerSkippingInSubtreeOfSingularTransform) { |
8878 LayerImpl* root = root_layer(); | 8888 LayerImpl* root = root_layer(); |
8879 LayerImpl* child = AddChild<LayerImpl>(root); | 8889 LayerImpl* child = AddChild<LayerImpl>(root); |
8880 LayerImpl* grand_child = AddChild<LayerImpl>(child); | 8890 LayerImpl* grand_child = AddChild<LayerImpl>(child); |
8881 | 8891 |
8882 gfx::Transform identity; | 8892 gfx::Transform identity; |
8883 SetLayerPropertiesForTesting(root, identity, gfx::Point3F(), gfx::PointF(), | 8893 SetLayerPropertiesForTesting(root, identity, gfx::Point3F(), gfx::PointF(), |
8884 gfx::Size(10, 10), true, false, true); | 8894 gfx::Size(10, 10), true, false, true); |
(...skipping 20 matching lines...) Expand all Loading... |
8905 TransformOperations operation; | 8915 TransformOperations operation; |
8906 operation.AppendMatrix(transform); | 8916 operation.AppendMatrix(transform); |
8907 curve->AddKeyframe( | 8917 curve->AddKeyframe( |
8908 TransformKeyframe::Create(base::TimeDelta(), start, nullptr)); | 8918 TransformKeyframe::Create(base::TimeDelta(), start, nullptr)); |
8909 curve->AddKeyframe(TransformKeyframe::Create( | 8919 curve->AddKeyframe(TransformKeyframe::Create( |
8910 base::TimeDelta::FromSecondsD(1.0), operation, nullptr)); | 8920 base::TimeDelta::FromSecondsD(1.0), operation, nullptr)); |
8911 std::unique_ptr<Animation> transform_animation( | 8921 std::unique_ptr<Animation> transform_animation( |
8912 Animation::Create(std::move(curve), 3, 3, TargetProperty::TRANSFORM)); | 8922 Animation::Create(std::move(curve), 3, 3, TargetProperty::TRANSFORM)); |
8913 scoped_refptr<AnimationPlayer> player(AnimationPlayer::Create(1)); | 8923 scoped_refptr<AnimationPlayer> player(AnimationPlayer::Create(1)); |
8914 host_impl()->active_tree()->animation_host()->RegisterPlayerForElement( | 8924 host_impl()->active_tree()->animation_host()->RegisterPlayerForElement( |
8915 grand_child->id(), player.get()); | 8925 grand_child->element_id(), player.get()); |
8916 host_impl() | 8926 host_impl() |
8917 ->active_tree() | 8927 ->active_tree() |
8918 ->animation_host() | 8928 ->animation_host() |
8919 ->GetElementAnimationsForElementId(grand_child->id()) | 8929 ->GetElementAnimationsForElementId(grand_child->element_id()) |
8920 ->AddAnimation(std::move(transform_animation)); | 8930 ->AddAnimation(std::move(transform_animation)); |
8921 | 8931 |
8922 ExecuteCalculateDrawProperties(root); | 8932 ExecuteCalculateDrawProperties(root); |
8923 EXPECT_EQ(gfx::Rect(0, 0), grand_child->visible_layer_rect()); | 8933 EXPECT_EQ(gfx::Rect(0, 0), grand_child->visible_layer_rect()); |
8924 EXPECT_EQ(gfx::Rect(0, 0), child->visible_layer_rect()); | 8934 EXPECT_EQ(gfx::Rect(0, 0), child->visible_layer_rect()); |
8925 | 8935 |
8926 host_impl()->active_tree()->animation_host()->UnregisterPlayerForElement( | 8936 host_impl()->active_tree()->animation_host()->UnregisterPlayerForElement( |
8927 grand_child->id(), player.get()); | 8937 grand_child->element_id(), player.get()); |
8928 } | 8938 } |
8929 | 8939 |
8930 TEST_F(LayerTreeHostCommonTest, SkippingPendingLayerImpl) { | 8940 TEST_F(LayerTreeHostCommonTest, SkippingPendingLayerImpl) { |
8931 FakeImplTaskRunnerProvider task_runner_provider; | 8941 FakeImplTaskRunnerProvider task_runner_provider; |
8932 TestSharedBitmapManager shared_bitmap_manager; | 8942 TestSharedBitmapManager shared_bitmap_manager; |
8933 TestTaskGraphRunner task_graph_runner; | 8943 TestTaskGraphRunner task_graph_runner; |
8934 FakeLayerTreeHostImpl host_impl(&task_runner_provider, &shared_bitmap_manager, | 8944 FakeLayerTreeHostImpl host_impl(&task_runner_provider, &shared_bitmap_manager, |
8935 &task_graph_runner); | 8945 &task_graph_runner); |
8936 | 8946 |
8937 gfx::Transform identity; | 8947 gfx::Transform identity; |
8938 host_impl.CreatePendingTree(); | 8948 host_impl.CreatePendingTree(); |
8939 std::unique_ptr<LayerImpl> root = | 8949 std::unique_ptr<LayerImpl> root = |
8940 LayerImpl::Create(host_impl.pending_tree(), 1); | 8950 CreateTestLayerImpl(host_impl.pending_tree(), 1); |
8941 std::unique_ptr<LayerImpl> child = | 8951 std::unique_ptr<LayerImpl> child = |
8942 LayerImpl::Create(host_impl.pending_tree(), 2); | 8952 CreateTestLayerImpl(host_impl.pending_tree(), 2); |
8943 std::unique_ptr<LayerImpl> grandchild = | 8953 std::unique_ptr<LayerImpl> grandchild = |
8944 LayerImpl::Create(host_impl.pending_tree(), 3); | 8954 CreateTestLayerImpl(host_impl.pending_tree(), 3); |
8945 | 8955 |
8946 std::unique_ptr<FakePictureLayerImpl> greatgrandchild( | 8956 std::unique_ptr<FakePictureLayerImpl> greatgrandchild( |
8947 FakePictureLayerImpl::Create(host_impl.pending_tree(), 4)); | 8957 FakePictureLayerImpl::Create(host_impl.pending_tree(), 4)); |
8948 | 8958 |
8949 child->SetDrawsContent(true); | 8959 child->SetDrawsContent(true); |
8950 grandchild->SetDrawsContent(true); | 8960 grandchild->SetDrawsContent(true); |
8951 greatgrandchild->SetDrawsContent(true); | 8961 greatgrandchild->SetDrawsContent(true); |
8952 | 8962 |
8953 SetLayerPropertiesForTesting(root.get(), identity, gfx::Point3F(), | 8963 SetLayerPropertiesForTesting(root.get(), identity, gfx::Point3F(), |
8954 gfx::PointF(), gfx::Size(100, 100), true, false, | 8964 gfx::PointF(), gfx::Size(100, 100), true, false, |
(...skipping 21 matching lines...) Expand all Loading... |
8976 KeyframedFloatAnimationCurve::Create()); | 8986 KeyframedFloatAnimationCurve::Create()); |
8977 std::unique_ptr<TimingFunction> func = EaseTimingFunction::Create(); | 8987 std::unique_ptr<TimingFunction> func = EaseTimingFunction::Create(); |
8978 curve->AddKeyframe( | 8988 curve->AddKeyframe( |
8979 FloatKeyframe::Create(base::TimeDelta(), 0.9f, std::move(func))); | 8989 FloatKeyframe::Create(base::TimeDelta(), 0.9f, std::move(func))); |
8980 curve->AddKeyframe( | 8990 curve->AddKeyframe( |
8981 FloatKeyframe::Create(base::TimeDelta::FromSecondsD(1.0), 0.3f, nullptr)); | 8991 FloatKeyframe::Create(base::TimeDelta::FromSecondsD(1.0), 0.3f, nullptr)); |
8982 std::unique_ptr<Animation> animation( | 8992 std::unique_ptr<Animation> animation( |
8983 Animation::Create(std::move(curve), 3, 3, TargetProperty::OPACITY)); | 8993 Animation::Create(std::move(curve), 3, 3, TargetProperty::OPACITY)); |
8984 scoped_refptr<AnimationPlayer> player(AnimationPlayer::Create(1)); | 8994 scoped_refptr<AnimationPlayer> player(AnimationPlayer::Create(1)); |
8985 host_impl.active_tree()->animation_host()->RegisterPlayerForElement( | 8995 host_impl.active_tree()->animation_host()->RegisterPlayerForElement( |
8986 root_ptr->id(), player.get()); | 8996 root_ptr->element_id(), player.get()); |
8987 host_impl.active_tree() | 8997 host_impl.active_tree() |
8988 ->animation_host() | 8998 ->animation_host() |
8989 ->GetElementAnimationsForElementId(root_ptr->id()) | 8999 ->GetElementAnimationsForElementId(root_ptr->element_id()) |
8990 ->AddAnimation(std::move(animation)); | 9000 ->AddAnimation(std::move(animation)); |
8991 root_ptr->SetOpacity(0); | 9001 root_ptr->SetOpacity(0); |
8992 grandchild_ptr->set_visible_layer_rect(gfx::Rect()); | 9002 grandchild_ptr->set_visible_layer_rect(gfx::Rect()); |
8993 root_ptr->layer_tree_impl()->property_trees()->needs_rebuild = true; | 9003 root_ptr->layer_tree_impl()->property_trees()->needs_rebuild = true; |
8994 ExecuteCalculateDrawPropertiesWithPropertyTrees(root_ptr); | 9004 ExecuteCalculateDrawPropertiesWithPropertyTrees(root_ptr); |
8995 EXPECT_EQ(gfx::Rect(10, 10), grandchild_ptr->visible_layer_rect()); | 9005 EXPECT_EQ(gfx::Rect(10, 10), grandchild_ptr->visible_layer_rect()); |
8996 | 9006 |
8997 host_impl.active_tree()->animation_host()->UnregisterPlayerForElement( | 9007 host_impl.active_tree()->animation_host()->UnregisterPlayerForElement( |
8998 root_ptr->id(), player.get()); | 9008 root_ptr->element_id(), player.get()); |
8999 } | 9009 } |
9000 | 9010 |
9001 TEST_F(LayerTreeHostCommonTest, SkippingLayer) { | 9011 TEST_F(LayerTreeHostCommonTest, SkippingLayer) { |
9002 gfx::Transform identity; | 9012 gfx::Transform identity; |
9003 LayerImpl* root = root_layer(); | 9013 LayerImpl* root = root_layer(); |
9004 LayerImpl* child = AddChild<LayerImpl>(root); | 9014 LayerImpl* child = AddChild<LayerImpl>(root); |
9005 | 9015 |
9006 SetLayerPropertiesForTesting(root, identity, gfx::Point3F(), gfx::PointF(), | 9016 SetLayerPropertiesForTesting(root, identity, gfx::Point3F(), gfx::PointF(), |
9007 gfx::Size(100, 100), true, false, true); | 9017 gfx::Size(100, 100), true, false, true); |
9008 SetLayerPropertiesForTesting(child, identity, gfx::Point3F(), gfx::PointF(), | 9018 SetLayerPropertiesForTesting(child, identity, gfx::Point3F(), gfx::PointF(), |
(...skipping 28 matching lines...) Expand all Loading... |
9037 | 9047 |
9038 child->SetOpacity(0.f); | 9048 child->SetOpacity(0.f); |
9039 root->layer_tree_impl()->property_trees()->needs_rebuild = true; | 9049 root->layer_tree_impl()->property_trees()->needs_rebuild = true; |
9040 ExecuteCalculateDrawProperties(root); | 9050 ExecuteCalculateDrawProperties(root); |
9041 EXPECT_EQ(gfx::Rect(0, 0), child->visible_layer_rect()); | 9051 EXPECT_EQ(gfx::Rect(0, 0), child->visible_layer_rect()); |
9042 } | 9052 } |
9043 | 9053 |
9044 TEST_F(LayerTreeHostCommonTest, LayerTreeRebuildTest) { | 9054 TEST_F(LayerTreeHostCommonTest, LayerTreeRebuildTest) { |
9045 // Ensure that the treewalk in LayerTreeHostCommom:: | 9055 // Ensure that the treewalk in LayerTreeHostCommom:: |
9046 // PreCalculateMetaInformation happens when its required. | 9056 // PreCalculateMetaInformation happens when its required. |
9047 scoped_refptr<Layer> root = Layer::Create(); | 9057 scoped_refptr<Layer> root = CreateTestLayer(); |
9048 scoped_refptr<Layer> parent = Layer::Create(); | 9058 scoped_refptr<Layer> parent = CreateTestLayer(); |
9049 scoped_refptr<Layer> child = Layer::Create(); | 9059 scoped_refptr<Layer> child = CreateTestLayer(); |
9050 | 9060 |
9051 root->AddChild(parent); | 9061 root->AddChild(parent); |
9052 parent->AddChild(child); | 9062 parent->AddChild(child); |
9053 | 9063 |
9054 child->SetClipParent(root.get()); | 9064 child->SetClipParent(root.get()); |
9055 | 9065 |
9056 gfx::Transform identity; | 9066 gfx::Transform identity; |
9057 | 9067 |
9058 SetLayerPropertiesForTesting(root.get(), identity, gfx::Point3F(), | 9068 SetLayerPropertiesForTesting(root.get(), identity, gfx::Point3F(), |
9059 gfx::PointF(), gfx::Size(100, 100), true, false); | 9069 gfx::PointF(), gfx::Size(100, 100), true, false); |
(...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
9097 child->SetTouchEventHandlerRegion(gfx::Rect()); | 9107 child->SetTouchEventHandlerRegion(gfx::Rect()); |
9098 ExecuteCalculateDrawProperties(root); | 9108 ExecuteCalculateDrawProperties(root); |
9099 EXPECT_EQ(root->layer_or_descendant_has_touch_handler(), false); | 9109 EXPECT_EQ(root->layer_or_descendant_has_touch_handler(), false); |
9100 } | 9110 } |
9101 | 9111 |
9102 TEST_F(LayerTreeHostCommonTest, ResetPropertyTreeIndices) { | 9112 TEST_F(LayerTreeHostCommonTest, ResetPropertyTreeIndices) { |
9103 gfx::Transform identity; | 9113 gfx::Transform identity; |
9104 gfx::Transform translate_z; | 9114 gfx::Transform translate_z; |
9105 translate_z.Translate3d(0, 0, 10); | 9115 translate_z.Translate3d(0, 0, 10); |
9106 | 9116 |
9107 scoped_refptr<Layer> root = Layer::Create(); | 9117 scoped_refptr<Layer> root = CreateTestLayer(); |
9108 SetLayerPropertiesForTesting(root.get(), identity, gfx::Point3F(), | 9118 SetLayerPropertiesForTesting(root.get(), identity, gfx::Point3F(), |
9109 gfx::PointF(), gfx::Size(800, 800), true, false); | 9119 gfx::PointF(), gfx::Size(800, 800), true, false); |
9110 | 9120 |
9111 scoped_refptr<Layer> child = Layer::Create(); | 9121 scoped_refptr<Layer> child = CreateTestLayer(); |
9112 SetLayerPropertiesForTesting(child.get(), translate_z, gfx::Point3F(), | 9122 SetLayerPropertiesForTesting(child.get(), translate_z, gfx::Point3F(), |
9113 gfx::PointF(), gfx::Size(100, 100), true, false); | 9123 gfx::PointF(), gfx::Size(100, 100), true, false); |
9114 | 9124 |
9115 root->AddChild(child); | 9125 root->AddChild(child); |
9116 | 9126 |
9117 host()->SetRootLayer(root); | 9127 host()->SetRootLayer(root); |
9118 | 9128 |
9119 ExecuteCalculateDrawPropertiesWithPropertyTrees(root.get()); | 9129 ExecuteCalculateDrawPropertiesWithPropertyTrees(root.get()); |
9120 EXPECT_NE(-1, child->transform_tree_index()); | 9130 EXPECT_NE(-1, child->transform_tree_index()); |
9121 | 9131 |
(...skipping 574 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
9696 gfx::Transform transform; | 9706 gfx::Transform transform; |
9697 transform.Translate(10, 10); | 9707 transform.Translate(10, 10); |
9698 | 9708 |
9699 SetLayerPropertiesForTesting(root, identity_matrix, gfx::Point3F(), | 9709 SetLayerPropertiesForTesting(root, identity_matrix, gfx::Point3F(), |
9700 gfx::PointF(), gfx::Size(30, 30), true, false, | 9710 gfx::PointF(), gfx::Size(30, 30), true, false, |
9701 true); | 9711 true); |
9702 SetLayerPropertiesForTesting(child, transform, gfx::Point3F(), gfx::PointF(), | 9712 SetLayerPropertiesForTesting(child, transform, gfx::Point3F(), gfx::PointF(), |
9703 gfx::Size(30, 30), true, false, false); | 9713 gfx::Size(30, 30), true, false, false); |
9704 root->SetDrawsContent(true); | 9714 root->SetDrawsContent(true); |
9705 child->SetDrawsContent(false); | 9715 child->SetDrawsContent(false); |
9706 child->SetMaskLayer(LayerImpl::Create(root->layer_tree_impl(), 100)); | 9716 child->SetMaskLayer(CreateTestLayerImpl(root->layer_tree_impl(), 100)); |
9707 ExecuteCalculateDrawProperties(root); | 9717 ExecuteCalculateDrawProperties(root); |
9708 | 9718 |
9709 EXPECT_TRANSFORMATION_MATRIX_EQ(transform, | 9719 EXPECT_TRANSFORMATION_MATRIX_EQ(transform, |
9710 child->mask_layer()->ScreenSpaceTransform()); | 9720 child->mask_layer()->ScreenSpaceTransform()); |
9711 transform.Translate(10, 10); | 9721 transform.Translate(10, 10); |
9712 child->SetTransform(transform); | 9722 child->SetTransform(transform); |
9713 child->SetDrawsContent(true); | 9723 child->SetDrawsContent(true); |
9714 root->layer_tree_impl()->property_trees()->needs_rebuild = true; | 9724 root->layer_tree_impl()->property_trees()->needs_rebuild = true; |
9715 ExecuteCalculateDrawProperties(root); | 9725 ExecuteCalculateDrawProperties(root); |
9716 EXPECT_TRANSFORMATION_MATRIX_EQ(transform, | 9726 EXPECT_TRANSFORMATION_MATRIX_EQ(transform, |
(...skipping 162 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
9879 // +----node---owner:5, id:6 | 9889 // +----node---owner:5, id:6 |
9880 // | 9890 // |
9881 // Extra check: | 9891 // Extra check: |
9882 // scroll_tree_index() of: | 9892 // scroll_tree_index() of: |
9883 // grand_child10:3 | 9893 // grand_child10:3 |
9884 // parent3:1 | 9894 // parent3:1 |
9885 // child8:4 | 9895 // child8:4 |
9886 // parent4:1 | 9896 // parent4:1 |
9887 // child9:1 | 9897 // child9:1 |
9888 // grand_child12:1 | 9898 // grand_child12:1 |
9889 scoped_refptr<Layer> root1 = Layer::Create(); | 9899 scoped_refptr<Layer> root1 = CreateTestLayer(); |
9890 scoped_refptr<Layer> page_scale_layer = Layer::Create(); | 9900 scoped_refptr<Layer> page_scale_layer = CreateTestLayer(); |
9891 scoped_refptr<Layer> parent2 = Layer::Create(); | 9901 scoped_refptr<Layer> parent2 = CreateTestLayer(); |
9892 scoped_refptr<Layer> parent3 = Layer::Create(); | 9902 scoped_refptr<Layer> parent3 = CreateTestLayer(); |
9893 scoped_refptr<Layer> parent4 = Layer::Create(); | 9903 scoped_refptr<Layer> parent4 = CreateTestLayer(); |
9894 scoped_refptr<Layer> parent5 = Layer::Create(); | 9904 scoped_refptr<Layer> parent5 = CreateTestLayer(); |
9895 scoped_refptr<Layer> child6 = Layer::Create(); | 9905 scoped_refptr<Layer> child6 = CreateTestLayer(); |
9896 scoped_refptr<Layer> child7 = Layer::Create(); | 9906 scoped_refptr<Layer> child7 = CreateTestLayer(); |
9897 scoped_refptr<Layer> child8 = Layer::Create(); | 9907 scoped_refptr<Layer> child8 = CreateTestLayer(); |
9898 scoped_refptr<Layer> child9 = Layer::Create(); | 9908 scoped_refptr<Layer> child9 = CreateTestLayer(); |
9899 scoped_refptr<Layer> grand_child10 = Layer::Create(); | 9909 scoped_refptr<Layer> grand_child10 = CreateTestLayer(); |
9900 scoped_refptr<Layer> grand_child11 = Layer::Create(); | 9910 scoped_refptr<Layer> grand_child11 = CreateTestLayer(); |
9901 scoped_refptr<Layer> grand_child12 = Layer::Create(); | 9911 scoped_refptr<Layer> grand_child12 = CreateTestLayer(); |
9902 | 9912 |
9903 root1->AddChild(page_scale_layer); | 9913 root1->AddChild(page_scale_layer); |
9904 page_scale_layer->AddChild(parent2); | 9914 page_scale_layer->AddChild(parent2); |
9905 page_scale_layer->AddChild(parent3); | 9915 page_scale_layer->AddChild(parent3); |
9906 page_scale_layer->AddChild(parent4); | 9916 page_scale_layer->AddChild(parent4); |
9907 page_scale_layer->AddChild(parent5); | 9917 page_scale_layer->AddChild(parent5); |
9908 parent2->AddChild(child6); | 9918 parent2->AddChild(child6); |
9909 parent3->AddChild(child7); | 9919 parent3->AddChild(child7); |
9910 parent3->AddChild(child8); | 9920 parent3->AddChild(child8); |
9911 parent4->AddChild(child9); | 9921 parent4->AddChild(child9); |
(...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
9954 property_tree_root->data.contains_non_fast_scrollable_region = false; | 9964 property_tree_root->data.contains_non_fast_scrollable_region = false; |
9955 property_tree_root->data.transform_id = kRootPropertyTreeNodeId; | 9965 property_tree_root->data.transform_id = kRootPropertyTreeNodeId; |
9956 | 9966 |
9957 // The node owned by root1 | 9967 // The node owned by root1 |
9958 ScrollNode scroll_root1; | 9968 ScrollNode scroll_root1; |
9959 scroll_root1.id = 1; | 9969 scroll_root1.id = 1; |
9960 scroll_root1.owner_id = root1->id(); | 9970 scroll_root1.owner_id = root1->id(); |
9961 scroll_root1.data.user_scrollable_horizontal = true; | 9971 scroll_root1.data.user_scrollable_horizontal = true; |
9962 scroll_root1.data.user_scrollable_vertical = true; | 9972 scroll_root1.data.user_scrollable_vertical = true; |
9963 scroll_root1.data.transform_id = root1->transform_tree_index(); | 9973 scroll_root1.data.transform_id = root1->transform_tree_index(); |
| 9974 scroll_root1.data.element_id = root1->element_id(); |
9964 expected_scroll_tree.Insert(scroll_root1, 0); | 9975 expected_scroll_tree.Insert(scroll_root1, 0); |
9965 | 9976 |
9966 // The node owned by parent2 | 9977 // The node owned by parent2 |
9967 ScrollNode scroll_parent2; | 9978 ScrollNode scroll_parent2; |
9968 scroll_parent2.id = 2; | 9979 scroll_parent2.id = 2; |
9969 scroll_parent2.owner_id = parent2->id(); | 9980 scroll_parent2.owner_id = parent2->id(); |
9970 scroll_parent2.data.scrollable = true; | 9981 scroll_parent2.data.scrollable = true; |
9971 scroll_parent2.data.main_thread_scrolling_reasons = | 9982 scroll_parent2.data.main_thread_scrolling_reasons = |
9972 parent2->main_thread_scrolling_reasons(); | 9983 parent2->main_thread_scrolling_reasons(); |
9973 scroll_parent2.data.scroll_clip_layer_bounds = root1->bounds(); | 9984 scroll_parent2.data.scroll_clip_layer_bounds = root1->bounds(); |
9974 scroll_parent2.data.bounds = parent2->bounds(); | 9985 scroll_parent2.data.bounds = parent2->bounds(); |
9975 scroll_parent2.data.max_scroll_offset_affected_by_page_scale = true; | 9986 scroll_parent2.data.max_scroll_offset_affected_by_page_scale = true; |
9976 scroll_parent2.data.is_inner_viewport_scroll_layer = true; | 9987 scroll_parent2.data.is_inner_viewport_scroll_layer = true; |
9977 scroll_parent2.data.user_scrollable_horizontal = true; | 9988 scroll_parent2.data.user_scrollable_horizontal = true; |
9978 scroll_parent2.data.user_scrollable_vertical = true; | 9989 scroll_parent2.data.user_scrollable_vertical = true; |
9979 scroll_parent2.data.transform_id = parent2->transform_tree_index(); | 9990 scroll_parent2.data.transform_id = parent2->transform_tree_index(); |
| 9991 scroll_parent2.data.element_id = parent2->element_id(); |
9980 expected_scroll_tree.Insert(scroll_parent2, 1); | 9992 expected_scroll_tree.Insert(scroll_parent2, 1); |
9981 | 9993 |
9982 // The node owned by child6 | 9994 // The node owned by child6 |
9983 ScrollNode scroll_child6; | 9995 ScrollNode scroll_child6; |
9984 scroll_child6.id = 3; | 9996 scroll_child6.id = 3; |
9985 scroll_child6.owner_id = child6->id(); | 9997 scroll_child6.owner_id = child6->id(); |
9986 scroll_child6.data.main_thread_scrolling_reasons = | 9998 scroll_child6.data.main_thread_scrolling_reasons = |
9987 child6->main_thread_scrolling_reasons(); | 9999 child6->main_thread_scrolling_reasons(); |
9988 scroll_child6.data.should_flatten = true; | 10000 scroll_child6.data.should_flatten = true; |
9989 scroll_child6.data.user_scrollable_horizontal = true; | 10001 scroll_child6.data.user_scrollable_horizontal = true; |
9990 scroll_child6.data.user_scrollable_vertical = true; | 10002 scroll_child6.data.user_scrollable_vertical = true; |
9991 scroll_child6.data.transform_id = child6->transform_tree_index(); | 10003 scroll_child6.data.transform_id = child6->transform_tree_index(); |
| 10004 scroll_child6.data.element_id = child6->element_id(); |
9992 expected_scroll_tree.Insert(scroll_child6, 2); | 10005 expected_scroll_tree.Insert(scroll_child6, 2); |
9993 | 10006 |
9994 // The node owned by child7, child7 also owns a transform node | 10007 // The node owned by child7, child7 also owns a transform node |
9995 ScrollNode scroll_child7; | 10008 ScrollNode scroll_child7; |
9996 scroll_child7.id = 4; | 10009 scroll_child7.id = 4; |
9997 scroll_child7.owner_id = child7->id(); | 10010 scroll_child7.owner_id = child7->id(); |
9998 scroll_child7.data.scrollable = true; | 10011 scroll_child7.data.scrollable = true; |
9999 scroll_child7.data.scroll_clip_layer_bounds = parent3->bounds(); | 10012 scroll_child7.data.scroll_clip_layer_bounds = parent3->bounds(); |
10000 scroll_child7.data.bounds = child7->bounds(); | 10013 scroll_child7.data.bounds = child7->bounds(); |
10001 scroll_child7.data.user_scrollable_horizontal = true; | 10014 scroll_child7.data.user_scrollable_horizontal = true; |
10002 scroll_child7.data.user_scrollable_vertical = true; | 10015 scroll_child7.data.user_scrollable_vertical = true; |
10003 scroll_child7.data.transform_id = child7->transform_tree_index(); | 10016 scroll_child7.data.transform_id = child7->transform_tree_index(); |
| 10017 scroll_child7.data.element_id = child7->element_id(); |
10004 expected_scroll_tree.Insert(scroll_child7, 1); | 10018 expected_scroll_tree.Insert(scroll_child7, 1); |
10005 | 10019 |
10006 // The node owned by grand_child11, grand_child11 also owns a transform node | 10020 // The node owned by grand_child11, grand_child11 also owns a transform node |
10007 ScrollNode scroll_grand_child11; | 10021 ScrollNode scroll_grand_child11; |
10008 scroll_grand_child11.id = 5; | 10022 scroll_grand_child11.id = 5; |
10009 scroll_grand_child11.owner_id = grand_child11->id(); | 10023 scroll_grand_child11.owner_id = grand_child11->id(); |
10010 scroll_grand_child11.data.scrollable = true; | 10024 scroll_grand_child11.data.scrollable = true; |
10011 scroll_grand_child11.data.user_scrollable_horizontal = true; | 10025 scroll_grand_child11.data.user_scrollable_horizontal = true; |
10012 scroll_grand_child11.data.user_scrollable_vertical = true; | 10026 scroll_grand_child11.data.user_scrollable_vertical = true; |
10013 scroll_grand_child11.data.transform_id = | 10027 scroll_grand_child11.data.transform_id = |
10014 grand_child11->transform_tree_index(); | 10028 grand_child11->transform_tree_index(); |
| 10029 scroll_grand_child11.data.element_id = grand_child11->element_id(); |
10015 expected_scroll_tree.Insert(scroll_grand_child11, 4); | 10030 expected_scroll_tree.Insert(scroll_grand_child11, 4); |
10016 | 10031 |
10017 // The node owned by parent5 | 10032 // The node owned by parent5 |
10018 ScrollNode scroll_parent5; | 10033 ScrollNode scroll_parent5; |
10019 scroll_parent5.id = 8; | 10034 scroll_parent5.id = 8; |
10020 scroll_parent5.owner_id = parent5->id(); | 10035 scroll_parent5.owner_id = parent5->id(); |
10021 scroll_parent5.data.contains_non_fast_scrollable_region = true; | 10036 scroll_parent5.data.contains_non_fast_scrollable_region = true; |
10022 scroll_parent5.data.bounds = gfx::Size(10, 10); | 10037 scroll_parent5.data.bounds = gfx::Size(10, 10); |
10023 scroll_parent5.data.should_flatten = true; | 10038 scroll_parent5.data.should_flatten = true; |
10024 scroll_parent5.data.user_scrollable_horizontal = true; | 10039 scroll_parent5.data.user_scrollable_horizontal = true; |
10025 scroll_parent5.data.user_scrollable_vertical = true; | 10040 scroll_parent5.data.user_scrollable_vertical = true; |
10026 scroll_parent5.data.transform_id = parent5->transform_tree_index(); | 10041 scroll_parent5.data.transform_id = parent5->transform_tree_index(); |
| 10042 scroll_parent5.data.element_id = parent5->element_id(); |
10027 expected_scroll_tree.Insert(scroll_parent5, 1); | 10043 expected_scroll_tree.Insert(scroll_parent5, 1); |
10028 | 10044 |
10029 expected_scroll_tree.SetScrollOffset(parent2->id(), gfx::ScrollOffset(0, 0)); | 10045 expected_scroll_tree.SetScrollOffset(parent2->id(), gfx::ScrollOffset(0, 0)); |
10030 expected_scroll_tree.SetScrollOffset(child7->id(), gfx::ScrollOffset(0, 0)); | 10046 expected_scroll_tree.SetScrollOffset(child7->id(), gfx::ScrollOffset(0, 0)); |
10031 expected_scroll_tree.SetScrollOffset(grand_child11->id(), | 10047 expected_scroll_tree.SetScrollOffset(grand_child11->id(), |
10032 gfx::ScrollOffset(0, 0)); | 10048 gfx::ScrollOffset(0, 0)); |
10033 expected_scroll_tree.set_needs_update(false); | 10049 expected_scroll_tree.set_needs_update(false); |
10034 | 10050 |
10035 EXPECT_EQ(expected_scroll_tree, scroll_tree); | 10051 EXPECT_EQ(expected_scroll_tree, scroll_tree); |
10036 | 10052 |
10037 // Check other layers' scroll_tree_index | 10053 // Check other layers' scroll_tree_index |
10038 EXPECT_EQ(scroll_root1.id, page_scale_layer->scroll_tree_index()); | 10054 EXPECT_EQ(scroll_root1.id, page_scale_layer->scroll_tree_index()); |
10039 EXPECT_EQ(scroll_child6.id, grand_child10->scroll_tree_index()); | 10055 EXPECT_EQ(scroll_child6.id, grand_child10->scroll_tree_index()); |
10040 EXPECT_EQ(scroll_root1.id, parent3->scroll_tree_index()); | 10056 EXPECT_EQ(scroll_root1.id, parent3->scroll_tree_index()); |
10041 EXPECT_EQ(scroll_child7.id, child8->scroll_tree_index()); | 10057 EXPECT_EQ(scroll_child7.id, child8->scroll_tree_index()); |
10042 EXPECT_EQ(scroll_root1.id, parent4->scroll_tree_index()); | 10058 EXPECT_EQ(scroll_root1.id, parent4->scroll_tree_index()); |
10043 EXPECT_EQ(scroll_root1.id, child9->scroll_tree_index()); | 10059 EXPECT_EQ(scroll_root1.id, child9->scroll_tree_index()); |
10044 EXPECT_EQ(scroll_root1.id, grand_child12->scroll_tree_index()); | 10060 EXPECT_EQ(scroll_root1.id, grand_child12->scroll_tree_index()); |
10045 } | 10061 } |
10046 | 10062 |
10047 } // namespace | 10063 } // namespace |
10048 } // namespace cc | 10064 } // namespace cc |
OLD | NEW |