| 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 <set> | 7 #include <set> |
| 8 | 8 |
| 9 #include "cc/animation/layer_animation_controller.h" | 9 #include "cc/animation/layer_animation_controller.h" |
| 10 #include "cc/animation/transform_operations.h" | 10 #include "cc/animation/transform_operations.h" |
| (...skipping 563 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 574 identity_matrix, | 574 identity_matrix, |
| 575 gfx::Point3F(), | 575 gfx::Point3F(), |
| 576 gfx::PointF(), | 576 gfx::PointF(), |
| 577 gfx::Size(8, 10), | 577 gfx::Size(8, 10), |
| 578 true, | 578 true, |
| 579 false); | 579 false); |
| 580 ExecuteCalculateDrawProperties(root.get()); | 580 ExecuteCalculateDrawProperties(root.get()); |
| 581 | 581 |
| 582 // Render surface should have been created now. | 582 // Render surface should have been created now. |
| 583 ASSERT_TRUE(child->render_surface()); | 583 ASSERT_TRUE(child->render_surface()); |
| 584 ASSERT_EQ(child, child->render_target()); | 584 ASSERT_EQ(child.get(), child->render_target()); |
| 585 | 585 |
| 586 // The child layer's draw transform should refer to its new render surface. | 586 // The child layer's draw transform should refer to its new render surface. |
| 587 // The screen-space transform, however, should still refer to the root. | 587 // The screen-space transform, however, should still refer to the root. |
| 588 EXPECT_TRANSFORMATION_MATRIX_EQ(surface_sublayer_transform, | 588 EXPECT_TRANSFORMATION_MATRIX_EQ(surface_sublayer_transform, |
| 589 child->draw_transform()); | 589 child->draw_transform()); |
| 590 EXPECT_TRANSFORMATION_MATRIX_EQ(parent_composite_transform, | 590 EXPECT_TRANSFORMATION_MATRIX_EQ(parent_composite_transform, |
| 591 child->screen_space_transform()); | 591 child->screen_space_transform()); |
| 592 | 592 |
| 593 // Because the grand_child is the only drawable content, the child's render | 593 // Because the grand_child is the only drawable content, the child's render |
| 594 // surface will tighten its bounds to the grand_child. The scale at which the | 594 // surface will tighten its bounds to the grand_child. The scale at which the |
| (...skipping 84 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 679 replica_layer_transform, | 679 replica_layer_transform, |
| 680 gfx::Point3F(), | 680 gfx::Point3F(), |
| 681 gfx::PointF(), | 681 gfx::PointF(), |
| 682 gfx::Size(), | 682 gfx::Size(), |
| 683 true, | 683 true, |
| 684 false); | 684 false); |
| 685 ExecuteCalculateDrawProperties(root.get()); | 685 ExecuteCalculateDrawProperties(root.get()); |
| 686 | 686 |
| 687 // Render surface should have been created now. | 687 // Render surface should have been created now. |
| 688 ASSERT_TRUE(child->render_surface()); | 688 ASSERT_TRUE(child->render_surface()); |
| 689 ASSERT_EQ(child, child->render_target()); | 689 ASSERT_EQ(child.get(), child->render_target()); |
| 690 | 690 |
| 691 EXPECT_TRANSFORMATION_MATRIX_EQ( | 691 EXPECT_TRANSFORMATION_MATRIX_EQ( |
| 692 replica_composite_transform, | 692 replica_composite_transform, |
| 693 child->render_target()->render_surface()->replica_draw_transform()); | 693 child->render_target()->render_surface()->replica_draw_transform()); |
| 694 EXPECT_TRANSFORMATION_MATRIX_EQ(replica_composite_transform, | 694 EXPECT_TRANSFORMATION_MATRIX_EQ(replica_composite_transform, |
| 695 child->render_target() | 695 child->render_target() |
| 696 ->render_surface() | 696 ->render_surface() |
| 697 ->replica_screen_space_transform()); | 697 ->replica_screen_space_transform()); |
| 698 } | 698 } |
| 699 | 699 |
| (...skipping 182 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 882 | 882 |
| 883 ASSERT_TRUE(render_surface1->render_surface()); | 883 ASSERT_TRUE(render_surface1->render_surface()); |
| 884 ASSERT_FALSE(child_of_rs1->render_surface()); | 884 ASSERT_FALSE(child_of_rs1->render_surface()); |
| 885 ASSERT_FALSE(grand_child_of_rs1->render_surface()); | 885 ASSERT_FALSE(grand_child_of_rs1->render_surface()); |
| 886 | 886 |
| 887 ASSERT_TRUE(render_surface2->render_surface()); | 887 ASSERT_TRUE(render_surface2->render_surface()); |
| 888 ASSERT_FALSE(child_of_rs2->render_surface()); | 888 ASSERT_FALSE(child_of_rs2->render_surface()); |
| 889 ASSERT_FALSE(grand_child_of_rs2->render_surface()); | 889 ASSERT_FALSE(grand_child_of_rs2->render_surface()); |
| 890 | 890 |
| 891 // Verify all render target accessors | 891 // Verify all render target accessors |
| 892 EXPECT_EQ(root, parent->render_target()); | 892 EXPECT_EQ(root.get(), parent->render_target()); |
| 893 EXPECT_EQ(root, child_of_root->render_target()); | 893 EXPECT_EQ(root.get(), child_of_root->render_target()); |
| 894 EXPECT_EQ(root, grand_child_of_root->render_target()); | 894 EXPECT_EQ(root.get(), grand_child_of_root->render_target()); |
| 895 | 895 |
| 896 EXPECT_EQ(render_surface1, render_surface1->render_target()); | 896 EXPECT_EQ(render_surface1.get(), render_surface1->render_target()); |
| 897 EXPECT_EQ(render_surface1, child_of_rs1->render_target()); | 897 EXPECT_EQ(render_surface1.get(), child_of_rs1->render_target()); |
| 898 EXPECT_EQ(render_surface1, grand_child_of_rs1->render_target()); | 898 EXPECT_EQ(render_surface1.get(), grand_child_of_rs1->render_target()); |
| 899 | 899 |
| 900 EXPECT_EQ(render_surface2, render_surface2->render_target()); | 900 EXPECT_EQ(render_surface2.get(), render_surface2->render_target()); |
| 901 EXPECT_EQ(render_surface2, child_of_rs2->render_target()); | 901 EXPECT_EQ(render_surface2.get(), child_of_rs2->render_target()); |
| 902 EXPECT_EQ(render_surface2, grand_child_of_rs2->render_target()); | 902 EXPECT_EQ(render_surface2.get(), grand_child_of_rs2->render_target()); |
| 903 | 903 |
| 904 // Verify layer draw transforms note that draw transforms are described with | 904 // Verify layer draw transforms note that draw transforms are described with |
| 905 // respect to the nearest ancestor render surface but screen space transforms | 905 // respect to the nearest ancestor render surface but screen space transforms |
| 906 // are described with respect to the root. | 906 // are described with respect to the root. |
| 907 EXPECT_TRANSFORMATION_MATRIX_EQ(A, parent->draw_transform()); | 907 EXPECT_TRANSFORMATION_MATRIX_EQ(A, parent->draw_transform()); |
| 908 EXPECT_TRANSFORMATION_MATRIX_EQ(A * A, child_of_root->draw_transform()); | 908 EXPECT_TRANSFORMATION_MATRIX_EQ(A * A, child_of_root->draw_transform()); |
| 909 EXPECT_TRANSFORMATION_MATRIX_EQ(A * A * A, | 909 EXPECT_TRANSFORMATION_MATRIX_EQ(A * A * A, |
| 910 grand_child_of_root->draw_transform()); | 910 grand_child_of_root->draw_transform()); |
| 911 | 911 |
| 912 EXPECT_TRANSFORMATION_MATRIX_EQ(SS1, render_surface1->draw_transform()); | 912 EXPECT_TRANSFORMATION_MATRIX_EQ(SS1, render_surface1->draw_transform()); |
| (...skipping 1259 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2172 | 2172 |
| 2173 ASSERT_TRUE(render_surface1->render_surface()); | 2173 ASSERT_TRUE(render_surface1->render_surface()); |
| 2174 ASSERT_FALSE(child_of_rs1->render_surface()); | 2174 ASSERT_FALSE(child_of_rs1->render_surface()); |
| 2175 ASSERT_FALSE(grand_child_of_rs1->render_surface()); | 2175 ASSERT_FALSE(grand_child_of_rs1->render_surface()); |
| 2176 | 2176 |
| 2177 ASSERT_TRUE(render_surface2->render_surface()); | 2177 ASSERT_TRUE(render_surface2->render_surface()); |
| 2178 ASSERT_FALSE(child_of_rs2->render_surface()); | 2178 ASSERT_FALSE(child_of_rs2->render_surface()); |
| 2179 ASSERT_FALSE(grand_child_of_rs2->render_surface()); | 2179 ASSERT_FALSE(grand_child_of_rs2->render_surface()); |
| 2180 | 2180 |
| 2181 // Verify all render target accessors | 2181 // Verify all render target accessors |
| 2182 EXPECT_EQ(parent, parent->render_target()); | 2182 EXPECT_EQ(parent.get(), parent->render_target()); |
| 2183 EXPECT_EQ(parent, child_of_root->render_target()); | 2183 EXPECT_EQ(parent.get(), child_of_root->render_target()); |
| 2184 EXPECT_EQ(parent, grand_child_of_root->render_target()); | 2184 EXPECT_EQ(parent.get(), grand_child_of_root->render_target()); |
| 2185 | 2185 |
| 2186 EXPECT_EQ(render_surface1, render_surface1->render_target()); | 2186 EXPECT_EQ(render_surface1.get(), render_surface1->render_target()); |
| 2187 EXPECT_EQ(render_surface1, child_of_rs1->render_target()); | 2187 EXPECT_EQ(render_surface1.get(), child_of_rs1->render_target()); |
| 2188 EXPECT_EQ(render_surface1, grand_child_of_rs1->render_target()); | 2188 EXPECT_EQ(render_surface1.get(), grand_child_of_rs1->render_target()); |
| 2189 | 2189 |
| 2190 EXPECT_EQ(render_surface2, render_surface2->render_target()); | 2190 EXPECT_EQ(render_surface2.get(), render_surface2->render_target()); |
| 2191 EXPECT_EQ(render_surface2, child_of_rs2->render_target()); | 2191 EXPECT_EQ(render_surface2.get(), child_of_rs2->render_target()); |
| 2192 EXPECT_EQ(render_surface2, grand_child_of_rs2->render_target()); | 2192 EXPECT_EQ(render_surface2.get(), grand_child_of_rs2->render_target()); |
| 2193 | 2193 |
| 2194 // Verify draw_opacity_is_animating values | 2194 // Verify draw_opacity_is_animating values |
| 2195 EXPECT_FALSE(parent->draw_opacity_is_animating()); | 2195 EXPECT_FALSE(parent->draw_opacity_is_animating()); |
| 2196 EXPECT_FALSE(child_of_root->draw_opacity_is_animating()); | 2196 EXPECT_FALSE(child_of_root->draw_opacity_is_animating()); |
| 2197 EXPECT_TRUE(grand_child_of_root->draw_opacity_is_animating()); | 2197 EXPECT_TRUE(grand_child_of_root->draw_opacity_is_animating()); |
| 2198 EXPECT_FALSE(render_surface1->draw_opacity_is_animating()); | 2198 EXPECT_FALSE(render_surface1->draw_opacity_is_animating()); |
| 2199 EXPECT_TRUE(render_surface1->render_surface()->draw_opacity_is_animating()); | 2199 EXPECT_TRUE(render_surface1->render_surface()->draw_opacity_is_animating()); |
| 2200 EXPECT_FALSE(child_of_rs1->draw_opacity_is_animating()); | 2200 EXPECT_FALSE(child_of_rs1->draw_opacity_is_animating()); |
| 2201 EXPECT_FALSE(grand_child_of_rs1->draw_opacity_is_animating()); | 2201 EXPECT_FALSE(grand_child_of_rs1->draw_opacity_is_animating()); |
| 2202 EXPECT_FALSE(render_surface2->draw_opacity_is_animating()); | 2202 EXPECT_FALSE(render_surface2->draw_opacity_is_animating()); |
| (...skipping 2027 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 4230 host->SetRootLayer(root); | 4230 host->SetRootLayer(root); |
| 4231 | 4231 |
| 4232 float device_scale_factor = 2.5f; | 4232 float device_scale_factor = 2.5f; |
| 4233 float page_scale_factor = 3.f; | 4233 float page_scale_factor = 3.f; |
| 4234 | 4234 |
| 4235 RenderSurfaceLayerList render_surface_layer_list; | 4235 RenderSurfaceLayerList render_surface_layer_list; |
| 4236 LayerTreeHostCommon::CalcDrawPropsMainInputsForTesting inputs( | 4236 LayerTreeHostCommon::CalcDrawPropsMainInputsForTesting inputs( |
| 4237 root.get(), parent->bounds(), &render_surface_layer_list); | 4237 root.get(), parent->bounds(), &render_surface_layer_list); |
| 4238 inputs.device_scale_factor = device_scale_factor; | 4238 inputs.device_scale_factor = device_scale_factor; |
| 4239 inputs.page_scale_factor = page_scale_factor; | 4239 inputs.page_scale_factor = page_scale_factor; |
| 4240 inputs.page_scale_application_layer = root; | 4240 inputs.page_scale_application_layer = root.get(); |
| 4241 inputs.can_adjust_raster_scales = true; | 4241 inputs.can_adjust_raster_scales = true; |
| 4242 LayerTreeHostCommon::CalculateDrawProperties(&inputs); | 4242 LayerTreeHostCommon::CalculateDrawProperties(&inputs); |
| 4243 | 4243 |
| 4244 EXPECT_CONTENTS_SCALE_EQ(device_scale_factor * page_scale_factor, parent); | 4244 EXPECT_CONTENTS_SCALE_EQ(device_scale_factor * page_scale_factor, parent); |
| 4245 EXPECT_CONTENTS_SCALE_EQ(device_scale_factor * page_scale_factor, | 4245 EXPECT_CONTENTS_SCALE_EQ(device_scale_factor * page_scale_factor, |
| 4246 perspective_surface); | 4246 perspective_surface); |
| 4247 EXPECT_CONTENTS_SCALE_EQ(device_scale_factor * page_scale_factor, | 4247 EXPECT_CONTENTS_SCALE_EQ(device_scale_factor * page_scale_factor, |
| 4248 scale_surface); | 4248 scale_surface); |
| 4249 | 4249 |
| 4250 EXPECT_EQ(3u, render_surface_layer_list.size()); | 4250 EXPECT_EQ(3u, render_surface_layer_list.size()); |
| (...skipping 1306 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 5557 | 5557 |
| 5558 grand_child->SetReplicaLayer(replica_layer.get()); | 5558 grand_child->SetReplicaLayer(replica_layer.get()); |
| 5559 child->AddChild(grand_child.get()); | 5559 child->AddChild(grand_child.get()); |
| 5560 child->SetMaskLayer(mask_layer.get()); | 5560 child->SetMaskLayer(mask_layer.get()); |
| 5561 root->AddChild(child.get()); | 5561 root->AddChild(child.get()); |
| 5562 | 5562 |
| 5563 scoped_ptr<FakeLayerTreeHost> host = FakeLayerTreeHost::Create(); | 5563 scoped_ptr<FakeLayerTreeHost> host = FakeLayerTreeHost::Create(); |
| 5564 host->SetRootLayer(root); | 5564 host->SetRootLayer(root); |
| 5565 | 5565 |
| 5566 int nonexistent_id = -1; | 5566 int nonexistent_id = -1; |
| 5567 EXPECT_EQ(root, | 5567 EXPECT_EQ(root.get(), |
| 5568 LayerTreeHostCommon::FindLayerInSubtree(root.get(), root->id())); | 5568 LayerTreeHostCommon::FindLayerInSubtree(root.get(), root->id())); |
| 5569 EXPECT_EQ(child, | 5569 EXPECT_EQ(child.get(), |
| 5570 LayerTreeHostCommon::FindLayerInSubtree(root.get(), child->id())); | 5570 LayerTreeHostCommon::FindLayerInSubtree(root.get(), child->id())); |
| 5571 EXPECT_EQ( | 5571 EXPECT_EQ( |
| 5572 grand_child, | 5572 grand_child.get(), |
| 5573 LayerTreeHostCommon::FindLayerInSubtree(root.get(), grand_child->id())); | 5573 LayerTreeHostCommon::FindLayerInSubtree(root.get(), grand_child->id())); |
| 5574 EXPECT_EQ( | 5574 EXPECT_EQ( |
| 5575 mask_layer, | 5575 mask_layer.get(), |
| 5576 LayerTreeHostCommon::FindLayerInSubtree(root.get(), mask_layer->id())); | 5576 LayerTreeHostCommon::FindLayerInSubtree(root.get(), mask_layer->id())); |
| 5577 EXPECT_EQ( | 5577 EXPECT_EQ( |
| 5578 replica_layer, | 5578 replica_layer.get(), |
| 5579 LayerTreeHostCommon::FindLayerInSubtree(root.get(), replica_layer->id())); | 5579 LayerTreeHostCommon::FindLayerInSubtree(root.get(), replica_layer->id())); |
| 5580 EXPECT_EQ( | 5580 EXPECT_EQ( |
| 5581 0, LayerTreeHostCommon::FindLayerInSubtree(root.get(), nonexistent_id)); | 5581 0, LayerTreeHostCommon::FindLayerInSubtree(root.get(), nonexistent_id)); |
| 5582 } | 5582 } |
| 5583 | 5583 |
| 5584 TEST_F(LayerTreeHostCommonTest, TransparentChildRenderSurfaceCreation) { | 5584 TEST_F(LayerTreeHostCommonTest, TransparentChildRenderSurfaceCreation) { |
| 5585 scoped_refptr<Layer> root = Layer::Create(); | 5585 scoped_refptr<Layer> root = Layer::Create(); |
| 5586 scoped_refptr<Layer> child = Layer::Create(); | 5586 scoped_refptr<Layer> child = Layer::Create(); |
| 5587 scoped_refptr<LayerWithForcedDrawsContent> grand_child = | 5587 scoped_refptr<LayerWithForcedDrawsContent> grand_child = |
| 5588 make_scoped_refptr(new LayerWithForcedDrawsContent()); | 5588 make_scoped_refptr(new LayerWithForcedDrawsContent()); |
| (...skipping 1766 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 7355 EXPECT_TRUE(root->render_surface()); | 7355 EXPECT_TRUE(root->render_surface()); |
| 7356 | 7356 |
| 7357 EXPECT_EQ(gfx::Rect(0, 0, 20, 20).ToString(), | 7357 EXPECT_EQ(gfx::Rect(0, 0, 20, 20).ToString(), |
| 7358 scroll_child->clip_rect().ToString()); | 7358 scroll_child->clip_rect().ToString()); |
| 7359 EXPECT_TRUE(scroll_child->is_clipped()); | 7359 EXPECT_TRUE(scroll_child->is_clipped()); |
| 7360 | 7360 |
| 7361 // Despite the fact that we visited the above layers out of order to get the | 7361 // Despite the fact that we visited the above layers out of order to get the |
| 7362 // correct clip, the layer lists should be unaffected. | 7362 // correct clip, the layer lists should be unaffected. |
| 7363 EXPECT_EQ(3u, root->render_surface()->layer_list().size()); | 7363 EXPECT_EQ(3u, root->render_surface()->layer_list().size()); |
| 7364 EXPECT_EQ(scroll_child.get(), | 7364 EXPECT_EQ(scroll_child.get(), |
| 7365 root->render_surface()->layer_list().at(0)); | 7365 root->render_surface()->layer_list().at(0).get()); |
| 7366 EXPECT_EQ(scroll_parent.get(), | 7366 EXPECT_EQ(scroll_parent.get(), |
| 7367 root->render_surface()->layer_list().at(1)); | 7367 root->render_surface()->layer_list().at(1).get()); |
| 7368 EXPECT_EQ(scroll_grandparent.get(), | 7368 EXPECT_EQ(scroll_grandparent.get(), |
| 7369 root->render_surface()->layer_list().at(2)); | 7369 root->render_surface()->layer_list().at(2).get()); |
| 7370 } | 7370 } |
| 7371 | 7371 |
| 7372 TEST_F(LayerTreeHostCommonTest, OutOfOrderClippingRequiresRSLLSorting) { | 7372 TEST_F(LayerTreeHostCommonTest, OutOfOrderClippingRequiresRSLLSorting) { |
| 7373 // Ensures that even if we visit layers out of order, we still produce a | 7373 // Ensures that even if we visit layers out of order, we still produce a |
| 7374 // correctly ordered render surface layer list. | 7374 // correctly ordered render surface layer list. |
| 7375 // + root | 7375 // + root |
| 7376 // + scroll_child | 7376 // + scroll_child |
| 7377 // + scroll_parent_border | 7377 // + scroll_parent_border |
| 7378 // + scroll_parent_clip | 7378 // + scroll_parent_clip |
| 7379 // + scroll_parent | 7379 // + scroll_parent |
| (...skipping 1174 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 8554 EXPECT_FLOAT_EQ(4.f, | 8554 EXPECT_FLOAT_EQ(4.f, |
| 8555 child1_layer->replica_layer() | 8555 child1_layer->replica_layer() |
| 8556 ->mask_layer() | 8556 ->mask_layer() |
| 8557 ->draw_properties() | 8557 ->draw_properties() |
| 8558 .device_scale_factor); | 8558 .device_scale_factor); |
| 8559 EXPECT_FLOAT_EQ(4.f, child2_layer->draw_properties().device_scale_factor); | 8559 EXPECT_FLOAT_EQ(4.f, child2_layer->draw_properties().device_scale_factor); |
| 8560 } | 8560 } |
| 8561 | 8561 |
| 8562 } // namespace | 8562 } // namespace |
| 8563 } // namespace cc | 8563 } // namespace cc |
| OLD | NEW |