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 |