| 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 329 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 340 LayerImpl::Create(host_impl.active_tree(), 3)); | 340 LayerImpl::Create(host_impl.active_tree(), 3)); |
| 341 SetLayerPropertiesForTesting(root.get(), identity_matrix, gfx::Point3F(), | 341 SetLayerPropertiesForTesting(root.get(), identity_matrix, gfx::Point3F(), |
| 342 gfx::PointF(), gfx::Size(3, 4), true, false, | 342 gfx::PointF(), gfx::Size(3, 4), true, false, |
| 343 false); | 343 false); |
| 344 root->AddChild(std::move(clip_layer_scoped_ptr)); | 344 root->AddChild(std::move(clip_layer_scoped_ptr)); |
| 345 root->SetHasRenderSurface(true); | 345 root->SetHasRenderSurface(true); |
| 346 LayerImpl* root_layer = root.get(); | 346 LayerImpl* root_layer = root.get(); |
| 347 host_impl.active_tree()->SetRootLayer(std::move(root)); | 347 host_impl.active_tree()->SetRootLayer(std::move(root)); |
| 348 | 348 |
| 349 ExecuteCalculateDrawProperties(root_layer, kDeviceScale, page_scale, | 349 ExecuteCalculateDrawProperties(root_layer, kDeviceScale, page_scale, |
| 350 scroll_layer->parent()); | 350 scroll_layer->test_properties()->parent); |
| 351 gfx::Transform expected_transform = identity_matrix; | 351 gfx::Transform expected_transform = identity_matrix; |
| 352 gfx::PointF sub_layer_screen_position = kScrollLayerPosition - kScrollDelta; | 352 gfx::PointF sub_layer_screen_position = kScrollLayerPosition - kScrollDelta; |
| 353 expected_transform.Translate(MathUtil::Round(sub_layer_screen_position.x() * | 353 expected_transform.Translate(MathUtil::Round(sub_layer_screen_position.x() * |
| 354 page_scale * kDeviceScale), | 354 page_scale * kDeviceScale), |
| 355 MathUtil::Round(sub_layer_screen_position.y() * | 355 MathUtil::Round(sub_layer_screen_position.y() * |
| 356 page_scale * kDeviceScale)); | 356 page_scale * kDeviceScale)); |
| 357 expected_transform.Scale(page_scale * kDeviceScale, | 357 expected_transform.Scale(page_scale * kDeviceScale, |
| 358 page_scale * kDeviceScale); | 358 page_scale * kDeviceScale); |
| 359 EXPECT_TRANSFORMATION_MATRIX_EQ(expected_transform, | 359 EXPECT_TRANSFORMATION_MATRIX_EQ(expected_transform, |
| 360 sublayer->DrawTransform()); | 360 sublayer->DrawTransform()); |
| 361 EXPECT_TRANSFORMATION_MATRIX_EQ(expected_transform, | 361 EXPECT_TRANSFORMATION_MATRIX_EQ(expected_transform, |
| 362 sublayer->ScreenSpaceTransform()); | 362 sublayer->ScreenSpaceTransform()); |
| 363 | 363 |
| 364 gfx::Transform arbitrary_translate; | 364 gfx::Transform arbitrary_translate; |
| 365 const float kTranslateX = 10.6f; | 365 const float kTranslateX = 10.6f; |
| 366 const float kTranslateY = 20.6f; | 366 const float kTranslateY = 20.6f; |
| 367 arbitrary_translate.Translate(kTranslateX, kTranslateY); | 367 arbitrary_translate.Translate(kTranslateX, kTranslateY); |
| 368 SetLayerPropertiesForTesting(scroll_layer, arbitrary_translate, | 368 SetLayerPropertiesForTesting(scroll_layer, arbitrary_translate, |
| 369 gfx::Point3F(), gfx::PointF(), gfx::Size(10, 20), | 369 gfx::Point3F(), gfx::PointF(), gfx::Size(10, 20), |
| 370 true, false, false); | 370 true, false, false); |
| 371 root_layer->layer_tree_impl()->property_trees()->needs_rebuild = true; | 371 root_layer->layer_tree_impl()->property_trees()->needs_rebuild = true; |
| 372 ExecuteCalculateDrawProperties(root_layer, kDeviceScale, page_scale, | 372 ExecuteCalculateDrawProperties(root_layer, kDeviceScale, page_scale, |
| 373 scroll_layer->parent()); | 373 scroll_layer->test_properties()->parent); |
| 374 expected_transform.MakeIdentity(); | 374 expected_transform.MakeIdentity(); |
| 375 expected_transform.Translate( | 375 expected_transform.Translate( |
| 376 MathUtil::Round(kTranslateX * page_scale * kDeviceScale + | 376 MathUtil::Round(kTranslateX * page_scale * kDeviceScale + |
| 377 sub_layer_screen_position.x() * page_scale * | 377 sub_layer_screen_position.x() * page_scale * |
| 378 kDeviceScale), | 378 kDeviceScale), |
| 379 MathUtil::Round(kTranslateY * page_scale * kDeviceScale + | 379 MathUtil::Round(kTranslateY * page_scale * kDeviceScale + |
| 380 sub_layer_screen_position.y() * page_scale * | 380 sub_layer_screen_position.y() * page_scale * |
| 381 kDeviceScale)); | 381 kDeviceScale)); |
| 382 expected_transform.Scale(page_scale * kDeviceScale, | 382 expected_transform.Scale(page_scale * kDeviceScale, |
| 383 page_scale * kDeviceScale); | 383 page_scale * kDeviceScale); |
| 384 EXPECT_TRANSFORMATION_MATRIX_EQ(expected_transform, | 384 EXPECT_TRANSFORMATION_MATRIX_EQ(expected_transform, |
| 385 sublayer->DrawTransform()); | 385 sublayer->DrawTransform()); |
| 386 | 386 |
| 387 // Test that page scale is updated even when we don't rebuild property trees. | 387 // Test that page scale is updated even when we don't rebuild property trees. |
| 388 page_scale = 1.888f; | 388 page_scale = 1.888f; |
| 389 root_layer->layer_tree_impl()->SetViewportLayersFromIds( | 389 root_layer->layer_tree_impl()->SetViewportLayersFromIds( |
| 390 Layer::INVALID_ID, scroll_layer->parent()->id(), Layer::INVALID_ID, | 390 Layer::INVALID_ID, scroll_layer->test_properties()->parent->id(), |
| 391 Layer::INVALID_ID); | 391 Layer::INVALID_ID, Layer::INVALID_ID); |
| 392 root_layer->layer_tree_impl()->SetPageScaleOnActiveTree(page_scale); | 392 root_layer->layer_tree_impl()->SetPageScaleOnActiveTree(page_scale); |
| 393 EXPECT_FALSE(root_layer->layer_tree_impl()->property_trees()->needs_rebuild); | 393 EXPECT_FALSE(root_layer->layer_tree_impl()->property_trees()->needs_rebuild); |
| 394 ExecuteCalculateDrawProperties(root_layer, kDeviceScale, page_scale, | 394 ExecuteCalculateDrawProperties(root_layer, kDeviceScale, page_scale, |
| 395 scroll_layer->parent()); | 395 scroll_layer->test_properties()->parent); |
| 396 | 396 |
| 397 expected_transform.MakeIdentity(); | 397 expected_transform.MakeIdentity(); |
| 398 expected_transform.Translate( | 398 expected_transform.Translate( |
| 399 MathUtil::Round(kTranslateX * page_scale * kDeviceScale + | 399 MathUtil::Round(kTranslateX * page_scale * kDeviceScale + |
| 400 sub_layer_screen_position.x() * page_scale * | 400 sub_layer_screen_position.x() * page_scale * |
| 401 kDeviceScale), | 401 kDeviceScale), |
| 402 MathUtil::Round(kTranslateY * page_scale * kDeviceScale + | 402 MathUtil::Round(kTranslateY * page_scale * kDeviceScale + |
| 403 sub_layer_screen_position.y() * page_scale * | 403 sub_layer_screen_position.y() * page_scale * |
| 404 kDeviceScale)); | 404 kDeviceScale)); |
| 405 expected_transform.Scale(page_scale * kDeviceScale, | 405 expected_transform.Scale(page_scale * kDeviceScale, |
| (...skipping 400 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 806 gfx::Point3F(2.5f, 0.f, 0.f), gfx::PointF(), | 806 gfx::Point3F(2.5f, 0.f, 0.f), gfx::PointF(), |
| 807 gfx::Size(10, 10), true, false, false); | 807 gfx::Size(10, 10), true, false, false); |
| 808 SetLayerPropertiesForTesting(replica_of_rs1.get(), replica_layer_transform, | 808 SetLayerPropertiesForTesting(replica_of_rs1.get(), replica_layer_transform, |
| 809 gfx::Point3F(2.5f, 0.f, 0.f), gfx::PointF(), | 809 gfx::Point3F(2.5f, 0.f, 0.f), gfx::PointF(), |
| 810 gfx::Size(), true, false, false); | 810 gfx::Size(), true, false, false); |
| 811 SetLayerPropertiesForTesting(replica_of_rs2.get(), replica_layer_transform, | 811 SetLayerPropertiesForTesting(replica_of_rs2.get(), replica_layer_transform, |
| 812 gfx::Point3F(2.5f, 0.f, 0.f), gfx::PointF(), | 812 gfx::Point3F(2.5f, 0.f, 0.f), gfx::PointF(), |
| 813 gfx::Size(), true, false, false); | 813 gfx::Size(), true, false, false); |
| 814 | 814 |
| 815 // We need to set parent on replica layers for property tree building. | 815 // We need to set parent on replica layers for property tree building. |
| 816 replica_of_rs1->SetParent(render_surface1); | 816 replica_of_rs1->test_properties()->parent = render_surface1; |
| 817 replica_of_rs2->SetParent(render_surface2); | 817 replica_of_rs2->test_properties()->parent = render_surface2; |
| 818 render_surface1->SetReplicaLayer(std::move(replica_of_rs1)); | 818 render_surface1->SetReplicaLayer(std::move(replica_of_rs1)); |
| 819 render_surface2->SetReplicaLayer(std::move(replica_of_rs2)); | 819 render_surface2->SetReplicaLayer(std::move(replica_of_rs2)); |
| 820 ExecuteCalculateDrawProperties(root); | 820 ExecuteCalculateDrawProperties(root); |
| 821 | 821 |
| 822 // Only layers that are associated with render surfaces should have an actual | 822 // Only layers that are associated with render surfaces should have an actual |
| 823 // RenderSurface() value. | 823 // RenderSurface() value. |
| 824 ASSERT_TRUE(root->render_surface()); | 824 ASSERT_TRUE(root->render_surface()); |
| 825 ASSERT_FALSE(child_of_root->render_surface()); | 825 ASSERT_FALSE(child_of_root->render_surface()); |
| 826 ASSERT_FALSE(grand_child_of_root->render_surface()); | 826 ASSERT_FALSE(grand_child_of_root->render_surface()); |
| 827 | 827 |
| (...skipping 4095 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 4923 | 4923 |
| 4924 gfx::Transform replica_transform; | 4924 gfx::Transform replica_transform; |
| 4925 replica_transform.Scale(1.0, -1.0); | 4925 replica_transform.Scale(1.0, -1.0); |
| 4926 | 4926 |
| 4927 std::unique_ptr<LayerImpl> replica = | 4927 std::unique_ptr<LayerImpl> replica = |
| 4928 LayerImpl::Create(host_impl()->active_tree(), 7); | 4928 LayerImpl::Create(host_impl()->active_tree(), 7); |
| 4929 SetLayerPropertiesForTesting(replica.get(), replica_transform, gfx::Point3F(), | 4929 SetLayerPropertiesForTesting(replica.get(), replica_transform, gfx::Point3F(), |
| 4930 gfx::PointF(2.f, 2.f), gfx::Size(10, 10), false, | 4930 gfx::PointF(2.f, 2.f), gfx::Size(10, 10), false, |
| 4931 true, false); | 4931 true, false); |
| 4932 // We need to set parent on replica layer for property tree building. | 4932 // We need to set parent on replica layer for property tree building. |
| 4933 replica->SetParent(child); | 4933 replica->test_properties()->parent = child; |
| 4934 child->SetReplicaLayer(std::move(replica)); | 4934 child->SetReplicaLayer(std::move(replica)); |
| 4935 | 4935 |
| 4936 // This layer should end up in the same surface as child, with the same draw | 4936 // This layer should end up in the same surface as child, with the same draw |
| 4937 // and screen space transforms. | 4937 // and screen space transforms. |
| 4938 LayerImpl* duplicate_child_non_owner = AddChild<LayerImpl>(child); | 4938 LayerImpl* duplicate_child_non_owner = AddChild<LayerImpl>(child); |
| 4939 duplicate_child_non_owner->SetDrawsContent(true); | 4939 duplicate_child_non_owner->SetDrawsContent(true); |
| 4940 SetLayerPropertiesForTesting(duplicate_child_non_owner, identity_matrix, | 4940 SetLayerPropertiesForTesting(duplicate_child_non_owner, identity_matrix, |
| 4941 gfx::Point3F(), gfx::PointF(), gfx::Size(10, 10), | 4941 gfx::Point3F(), gfx::PointF(), gfx::Size(10, 10), |
| 4942 false, true, false); | 4942 false, true, false); |
| 4943 | 4943 |
| (...skipping 4788 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 9732 EXPECT_TRANSFORMATION_MATRIX_EQ(transform, | 9732 EXPECT_TRANSFORMATION_MATRIX_EQ(transform, |
| 9733 child->mask_layer()->ScreenSpaceTransform()); | 9733 child->mask_layer()->ScreenSpaceTransform()); |
| 9734 EXPECT_EQ(gfx::Rect(20, 20), child->mask_layer()->visible_layer_rect()); | 9734 EXPECT_EQ(gfx::Rect(20, 20), child->mask_layer()->visible_layer_rect()); |
| 9735 } | 9735 } |
| 9736 | 9736 |
| 9737 TEST_F(LayerTreeHostCommonTest, ReplicaMaskLayerDrawProperties) { | 9737 TEST_F(LayerTreeHostCommonTest, ReplicaMaskLayerDrawProperties) { |
| 9738 // Tests that a replica mask layer's draw properties are computed correctly. | 9738 // Tests that a replica mask layer's draw properties are computed correctly. |
| 9739 LayerImpl* root = root_layer(); | 9739 LayerImpl* root = root_layer(); |
| 9740 LayerImpl* child = AddChild<LayerImpl>(root); | 9740 LayerImpl* child = AddChild<LayerImpl>(root); |
| 9741 child->SetReplicaLayer(LayerImpl::Create(root->layer_tree_impl(), 100)); | 9741 child->SetReplicaLayer(LayerImpl::Create(root->layer_tree_impl(), 100)); |
| 9742 child->replica_layer()->SetParent(child); | 9742 child->replica_layer()->test_properties()->parent = child; |
| 9743 child->replica_layer()->SetMaskLayer( | 9743 child->replica_layer()->SetMaskLayer( |
| 9744 LayerImpl::Create(root->layer_tree_impl(), 200)); | 9744 LayerImpl::Create(root->layer_tree_impl(), 200)); |
| 9745 | 9745 |
| 9746 const gfx::Transform identity_matrix; | 9746 const gfx::Transform identity_matrix; |
| 9747 gfx::Transform transform; | 9747 gfx::Transform transform; |
| 9748 transform.Translate(10, 10); | 9748 transform.Translate(10, 10); |
| 9749 | 9749 |
| 9750 gfx::PointF replica_position(3.f, 3.f); | 9750 gfx::PointF replica_position(3.f, 3.f); |
| 9751 | 9751 |
| 9752 SetLayerPropertiesForTesting(root, identity_matrix, gfx::Point3F(), | 9752 SetLayerPropertiesForTesting(root, identity_matrix, gfx::Point3F(), |
| (...skipping 527 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 10280 EXPECT_EQ(scroll_child6.id, grand_child10->scroll_tree_index()); | 10280 EXPECT_EQ(scroll_child6.id, grand_child10->scroll_tree_index()); |
| 10281 EXPECT_EQ(scroll_root1.id, parent3->scroll_tree_index()); | 10281 EXPECT_EQ(scroll_root1.id, parent3->scroll_tree_index()); |
| 10282 EXPECT_EQ(scroll_child7.id, child8->scroll_tree_index()); | 10282 EXPECT_EQ(scroll_child7.id, child8->scroll_tree_index()); |
| 10283 EXPECT_EQ(scroll_root1.id, parent4->scroll_tree_index()); | 10283 EXPECT_EQ(scroll_root1.id, parent4->scroll_tree_index()); |
| 10284 EXPECT_EQ(scroll_root1.id, child9->scroll_tree_index()); | 10284 EXPECT_EQ(scroll_root1.id, child9->scroll_tree_index()); |
| 10285 EXPECT_EQ(scroll_root1.id, grand_child12->scroll_tree_index()); | 10285 EXPECT_EQ(scroll_root1.id, grand_child12->scroll_tree_index()); |
| 10286 } | 10286 } |
| 10287 | 10287 |
| 10288 } // namespace | 10288 } // namespace |
| 10289 } // namespace cc | 10289 } // namespace cc |
| OLD | NEW |