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 1575 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1586 | 1586 |
1587 const gfx::Transform identity_matrix; | 1587 const gfx::Transform identity_matrix; |
1588 SetLayerPropertiesForTesting(parent, identity_matrix, gfx::Point3F(), | 1588 SetLayerPropertiesForTesting(parent, identity_matrix, gfx::Point3F(), |
1589 gfx::PointF(), gfx::Size(10, 10), true, false); | 1589 gfx::PointF(), gfx::Size(10, 10), true, false); |
1590 SetLayerPropertiesForTesting(render_surface1, identity_matrix, gfx::Point3F(), | 1590 SetLayerPropertiesForTesting(render_surface1, identity_matrix, gfx::Point3F(), |
1591 gfx::PointF(), gfx::Size(10, 10), true, false); | 1591 gfx::PointF(), gfx::Size(10, 10), true, false); |
1592 SetLayerPropertiesForTesting(child, identity_matrix, gfx::Point3F(), | 1592 SetLayerPropertiesForTesting(child, identity_matrix, gfx::Point3F(), |
1593 gfx::PointF(), gfx::Size(10, 10), true, false); | 1593 gfx::PointF(), gfx::Size(10, 10), true, false); |
1594 | 1594 |
1595 child->SetDrawsContent(true); | 1595 child->SetDrawsContent(true); |
1596 render_surface1->SetForceRenderSurface(true); | 1596 render_surface1->test_properties()->force_render_surface = true; |
1597 | 1597 |
1598 { | 1598 { |
1599 ExecuteCalculateDrawPropertiesWithPropertyTrees(parent); | 1599 ExecuteCalculateDrawPropertiesWithPropertyTrees(parent); |
1600 | 1600 |
1601 // The root layer always creates a render surface | 1601 // The root layer always creates a render surface |
1602 EXPECT_TRUE(parent->has_render_surface()); | 1602 EXPECT_TRUE(parent->has_render_surface()); |
1603 EXPECT_TRUE(render_surface1->has_render_surface()); | 1603 EXPECT_TRUE(render_surface1->has_render_surface()); |
1604 } | 1604 } |
1605 | 1605 |
1606 { | 1606 { |
1607 render_surface1->SetForceRenderSurface(false); | 1607 render_surface1->test_properties()->force_render_surface = false; |
1608 render_surface1->layer_tree_impl()->property_trees()->needs_rebuild = true; | 1608 render_surface1->layer_tree_impl()->property_trees()->needs_rebuild = true; |
1609 ExecuteCalculateDrawPropertiesWithPropertyTrees(parent); | 1609 ExecuteCalculateDrawPropertiesWithPropertyTrees(parent); |
1610 EXPECT_TRUE(parent->has_render_surface()); | 1610 EXPECT_TRUE(parent->has_render_surface()); |
1611 EXPECT_FALSE(render_surface1->has_render_surface()); | 1611 EXPECT_FALSE(render_surface1->has_render_surface()); |
1612 } | 1612 } |
1613 } | 1613 } |
1614 | 1614 |
1615 TEST_F(LayerTreeHostCommonTest, RenderSurfacesFlattenScreenSpaceTransform) { | 1615 TEST_F(LayerTreeHostCommonTest, RenderSurfacesFlattenScreenSpaceTransform) { |
1616 // Render surfaces act as a flattening point for their subtree, so should | 1616 // Render surfaces act as a flattening point for their subtree, so should |
1617 // always flatten the target-to-screen space transform seen by descendants. | 1617 // always flatten the target-to-screen space transform seen by descendants. |
(...skipping 687 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2305 SetLayerPropertiesForTesting(leaf_node1, identity_matrix, gfx::Point3F(), | 2305 SetLayerPropertiesForTesting(leaf_node1, identity_matrix, gfx::Point3F(), |
2306 gfx::PointF(16.f, 16.f), gfx::Size(2000, 2000), | 2306 gfx::PointF(16.f, 16.f), gfx::Size(2000, 2000), |
2307 true, false); | 2307 true, false); |
2308 SetLayerPropertiesForTesting(leaf_node2, identity_matrix, gfx::Point3F(), | 2308 SetLayerPropertiesForTesting(leaf_node2, identity_matrix, gfx::Point3F(), |
2309 gfx::PointF(9.f, 9.f), gfx::Size(2000, 2000), | 2309 gfx::PointF(9.f, 9.f), gfx::Size(2000, 2000), |
2310 true, false); | 2310 true, false); |
2311 | 2311 |
2312 // Case 1: Nothing is clipped. In this case, each layer's clip rect is its | 2312 // Case 1: Nothing is clipped. In this case, each layer's clip rect is its |
2313 // bounds in target space. The only thing that changes when surfaces are | 2313 // bounds in target space. The only thing that changes when surfaces are |
2314 // disabled is that target space is always screen space. | 2314 // disabled is that target space is always screen space. |
2315 root->SetForceRenderSurface(true); | 2315 root->test_properties()->force_render_surface = true; |
2316 child1->SetForceRenderSurface(true); | 2316 child1->test_properties()->force_render_surface = true; |
2317 grand_child->SetForceRenderSurface(true); | 2317 grand_child->test_properties()->force_render_surface = true; |
2318 ExecuteCalculateDrawProperties(root); | 2318 ExecuteCalculateDrawProperties(root); |
2319 EXPECT_TRUE(root->has_render_surface()); | 2319 EXPECT_TRUE(root->has_render_surface()); |
2320 EXPECT_FALSE(parent->has_render_surface()); | 2320 EXPECT_FALSE(parent->has_render_surface()); |
2321 EXPECT_TRUE(child1->has_render_surface()); | 2321 EXPECT_TRUE(child1->has_render_surface()); |
2322 EXPECT_FALSE(child2->has_render_surface()); | 2322 EXPECT_FALSE(child2->has_render_surface()); |
2323 EXPECT_TRUE(grand_child->has_render_surface()); | 2323 EXPECT_TRUE(grand_child->has_render_surface()); |
2324 EXPECT_FALSE(leaf_node1->has_render_surface()); | 2324 EXPECT_FALSE(leaf_node1->has_render_surface()); |
2325 EXPECT_FALSE(leaf_node2->has_render_surface()); | 2325 EXPECT_FALSE(leaf_node2->has_render_surface()); |
2326 EXPECT_FALSE(root->is_clipped()); | 2326 EXPECT_FALSE(root->is_clipped()); |
2327 EXPECT_FALSE(parent->is_clipped()); | 2327 EXPECT_FALSE(parent->is_clipped()); |
(...skipping 15 matching lines...) Expand all Loading... |
2343 EXPECT_FALSE(grand_child->is_clipped()); | 2343 EXPECT_FALSE(grand_child->is_clipped()); |
2344 EXPECT_FALSE(leaf_node1->is_clipped()); | 2344 EXPECT_FALSE(leaf_node1->is_clipped()); |
2345 EXPECT_FALSE(leaf_node2->is_clipped()); | 2345 EXPECT_FALSE(leaf_node2->is_clipped()); |
2346 EXPECT_TRUE(root->render_surface()->is_clipped()); | 2346 EXPECT_TRUE(root->render_surface()->is_clipped()); |
2347 EXPECT_EQ(gfx::Rect(100, 100), root->render_surface()->clip_rect()); | 2347 EXPECT_EQ(gfx::Rect(100, 100), root->render_surface()->clip_rect()); |
2348 | 2348 |
2349 // Case 2: The root is clipped. In this case, layers that draw into the root | 2349 // Case 2: The root is clipped. In this case, layers that draw into the root |
2350 // render surface are clipped by the root's bounds. | 2350 // render surface are clipped by the root's bounds. |
2351 root->SetMasksToBounds(true); | 2351 root->SetMasksToBounds(true); |
2352 host_impl()->active_tree()->property_trees()->needs_rebuild = true; | 2352 host_impl()->active_tree()->property_trees()->needs_rebuild = true; |
2353 root->SetForceRenderSurface(true); | 2353 root->test_properties()->force_render_surface = true; |
2354 child1->SetForceRenderSurface(true); | 2354 child1->test_properties()->force_render_surface = true; |
2355 grand_child->SetForceRenderSurface(true); | 2355 grand_child->test_properties()->force_render_surface = true; |
2356 ExecuteCalculateDrawProperties(root); | 2356 ExecuteCalculateDrawProperties(root); |
2357 EXPECT_TRUE(root->has_render_surface()); | 2357 EXPECT_TRUE(root->has_render_surface()); |
2358 EXPECT_FALSE(parent->has_render_surface()); | 2358 EXPECT_FALSE(parent->has_render_surface()); |
2359 EXPECT_TRUE(child1->has_render_surface()); | 2359 EXPECT_TRUE(child1->has_render_surface()); |
2360 EXPECT_FALSE(child2->has_render_surface()); | 2360 EXPECT_FALSE(child2->has_render_surface()); |
2361 EXPECT_TRUE(grand_child->has_render_surface()); | 2361 EXPECT_TRUE(grand_child->has_render_surface()); |
2362 EXPECT_FALSE(leaf_node1->has_render_surface()); | 2362 EXPECT_FALSE(leaf_node1->has_render_surface()); |
2363 EXPECT_FALSE(leaf_node2->has_render_surface()); | 2363 EXPECT_FALSE(leaf_node2->has_render_surface()); |
2364 EXPECT_TRUE(root->is_clipped()); | 2364 EXPECT_TRUE(root->is_clipped()); |
2365 EXPECT_TRUE(parent->is_clipped()); | 2365 EXPECT_TRUE(parent->is_clipped()); |
(...skipping 30 matching lines...) Expand all Loading... |
2396 | 2396 |
2397 // Case 3: The parent and child1 are clipped. When surfaces are enabled, the | 2397 // Case 3: The parent and child1 are clipped. When surfaces are enabled, the |
2398 // parent clip rect only contributes to the subtree rooted at child2, since | 2398 // parent clip rect only contributes to the subtree rooted at child2, since |
2399 // the subtree rooted at child1 renders into a separate surface. Similarly, | 2399 // the subtree rooted at child1 renders into a separate surface. Similarly, |
2400 // child1's clip rect doesn't contribute to its descendants, since its only | 2400 // child1's clip rect doesn't contribute to its descendants, since its only |
2401 // child is a render surface. However, without surfaces, these clip rects | 2401 // child is a render surface. However, without surfaces, these clip rects |
2402 // contribute to all descendants. | 2402 // contribute to all descendants. |
2403 parent->SetMasksToBounds(true); | 2403 parent->SetMasksToBounds(true); |
2404 child1->SetMasksToBounds(true); | 2404 child1->SetMasksToBounds(true); |
2405 host_impl()->active_tree()->property_trees()->needs_rebuild = true; | 2405 host_impl()->active_tree()->property_trees()->needs_rebuild = true; |
2406 root->SetForceRenderSurface(true); | 2406 root->test_properties()->force_render_surface = true; |
2407 child1->SetForceRenderSurface(true); | 2407 child1->test_properties()->force_render_surface = true; |
2408 grand_child->SetForceRenderSurface(true); | 2408 grand_child->test_properties()->force_render_surface = true; |
2409 ExecuteCalculateDrawProperties(root); | 2409 ExecuteCalculateDrawProperties(root); |
2410 EXPECT_TRUE(root->has_render_surface()); | 2410 EXPECT_TRUE(root->has_render_surface()); |
2411 EXPECT_FALSE(parent->has_render_surface()); | 2411 EXPECT_FALSE(parent->has_render_surface()); |
2412 EXPECT_TRUE(child1->has_render_surface()); | 2412 EXPECT_TRUE(child1->has_render_surface()); |
2413 EXPECT_FALSE(child2->has_render_surface()); | 2413 EXPECT_FALSE(child2->has_render_surface()); |
2414 EXPECT_TRUE(grand_child->has_render_surface()); | 2414 EXPECT_TRUE(grand_child->has_render_surface()); |
2415 EXPECT_FALSE(leaf_node1->has_render_surface()); | 2415 EXPECT_FALSE(leaf_node1->has_render_surface()); |
2416 EXPECT_FALSE(leaf_node2->has_render_surface()); | 2416 EXPECT_FALSE(leaf_node2->has_render_surface()); |
2417 EXPECT_FALSE(root->is_clipped()); | 2417 EXPECT_FALSE(root->is_clipped()); |
2418 EXPECT_TRUE(root->render_surface()->is_clipped()); | 2418 EXPECT_TRUE(root->render_surface()->is_clipped()); |
(...skipping 1970 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
4389 AddChild<LayerImpl>(back_facing_surface); | 4389 AddChild<LayerImpl>(back_facing_surface); |
4390 // Opacity will not force creation of render surfaces in this case because of | 4390 // Opacity will not force creation of render surfaces in this case because of |
4391 // the preserve-3d transform style. Instead, an example of when a surface | 4391 // the preserve-3d transform style. Instead, an example of when a surface |
4392 // would be created with preserve-3d is when there is a replica layer. | 4392 // would be created with preserve-3d is when there is a replica layer. |
4393 LayerImpl* dummy_replica_layer1 = | 4393 LayerImpl* dummy_replica_layer1 = |
4394 AddReplicaLayer<LayerImpl>(front_facing_surface); | 4394 AddReplicaLayer<LayerImpl>(front_facing_surface); |
4395 LayerImpl* dummy_replica_layer2 = | 4395 LayerImpl* dummy_replica_layer2 = |
4396 AddReplicaLayer<LayerImpl>(back_facing_surface); | 4396 AddReplicaLayer<LayerImpl>(back_facing_surface); |
4397 | 4397 |
4398 // Nothing is double-sided | 4398 // Nothing is double-sided |
4399 front_facing_child->SetDoubleSided(false); | 4399 front_facing_child->test_properties()->double_sided = false; |
4400 back_facing_child->SetDoubleSided(false); | 4400 back_facing_child->test_properties()->double_sided = false; |
4401 front_facing_surface->SetDoubleSided(false); | 4401 front_facing_surface->test_properties()->double_sided = false; |
4402 back_facing_surface->SetDoubleSided(false); | 4402 back_facing_surface->test_properties()->double_sided = false; |
4403 front_facing_child_of_front_facing_surface->SetDoubleSided(false); | 4403 front_facing_child_of_front_facing_surface->test_properties()->double_sided = |
4404 back_facing_child_of_front_facing_surface->SetDoubleSided(false); | 4404 false; |
4405 front_facing_child_of_back_facing_surface->SetDoubleSided(false); | 4405 back_facing_child_of_front_facing_surface->test_properties()->double_sided = |
4406 back_facing_child_of_back_facing_surface->SetDoubleSided(false); | 4406 false; |
| 4407 front_facing_child_of_back_facing_surface->test_properties()->double_sided = |
| 4408 false; |
| 4409 back_facing_child_of_back_facing_surface->test_properties()->double_sided = |
| 4410 false; |
4407 | 4411 |
4408 // Everything draws content. | 4412 // Everything draws content. |
4409 front_facing_child->SetDrawsContent(true); | 4413 front_facing_child->SetDrawsContent(true); |
4410 back_facing_child->SetDrawsContent(true); | 4414 back_facing_child->SetDrawsContent(true); |
4411 front_facing_surface->SetDrawsContent(true); | 4415 front_facing_surface->SetDrawsContent(true); |
4412 back_facing_surface->SetDrawsContent(true); | 4416 back_facing_surface->SetDrawsContent(true); |
4413 front_facing_child_of_front_facing_surface->SetDrawsContent(true); | 4417 front_facing_child_of_front_facing_surface->SetDrawsContent(true); |
4414 back_facing_child_of_front_facing_surface->SetDrawsContent(true); | 4418 back_facing_child_of_front_facing_surface->SetDrawsContent(true); |
4415 front_facing_child_of_back_facing_surface->SetDrawsContent(true); | 4419 front_facing_child_of_back_facing_surface->SetDrawsContent(true); |
4416 back_facing_child_of_back_facing_surface->SetDrawsContent(true); | 4420 back_facing_child_of_back_facing_surface->SetDrawsContent(true); |
(...skipping 96 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
4513 animating_surface->SetDoubleSided(false); | 4517 animating_surface->SetDoubleSided(false); |
4514 child_of_animating_surface->SetDoubleSided(false); | 4518 child_of_animating_surface->SetDoubleSided(false); |
4515 animating_child->SetDoubleSided(false); | 4519 animating_child->SetDoubleSided(false); |
4516 | 4520 |
4517 gfx::Transform backface_matrix; | 4521 gfx::Transform backface_matrix; |
4518 backface_matrix.Translate(50.0, 50.0); | 4522 backface_matrix.Translate(50.0, 50.0); |
4519 backface_matrix.RotateAboutYAxis(180.0); | 4523 backface_matrix.RotateAboutYAxis(180.0); |
4520 backface_matrix.Translate(-50.0, -50.0); | 4524 backface_matrix.Translate(-50.0, -50.0); |
4521 | 4525 |
4522 // Make our render surface. | 4526 // Make our render surface. |
4523 animating_surface->SetForceRenderSurface(true); | 4527 animating_surface->SetForceRenderSurfaceForTesting(true); |
4524 | 4528 |
4525 // Animate the transform on the render surface. | 4529 // Animate the transform on the render surface. |
4526 AddAnimatedTransformToLayerWithPlayer(animating_surface->id(), timeline(), | 4530 AddAnimatedTransformToLayerWithPlayer(animating_surface->id(), timeline(), |
4527 10.0, 30, 0); | 4531 10.0, 30, 0); |
4528 // This is just an animating layer, not a surface. | 4532 // This is just an animating layer, not a surface. |
4529 AddAnimatedTransformToLayerWithPlayer(animating_child->id(), timeline(), 10.0, | 4533 AddAnimatedTransformToLayerWithPlayer(animating_child->id(), timeline(), 10.0, |
4530 30, 0); | 4534 30, 0); |
4531 | 4535 |
4532 SetLayerPropertiesForTesting(parent.get(), | 4536 SetLayerPropertiesForTesting(parent.get(), |
4533 identity_matrix, | 4537 identity_matrix, |
(...skipping 1921 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
6455 gfx::PointF(), gfx::Size(20, 20), true, false, | 6459 gfx::PointF(), gfx::Size(20, 20), true, false, |
6456 false); | 6460 false); |
6457 SetLayerPropertiesForTesting(child2, identity_transform, gfx::Point3F(), | 6461 SetLayerPropertiesForTesting(child2, identity_transform, gfx::Point3F(), |
6458 gfx::PointF(), gfx::Size(20, 20), true, false, | 6462 gfx::PointF(), gfx::Size(20, 20), true, false, |
6459 false); | 6463 false); |
6460 | 6464 |
6461 root->SetShouldFlattenTransform(false); | 6465 root->SetShouldFlattenTransform(false); |
6462 root->Set3dSortingContextId(1); | 6466 root->Set3dSortingContextId(1); |
6463 back_facing->Set3dSortingContextId(1); | 6467 back_facing->Set3dSortingContextId(1); |
6464 back_facing->SetShouldFlattenTransform(false); | 6468 back_facing->SetShouldFlattenTransform(false); |
6465 render_surface1->SetDoubleSided(false); | 6469 render_surface1->test_properties()->double_sided = false; |
6466 render_surface2->Set3dSortingContextId(2); | 6470 render_surface2->Set3dSortingContextId(2); |
6467 render_surface2->SetDoubleSided(false); | 6471 render_surface2->test_properties()->double_sided = false; |
6468 | 6472 |
6469 ExecuteCalculateDrawProperties(root); | 6473 ExecuteCalculateDrawProperties(root); |
6470 | 6474 |
6471 EXPECT_EQ(render_surface1->sorting_context_id(), root->sorting_context_id()); | 6475 EXPECT_EQ(render_surface1->sorting_context_id(), root->sorting_context_id()); |
6472 EXPECT_NE(render_surface2->sorting_context_id(), root->sorting_context_id()); | 6476 EXPECT_NE(render_surface2->sorting_context_id(), root->sorting_context_id()); |
6473 EXPECT_EQ(3u, render_surface_layer_list_impl()->size()); | 6477 EXPECT_EQ(3u, render_surface_layer_list_impl()->size()); |
6474 EXPECT_EQ(2u, render_surface_layer_list_impl() | 6478 EXPECT_EQ(2u, render_surface_layer_list_impl() |
6475 ->at(0) | 6479 ->at(0) |
6476 ->render_surface() | 6480 ->render_surface() |
6477 ->layer_list() | 6481 ->layer_list() |
(...skipping 23 matching lines...) Expand all Loading... |
6501 ->layer_list() | 6505 ->layer_list() |
6502 .size()); | 6506 .size()); |
6503 } | 6507 } |
6504 | 6508 |
6505 TEST_F(LayerTreeHostCommonTest, DoNotIncludeBackfaceInvisibleLayers) { | 6509 TEST_F(LayerTreeHostCommonTest, DoNotIncludeBackfaceInvisibleLayers) { |
6506 LayerImpl* root = root_layer(); | 6510 LayerImpl* root = root_layer(); |
6507 LayerImpl* child = AddChild<LayerImpl>(root); | 6511 LayerImpl* child = AddChild<LayerImpl>(root); |
6508 LayerImpl* grand_child = AddChild<LayerImpl>(child); | 6512 LayerImpl* grand_child = AddChild<LayerImpl>(child); |
6509 grand_child->SetDrawsContent(true); | 6513 grand_child->SetDrawsContent(true); |
6510 | 6514 |
6511 child->SetDoubleSided(false); | 6515 child->test_properties()->double_sided = false; |
6512 grand_child->SetUseParentBackfaceVisibility(true); | 6516 grand_child->SetUseParentBackfaceVisibility(true); |
6513 | 6517 |
6514 gfx::Transform identity_transform; | 6518 gfx::Transform identity_transform; |
6515 SetLayerPropertiesForTesting(root, identity_transform, gfx::Point3F(), | 6519 SetLayerPropertiesForTesting(root, identity_transform, gfx::Point3F(), |
6516 gfx::PointF(), gfx::Size(50, 50), false, false, | 6520 gfx::PointF(), gfx::Size(50, 50), false, false, |
6517 true); | 6521 true); |
6518 SetLayerPropertiesForTesting(child, identity_transform, gfx::Point3F(), | 6522 SetLayerPropertiesForTesting(child, identity_transform, gfx::Point3F(), |
6519 gfx::PointF(), gfx::Size(30, 30), false, false, | 6523 gfx::PointF(), gfx::Size(30, 30), false, false, |
6520 false); | 6524 false); |
6521 SetLayerPropertiesForTesting(grand_child, identity_transform, gfx::Point3F(), | 6525 SetLayerPropertiesForTesting(grand_child, identity_transform, gfx::Point3F(), |
(...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
6565 EXPECT_TRUE(grand_child->should_check_backface_visibility()); | 6569 EXPECT_TRUE(grand_child->should_check_backface_visibility()); |
6566 // child uses its local transform for backface visibility as it is the root of | 6570 // child uses its local transform for backface visibility as it is the root of |
6567 // a 3d rendering context. grand_child is in a 3d rendering context and is not | 6571 // a 3d rendering context. grand_child is in a 3d rendering context and is not |
6568 // the root, but it derives its backface visibility from its parent which uses | 6572 // the root, but it derives its backface visibility from its parent which uses |
6569 // its local transform. | 6573 // its local transform. |
6570 EXPECT_TRUE(root->use_local_transform_for_backface_visibility()); | 6574 EXPECT_TRUE(root->use_local_transform_for_backface_visibility()); |
6571 EXPECT_TRUE(child->use_local_transform_for_backface_visibility()); | 6575 EXPECT_TRUE(child->use_local_transform_for_backface_visibility()); |
6572 EXPECT_TRUE(grand_child->use_local_transform_for_backface_visibility()); | 6576 EXPECT_TRUE(grand_child->use_local_transform_for_backface_visibility()); |
6573 | 6577 |
6574 grand_child->SetUseParentBackfaceVisibility(false); | 6578 grand_child->SetUseParentBackfaceVisibility(false); |
6575 grand_child->SetDoubleSided(false); | 6579 grand_child->test_properties()->double_sided = false; |
6576 grand_child->layer_tree_impl()->property_trees()->needs_rebuild = true; | 6580 grand_child->layer_tree_impl()->property_trees()->needs_rebuild = true; |
6577 | 6581 |
6578 ExecuteCalculateDrawProperties(root); | 6582 ExecuteCalculateDrawProperties(root); |
6579 EXPECT_EQ(1u, render_surface_layer_list_impl()->size()); | 6583 EXPECT_EQ(1u, render_surface_layer_list_impl()->size()); |
6580 EXPECT_EQ(0u, render_surface_layer_list_impl() | 6584 EXPECT_EQ(0u, render_surface_layer_list_impl() |
6581 ->at(0) | 6585 ->at(0) |
6582 ->render_surface() | 6586 ->render_surface() |
6583 ->layer_list() | 6587 ->layer_list() |
6584 .size()); | 6588 .size()); |
6585 | 6589 |
(...skipping 407 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
6993 LayerImpl* root = root_layer(); | 6997 LayerImpl* root = root_layer(); |
6994 LayerImpl* render_surface = AddChild<LayerImpl>(root); | 6998 LayerImpl* render_surface = AddChild<LayerImpl>(root); |
6995 LayerImpl* fixed = AddChild<LayerImpl>(render_surface); | 6999 LayerImpl* fixed = AddChild<LayerImpl>(render_surface); |
6996 LayerImpl* child = AddChild<LayerImpl>(fixed); | 7000 LayerImpl* child = AddChild<LayerImpl>(fixed); |
6997 | 7001 |
6998 render_surface->SetDrawsContent(true); | 7002 render_surface->SetDrawsContent(true); |
6999 fixed->SetDrawsContent(true); | 7003 fixed->SetDrawsContent(true); |
7000 child->SetDrawsContent(true); | 7004 child->SetDrawsContent(true); |
7001 | 7005 |
7002 root->SetIsContainerForFixedPositionLayers(true); | 7006 root->SetIsContainerForFixedPositionLayers(true); |
7003 render_surface->SetForceRenderSurface(true); | 7007 render_surface->test_properties()->force_render_surface = true; |
7004 | 7008 |
7005 LayerPositionConstraint constraint; | 7009 LayerPositionConstraint constraint; |
7006 constraint.set_is_fixed_position(true); | 7010 constraint.set_is_fixed_position(true); |
7007 fixed->SetPositionConstraint(constraint); | 7011 fixed->SetPositionConstraint(constraint); |
7008 | 7012 |
7009 SetLayerPropertiesForTesting(root, gfx::Transform(), gfx::Point3F(), | 7013 SetLayerPropertiesForTesting(root, gfx::Transform(), gfx::Point3F(), |
7010 gfx::PointF(), gfx::Size(50, 50), true, false); | 7014 gfx::PointF(), gfx::Size(50, 50), true, false); |
7011 SetLayerPropertiesForTesting(render_surface, gfx::Transform(), gfx::Point3F(), | 7015 SetLayerPropertiesForTesting(render_surface, gfx::Transform(), gfx::Point3F(), |
7012 gfx::PointF(7.f, 9.f), gfx::Size(50, 50), true, | 7016 gfx::PointF(7.f, 9.f), gfx::Size(50, 50), true, |
7013 false); | 7017 false); |
(...skipping 878 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
7892 LayerImpl* root_layer = root.get(); | 7896 LayerImpl* root_layer = root.get(); |
7893 std::unique_ptr<LayerImpl> child1 = | 7897 std::unique_ptr<LayerImpl> child1 = |
7894 LayerImpl::Create(host_impl.active_tree(), 2); | 7898 LayerImpl::Create(host_impl.active_tree(), 2); |
7895 LayerImpl* child1_layer = child1.get(); | 7899 LayerImpl* child1_layer = child1.get(); |
7896 std::unique_ptr<LayerImpl> child2 = | 7900 std::unique_ptr<LayerImpl> child2 = |
7897 LayerImpl::Create(host_impl.active_tree(), 3); | 7901 LayerImpl::Create(host_impl.active_tree(), 3); |
7898 LayerImpl* child2_layer = child2.get(); | 7902 LayerImpl* child2_layer = child2.get(); |
7899 | 7903 |
7900 root->AddChild(std::move(child1)); | 7904 root->AddChild(std::move(child1)); |
7901 root->AddChild(std::move(child2)); | 7905 root->AddChild(std::move(child2)); |
7902 root->SetForceRenderSurface(true); | 7906 root->test_properties()->force_render_surface = true; |
7903 root->SetDrawsContent(true); | 7907 root->SetDrawsContent(true); |
7904 host_impl.active_tree()->SetRootLayer(std::move(root)); | 7908 host_impl.active_tree()->SetRootLayer(std::move(root)); |
7905 | 7909 |
7906 gfx::Transform identity_matrix, scale_transform_child1, | 7910 gfx::Transform identity_matrix, scale_transform_child1, |
7907 scale_transform_child2; | 7911 scale_transform_child2; |
7908 scale_transform_child1.Scale(2, 3); | 7912 scale_transform_child1.Scale(2, 3); |
7909 scale_transform_child2.Scale(4, 5); | 7913 scale_transform_child2.Scale(4, 5); |
7910 | 7914 |
7911 SetLayerPropertiesForTesting(root_layer, identity_matrix, gfx::Point3F(), | 7915 SetLayerPropertiesForTesting(root_layer, identity_matrix, gfx::Point3F(), |
7912 gfx::PointF(), gfx::Size(1, 1), true, false, | 7916 gfx::PointF(), gfx::Size(1, 1), true, false, |
(...skipping 300 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
8213 root->AddChild(animated); | 8217 root->AddChild(animated); |
8214 | 8218 |
8215 host()->SetRootLayer(root); | 8219 host()->SetRootLayer(root); |
8216 | 8220 |
8217 SetLayerPropertiesForTesting(root.get(), identity_matrix, gfx::Point3F(), | 8221 SetLayerPropertiesForTesting(root.get(), identity_matrix, gfx::Point3F(), |
8218 gfx::PointF(), gfx::Size(100, 100), true, false); | 8222 gfx::PointF(), gfx::Size(100, 100), true, false); |
8219 SetLayerPropertiesForTesting(animated.get(), identity_matrix, gfx::Point3F(), | 8223 SetLayerPropertiesForTesting(animated.get(), identity_matrix, gfx::Point3F(), |
8220 gfx::PointF(), gfx::Size(20, 20), true, false); | 8224 gfx::PointF(), gfx::Size(20, 20), true, false); |
8221 | 8225 |
8222 root->SetMasksToBounds(true); | 8226 root->SetMasksToBounds(true); |
8223 root->SetForceRenderSurface(true); | 8227 root->SetForceRenderSurfaceForTesting(true); |
8224 animated->SetOpacity(0.f); | 8228 animated->SetOpacity(0.f); |
8225 | 8229 |
8226 AddOpacityTransitionToLayerWithPlayer(animated->id(), timeline(), 10.0, 0.f, | 8230 AddOpacityTransitionToLayerWithPlayer(animated->id(), timeline(), 10.0, 0.f, |
8227 1.f, false); | 8231 1.f, false); |
8228 ExecuteCalculateDrawPropertiesWithPropertyTrees(root.get()); | 8232 ExecuteCalculateDrawPropertiesWithPropertyTrees(root.get()); |
8229 | 8233 |
8230 EXPECT_FALSE(animated->visible_layer_rect_for_testing().IsEmpty()); | 8234 EXPECT_FALSE(animated->visible_layer_rect_for_testing().IsEmpty()); |
8231 } | 8235 } |
8232 | 8236 |
8233 TEST_F(LayerTreeHostCommonTest, | 8237 TEST_F(LayerTreeHostCommonTest, |
8234 VisibleContentRectForAnimatedLayerWithSingularTransform) { | 8238 VisibleContentRectForAnimatedLayerWithSingularTransform) { |
8235 const gfx::Transform identity_matrix; | 8239 const gfx::Transform identity_matrix; |
8236 scoped_refptr<Layer> root = Layer::Create(); | 8240 scoped_refptr<Layer> root = Layer::Create(); |
8237 scoped_refptr<Layer> clip = Layer::Create(); | 8241 scoped_refptr<Layer> clip = Layer::Create(); |
8238 scoped_refptr<LayerWithForcedDrawsContent> animated = | 8242 scoped_refptr<LayerWithForcedDrawsContent> animated = |
8239 make_scoped_refptr(new LayerWithForcedDrawsContent()); | 8243 make_scoped_refptr(new LayerWithForcedDrawsContent()); |
8240 scoped_refptr<LayerWithForcedDrawsContent> surface = | 8244 scoped_refptr<LayerWithForcedDrawsContent> surface = |
8241 make_scoped_refptr(new LayerWithForcedDrawsContent()); | 8245 make_scoped_refptr(new LayerWithForcedDrawsContent()); |
8242 scoped_refptr<LayerWithForcedDrawsContent> descendant_of_animation = | 8246 scoped_refptr<LayerWithForcedDrawsContent> descendant_of_animation = |
8243 make_scoped_refptr(new LayerWithForcedDrawsContent()); | 8247 make_scoped_refptr(new LayerWithForcedDrawsContent()); |
8244 | 8248 |
8245 root->AddChild(clip); | 8249 root->AddChild(clip); |
8246 clip->AddChild(animated); | 8250 clip->AddChild(animated); |
8247 animated->AddChild(surface); | 8251 animated->AddChild(surface); |
8248 surface->AddChild(descendant_of_animation); | 8252 surface->AddChild(descendant_of_animation); |
8249 | 8253 |
8250 clip->SetMasksToBounds(true); | 8254 clip->SetMasksToBounds(true); |
8251 surface->SetForceRenderSurface(true); | 8255 surface->SetForceRenderSurfaceForTesting(true); |
8252 | 8256 |
8253 host()->SetRootLayer(root); | 8257 host()->SetRootLayer(root); |
8254 | 8258 |
8255 gfx::Transform uninvertible_matrix; | 8259 gfx::Transform uninvertible_matrix; |
8256 uninvertible_matrix.Scale3d(6.f, 6.f, 0.f); | 8260 uninvertible_matrix.Scale3d(6.f, 6.f, 0.f); |
8257 | 8261 |
8258 SetLayerPropertiesForTesting(root.get(), identity_matrix, gfx::Point3F(), | 8262 SetLayerPropertiesForTesting(root.get(), identity_matrix, gfx::Point3F(), |
8259 gfx::PointF(), gfx::Size(100, 100), true, false); | 8263 gfx::PointF(), gfx::Size(100, 100), true, false); |
8260 SetLayerPropertiesForTesting(clip.get(), identity_matrix, gfx::Point3F(), | 8264 SetLayerPropertiesForTesting(clip.get(), identity_matrix, gfx::Point3F(), |
8261 gfx::PointF(), gfx::Size(10, 10), true, false); | 8265 gfx::PointF(), gfx::Size(10, 10), true, false); |
(...skipping 649 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
8911 root_ptr->layer_tree_impl()->property_trees()->needs_rebuild = true; | 8915 root_ptr->layer_tree_impl()->property_trees()->needs_rebuild = true; |
8912 ExecuteCalculateDrawPropertiesWithPropertyTrees(root_ptr); | 8916 ExecuteCalculateDrawPropertiesWithPropertyTrees(root_ptr); |
8913 EXPECT_EQ(gfx::Rect(10, 10), grandchild_ptr->visible_layer_rect()); | 8917 EXPECT_EQ(gfx::Rect(10, 10), grandchild_ptr->visible_layer_rect()); |
8914 requests.clear(); | 8918 requests.clear(); |
8915 grandchild_ptr->PassCopyRequests(&requests); | 8919 grandchild_ptr->PassCopyRequests(&requests); |
8916 child_ptr->SetOpacity(1.f); | 8920 child_ptr->SetOpacity(1.f); |
8917 | 8921 |
8918 // A double sided render surface with backface visible should not be skipped | 8922 // A double sided render surface with backface visible should not be skipped |
8919 grandchild_ptr->set_visible_layer_rect(gfx::Rect()); | 8923 grandchild_ptr->set_visible_layer_rect(gfx::Rect()); |
8920 child_ptr->SetHasRenderSurface(true); | 8924 child_ptr->SetHasRenderSurface(true); |
8921 child_ptr->SetDoubleSided(true); | 8925 child_ptr->test_properties()->double_sided = true; |
8922 child_ptr->SetTransform(rotate_back_and_translate); | 8926 child_ptr->SetTransform(rotate_back_and_translate); |
8923 root_ptr->layer_tree_impl()->property_trees()->needs_rebuild = true; | 8927 root_ptr->layer_tree_impl()->property_trees()->needs_rebuild = true; |
8924 ExecuteCalculateDrawPropertiesWithPropertyTrees(root_ptr); | 8928 ExecuteCalculateDrawPropertiesWithPropertyTrees(root_ptr); |
8925 EXPECT_EQ(gfx::Rect(10, 10), grandchild_ptr->visible_layer_rect()); | 8929 EXPECT_EQ(gfx::Rect(10, 10), grandchild_ptr->visible_layer_rect()); |
8926 child_ptr->SetTransform(identity); | 8930 child_ptr->SetTransform(identity); |
8927 | 8931 |
8928 std::unique_ptr<KeyframedTransformAnimationCurve> curve( | 8932 std::unique_ptr<KeyframedTransformAnimationCurve> curve( |
8929 KeyframedTransformAnimationCurve::Create()); | 8933 KeyframedTransformAnimationCurve::Create()); |
8930 TransformOperations start; | 8934 TransformOperations start; |
8931 start.AppendTranslate(1.f, 2.f, 3.f); | 8935 start.AppendTranslate(1.f, 2.f, 3.f); |
(...skipping 171 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
9103 EXPECT_EQ(gfx::Rect(0, 0), child->visible_layer_rect()); | 9107 EXPECT_EQ(gfx::Rect(0, 0), child->visible_layer_rect()); |
9104 child->SetHideLayerAndSubtree(false); | 9108 child->SetHideLayerAndSubtree(false); |
9105 | 9109 |
9106 child->SetBounds(gfx::Size()); | 9110 child->SetBounds(gfx::Size()); |
9107 root->layer_tree_impl()->property_trees()->needs_rebuild = true; | 9111 root->layer_tree_impl()->property_trees()->needs_rebuild = true; |
9108 ExecuteCalculateDrawProperties(root); | 9112 ExecuteCalculateDrawProperties(root); |
9109 EXPECT_EQ(gfx::Rect(0, 0), child->visible_layer_rect()); | 9113 EXPECT_EQ(gfx::Rect(0, 0), child->visible_layer_rect()); |
9110 child->SetBounds(gfx::Size(10, 10)); | 9114 child->SetBounds(gfx::Size(10, 10)); |
9111 | 9115 |
9112 gfx::Transform rotate; | 9116 gfx::Transform rotate; |
9113 child->SetDoubleSided(false); | 9117 child->test_properties()->double_sided = false; |
9114 rotate.RotateAboutXAxis(180.f); | 9118 rotate.RotateAboutXAxis(180.f); |
9115 child->SetTransform(rotate); | 9119 child->SetTransform(rotate); |
9116 root->layer_tree_impl()->property_trees()->needs_rebuild = true; | 9120 root->layer_tree_impl()->property_trees()->needs_rebuild = true; |
9117 ExecuteCalculateDrawProperties(root); | 9121 ExecuteCalculateDrawProperties(root); |
9118 EXPECT_EQ(gfx::Rect(0, 0), child->visible_layer_rect()); | 9122 EXPECT_EQ(gfx::Rect(0, 0), child->visible_layer_rect()); |
9119 child->SetDoubleSided(true); | 9123 child->test_properties()->double_sided = true; |
9120 child->SetTransform(identity); | 9124 child->SetTransform(identity); |
9121 | 9125 |
9122 child->SetOpacity(0.f); | 9126 child->SetOpacity(0.f); |
9123 root->layer_tree_impl()->property_trees()->needs_rebuild = true; | 9127 root->layer_tree_impl()->property_trees()->needs_rebuild = true; |
9124 ExecuteCalculateDrawProperties(root); | 9128 ExecuteCalculateDrawProperties(root); |
9125 EXPECT_EQ(gfx::Rect(0, 0), child->visible_layer_rect()); | 9129 EXPECT_EQ(gfx::Rect(0, 0), child->visible_layer_rect()); |
9126 } | 9130 } |
9127 | 9131 |
9128 TEST_F(LayerTreeHostCommonTest, LayerTreeRebuildTest) { | 9132 TEST_F(LayerTreeHostCommonTest, LayerTreeRebuildTest) { |
9129 // Ensure that the treewalk in LayerTreeHostCommom:: | 9133 // Ensure that the treewalk in LayerTreeHostCommom:: |
(...skipping 107 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
9237 gfx::Point3F(), gfx::PointF(), gfx::Size(30, 30), | 9241 gfx::Point3F(), gfx::PointF(), gfx::Size(30, 30), |
9238 true, false); | 9242 true, false); |
9239 SetLayerPropertiesForTesting(layer_clips_subtree, identity_matrix, | 9243 SetLayerPropertiesForTesting(layer_clips_subtree, identity_matrix, |
9240 gfx::Point3F(), gfx::PointF(), gfx::Size(30, 30), | 9244 gfx::Point3F(), gfx::PointF(), gfx::Size(30, 30), |
9241 true, false); | 9245 true, false); |
9242 SetLayerPropertiesForTesting(render_surface, transform2, gfx::Point3F(), | 9246 SetLayerPropertiesForTesting(render_surface, transform2, gfx::Point3F(), |
9243 gfx::PointF(), gfx::Size(30, 30), true, false); | 9247 gfx::PointF(), gfx::Size(30, 30), true, false); |
9244 SetLayerPropertiesForTesting(test_layer, identity_matrix, gfx::Point3F(), | 9248 SetLayerPropertiesForTesting(test_layer, identity_matrix, gfx::Point3F(), |
9245 gfx::PointF(), gfx::Size(30, 30), true, false); | 9249 gfx::PointF(), gfx::Size(30, 30), true, false); |
9246 | 9250 |
9247 root->SetForceRenderSurface(true); | 9251 root->test_properties()->force_render_surface = true; |
9248 significant_transform->SetForceRenderSurface(false); | 9252 significant_transform->test_properties()->force_render_surface = false; |
9249 layer_clips_subtree->SetForceRenderSurface(true); | 9253 layer_clips_subtree->test_properties()->force_render_surface = true; |
9250 render_surface->SetForceRenderSurface(true); | 9254 render_surface->test_properties()->force_render_surface = true; |
9251 test_layer->SetForceRenderSurface(false); | 9255 test_layer->test_properties()->force_render_surface = false; |
9252 ExecuteCalculateDrawProperties(root); | 9256 ExecuteCalculateDrawProperties(root); |
9253 | 9257 |
9254 TransformTree transform_tree = | 9258 TransformTree transform_tree = |
9255 root->layer_tree_impl()->property_trees()->transform_tree; | 9259 root->layer_tree_impl()->property_trees()->transform_tree; |
9256 TransformNode* transform_node = | 9260 TransformNode* transform_node = |
9257 transform_tree.Node(significant_transform->transform_tree_index()); | 9261 transform_tree.Node(significant_transform->transform_tree_index()); |
9258 EXPECT_EQ(transform_node->owner_id, significant_transform->id()); | 9262 EXPECT_EQ(transform_node->owner_id, significant_transform->id()); |
9259 | 9263 |
9260 EXPECT_TRUE(root->has_render_surface()); | 9264 EXPECT_TRUE(root->has_render_surface()); |
9261 EXPECT_FALSE(significant_transform->has_render_surface()); | 9265 EXPECT_FALSE(significant_transform->has_render_surface()); |
(...skipping 861 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
10123 EXPECT_EQ(scroll_child6.id, grand_child10->scroll_tree_index()); | 10127 EXPECT_EQ(scroll_child6.id, grand_child10->scroll_tree_index()); |
10124 EXPECT_EQ(scroll_root1.id, parent3->scroll_tree_index()); | 10128 EXPECT_EQ(scroll_root1.id, parent3->scroll_tree_index()); |
10125 EXPECT_EQ(scroll_child7.id, child8->scroll_tree_index()); | 10129 EXPECT_EQ(scroll_child7.id, child8->scroll_tree_index()); |
10126 EXPECT_EQ(scroll_root1.id, parent4->scroll_tree_index()); | 10130 EXPECT_EQ(scroll_root1.id, parent4->scroll_tree_index()); |
10127 EXPECT_EQ(scroll_root1.id, child9->scroll_tree_index()); | 10131 EXPECT_EQ(scroll_root1.id, child9->scroll_tree_index()); |
10128 EXPECT_EQ(scroll_root1.id, grand_child12->scroll_tree_index()); | 10132 EXPECT_EQ(scroll_root1.id, grand_child12->scroll_tree_index()); |
10129 } | 10133 } |
10130 | 10134 |
10131 } // namespace | 10135 } // namespace |
10132 } // namespace cc | 10136 } // namespace cc |
OLD | NEW |