| OLD | NEW |
| 1 // Copyright 2014 The Chromium Authors. All rights reserved. | 1 // Copyright 2014 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/property_tree.h" | 5 #include "cc/trees/property_tree.h" |
| 6 | 6 |
| 7 #include "cc/input/main_thread_scrolling_reason.h" | 7 #include "cc/input/main_thread_scrolling_reason.h" |
| 8 #include "cc/proto/property_tree.pb.h" | 8 #include "cc/proto/property_tree.pb.h" |
| 9 #include "cc/test/geometry_test_utils.h" | 9 #include "cc/test/geometry_test_utils.h" |
| 10 #include "cc/trees/draw_property_utils.h" | 10 #include "cc/trees/draw_property_utils.h" |
| 11 #include "testing/gtest/include/gtest/gtest.h" | 11 #include "testing/gtest/include/gtest/gtest.h" |
| 12 | 12 |
| 13 namespace cc { | 13 namespace cc { |
| 14 namespace { | 14 namespace { |
| 15 | 15 |
| 16 TEST(PropertyTreeSerializationTest, TransformNodeDataSerialization) { | 16 TEST(PropertyTreeSerializationTest, TransformNodeDataSerialization) { |
| 17 TransformNodeData original; | 17 TransformNodeData original; |
| 18 original.pre_local.Translate3d(1.f, 2.f, 3.f); | 18 original.pre_local.Translate3d(1.f, 2.f, 3.f); |
| 19 original.local.Translate3d(3.f, 1.f, 5.f); | 19 original.local.Translate3d(3.f, 1.f, 5.f); |
| 20 original.post_local.Translate3d(1.f, 8.f, 3.f); | 20 original.post_local.Translate3d(1.f, 8.f, 3.f); |
| 21 original.to_parent.Translate3d(3.2f, 2.f, 3.f); | 21 original.to_parent.Translate3d(3.2f, 2.f, 3.f); |
| 22 original.to_target.Translate3d(2.6f, 2.f, 3.f); | |
| 23 original.from_target.Translate3d(4.3f, 2.f, 3.f); | |
| 24 original.to_screen.Translate3d(7.2f, 2.f, 4.5f); | |
| 25 original.from_screen.Translate3d(2.f, 2.f, 7.f); | |
| 26 original.target_id = 3; | |
| 27 original.content_target_id = 4; | |
| 28 original.source_node_id = 5; | 22 original.source_node_id = 5; |
| 29 original.needs_local_transform_update = false; | 23 original.needs_local_transform_update = false; |
| 30 original.is_invertible = false; | 24 original.is_invertible = false; |
| 31 original.ancestors_are_invertible = false; | 25 original.ancestors_are_invertible = false; |
| 32 original.has_potential_animation = false; | 26 original.has_potential_animation = false; |
| 33 original.to_screen_is_potentially_animated = false; | 27 original.to_screen_is_potentially_animated = false; |
| 34 original.has_only_translation_animations = false; | 28 original.has_only_translation_animations = false; |
| 35 original.to_screen_has_scale_animation = false; | 29 original.to_screen_has_scale_animation = false; |
| 36 original.flattens_inherited_transform = false; | 30 original.flattens_inherited_transform = false; |
| 37 original.node_and_ancestors_are_flat = false; | 31 original.node_and_ancestors_are_flat = false; |
| (...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 72 original.ToProtobuf(&proto); | 66 original.ToProtobuf(&proto); |
| 73 TransformNode result; | 67 TransformNode result; |
| 74 result.FromProtobuf(proto); | 68 result.FromProtobuf(proto); |
| 75 | 69 |
| 76 EXPECT_EQ(original, result); | 70 EXPECT_EQ(original, result); |
| 77 } | 71 } |
| 78 | 72 |
| 79 TEST(PropertyTreeSerializationTest, TransformTreeSerialization) { | 73 TEST(PropertyTreeSerializationTest, TransformTreeSerialization) { |
| 80 TransformTree original; | 74 TransformTree original; |
| 81 TransformNode& root = *original.Node(0); | 75 TransformNode& root = *original.Node(0); |
| 76 root.id = 0; |
| 82 root.owner_id = 1; | 77 root.owner_id = 1; |
| 83 root.data.target_id = 3; | 78 original.SetTargetId(root.id, 3); |
| 84 root.data.content_target_id = 4; | 79 original.SetContentTargetId(root.id, 4); |
| 85 TransformNode second; | 80 TransformNode second; |
| 86 second.owner_id = 2; | 81 second.owner_id = 2; |
| 87 second.data.local.Translate3d(2.f, 2.f, 0.f); | 82 second.data.local.Translate3d(2.f, 2.f, 0.f); |
| 88 second.data.source_node_id = 0; | 83 second.data.source_node_id = 0; |
| 89 second.data.target_id = 0; | 84 second.id = original.Insert(second, 0); |
| 85 original.SetTargetId(second.id, 0); |
| 90 TransformNode third; | 86 TransformNode third; |
| 91 third.owner_id = 3; | 87 third.owner_id = 3; |
| 92 third.data.scrolls = true; | 88 third.data.scrolls = true; |
| 93 third.data.source_node_id = 1; | 89 third.data.source_node_id = 1; |
| 94 third.data.target_id = 0; | 90 third.id = original.Insert(third, 1); |
| 91 original.SetTargetId(third.id, 0); |
| 95 | 92 |
| 96 original.Insert(second, 0); | |
| 97 original.Insert(third, 1); | |
| 98 original.set_needs_update(true); | 93 original.set_needs_update(true); |
| 99 | 94 |
| 100 original.set_page_scale_factor(0.5f); | 95 original.set_page_scale_factor(0.5f); |
| 101 original.set_device_scale_factor(0.6f); | 96 original.set_device_scale_factor(0.6f); |
| 102 gfx::Transform transform = | 97 gfx::Transform transform = |
| 103 gfx::Transform(1.05f, 2.15f, 3.14f, 4.13f, 5.12f, 6.11f, 7.1f, 8.9f, 9.8f, | 98 gfx::Transform(1.05f, 2.15f, 3.14f, 4.13f, 5.12f, 6.11f, 7.1f, 8.9f, 9.8f, |
| 104 10.7f, 11.6f, 12.5f, 13.4f, 14.3f, 15.2f, 16.1f); | 99 10.7f, 11.6f, 12.5f, 13.4f, 14.3f, 15.2f, 16.1f); |
| 105 original.SetDeviceTransformScaleFactor(transform); | 100 original.SetDeviceTransformScaleFactor(transform); |
| 106 original.AddNodeAffectedByInnerViewportBoundsDelta(0); | 101 original.AddNodeAffectedByInnerViewportBoundsDelta(0); |
| 107 original.AddNodeAffectedByOuterViewportBoundsDelta(1); | 102 original.AddNodeAffectedByOuterViewportBoundsDelta(1); |
| (...skipping 210 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 318 scroll_id_to_index_map.clear(); | 313 scroll_id_to_index_map.clear(); |
| 319 result.FromProtobuf(proto2, &scroll_id_to_index_map); | 314 result.FromProtobuf(proto2, &scroll_id_to_index_map); |
| 320 | 315 |
| 321 EXPECT_EQ(original, result); | 316 EXPECT_EQ(original, result); |
| 322 } | 317 } |
| 323 | 318 |
| 324 TEST(PropertyTreeSerializationTest, PropertyTrees) { | 319 TEST(PropertyTreeSerializationTest, PropertyTrees) { |
| 325 PropertyTrees original; | 320 PropertyTrees original; |
| 326 TransformNode transform_node1 = TransformNode(); | 321 TransformNode transform_node1 = TransformNode(); |
| 327 transform_node1.owner_id = 10; | 322 transform_node1.owner_id = 10; |
| 328 original.transform_tree.Insert(transform_node1, 0); | 323 transform_node1.id = original.transform_tree.Insert(transform_node1, 0); |
| 329 TransformNode transform_node2 = TransformNode(); | 324 TransformNode transform_node2 = TransformNode(); |
| 330 transform_node2.owner_id = 20; | 325 transform_node2.owner_id = 20; |
| 331 original.transform_tree.Insert(transform_node2, 1); | 326 transform_node2.id = original.transform_tree.Insert(transform_node2, 1); |
| 332 original.transform_id_to_index_map[10] = 1; | 327 original.transform_id_to_index_map[10] = 1; |
| 333 original.transform_id_to_index_map[20] = 2; | 328 original.transform_id_to_index_map[20] = 2; |
| 334 | 329 |
| 335 ClipNode clip_node1 = ClipNode(); | 330 ClipNode clip_node1 = ClipNode(); |
| 336 clip_node1.owner_id = 10; | 331 clip_node1.owner_id = 10; |
| 337 original.clip_tree.Insert(clip_node1, 0); | 332 clip_node1.id = original.clip_tree.Insert(clip_node1, 0); |
| 338 ClipNode clip_node2 = ClipNode(); | 333 ClipNode clip_node2 = ClipNode(); |
| 339 clip_node2.owner_id = 22; | 334 clip_node2.owner_id = 22; |
| 340 original.clip_tree.Insert(clip_node2, 1); | 335 clip_node2.id = original.clip_tree.Insert(clip_node2, 1); |
| 341 original.clip_id_to_index_map[10] = 1; | 336 original.clip_id_to_index_map[10] = 1; |
| 342 original.clip_id_to_index_map[22] = 2; | 337 original.clip_id_to_index_map[22] = 2; |
| 343 | 338 |
| 344 EffectNode effect_node1 = EffectNode(); | 339 EffectNode effect_node1 = EffectNode(); |
| 345 effect_node1.owner_id = 11; | 340 effect_node1.owner_id = 11; |
| 346 original.effect_tree.Insert(effect_node1, 0); | 341 effect_node1.id = original.effect_tree.Insert(effect_node1, 0); |
| 347 EffectNode effect_node2 = EffectNode(); | 342 EffectNode effect_node2 = EffectNode(); |
| 348 effect_node2.owner_id = 23; | 343 effect_node2.owner_id = 23; |
| 349 original.effect_tree.Insert(effect_node2, 1); | 344 effect_node2.id = original.effect_tree.Insert(effect_node2, 1); |
| 350 original.effect_id_to_index_map[11] = 1; | 345 original.effect_id_to_index_map[11] = 1; |
| 351 original.effect_id_to_index_map[23] = 2; | 346 original.effect_id_to_index_map[23] = 2; |
| 352 | 347 |
| 353 ScrollNode scroll_node1 = ScrollNode(); | 348 ScrollNode scroll_node1 = ScrollNode(); |
| 354 scroll_node1.owner_id = 10; | 349 scroll_node1.owner_id = 10; |
| 355 original.scroll_tree.Insert(scroll_node1, 0); | 350 scroll_node1.id = original.scroll_tree.Insert(scroll_node1, 0); |
| 356 ScrollNode scroll_node2 = ScrollNode(); | 351 ScrollNode scroll_node2 = ScrollNode(); |
| 357 scroll_node2.owner_id = 20; | 352 scroll_node2.owner_id = 20; |
| 358 original.scroll_tree.Insert(scroll_node2, 1); | 353 scroll_node2.id = original.scroll_tree.Insert(scroll_node2, 1); |
| 359 original.scroll_id_to_index_map[10] = 1; | 354 original.scroll_id_to_index_map[10] = 1; |
| 360 original.scroll_id_to_index_map[20] = 2; | 355 original.scroll_id_to_index_map[20] = 2; |
| 361 | 356 |
| 362 original.needs_rebuild = false; | 357 original.needs_rebuild = false; |
| 363 original.non_root_surfaces_enabled = false; | 358 original.non_root_surfaces_enabled = false; |
| 364 original.sequence_number = 3; | 359 original.sequence_number = 3; |
| 365 | 360 |
| 366 proto::PropertyTrees proto; | 361 proto::PropertyTrees proto; |
| 367 original.ToProtobuf(&proto); | 362 original.ToProtobuf(&proto); |
| 368 PropertyTrees result; | 363 PropertyTrees result; |
| (...skipping 57 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 426 #define DIRECT_AND_SERIALIZED_PROPERTY_TREE_TEST_F(TEST_FIXTURE_NAME) \ | 421 #define DIRECT_AND_SERIALIZED_PROPERTY_TREE_TEST_F(TEST_FIXTURE_NAME) \ |
| 427 DIRECT_PROPERTY_TREE_TEST_F(TEST_FIXTURE_NAME); \ | 422 DIRECT_PROPERTY_TREE_TEST_F(TEST_FIXTURE_NAME); \ |
| 428 SERIALIZED_PROPERTY_TREE_TEST_F(TEST_FIXTURE_NAME) | 423 SERIALIZED_PROPERTY_TREE_TEST_F(TEST_FIXTURE_NAME) |
| 429 | 424 |
| 430 class PropertyTreeTestComputeTransformRoot : public PropertyTreeTest { | 425 class PropertyTreeTestComputeTransformRoot : public PropertyTreeTest { |
| 431 protected: | 426 protected: |
| 432 void StartTest() override { | 427 void StartTest() override { |
| 433 PropertyTrees property_trees; | 428 PropertyTrees property_trees; |
| 434 TransformTree& tree = property_trees.transform_tree; | 429 TransformTree& tree = property_trees.transform_tree; |
| 435 TransformNode& root = *tree.Node(0); | 430 TransformNode& root = *tree.Node(0); |
| 431 root.id = 0; |
| 436 root.data.local.Translate(2, 2); | 432 root.data.local.Translate(2, 2); |
| 437 root.data.target_id = 0; | 433 tree.SetTargetId(root.id, 0); |
| 438 SetupTransformTreeForTest(&tree); | 434 SetupTransformTreeForTest(&tree); |
| 439 tree.UpdateTransforms(0); | 435 tree.UpdateTransforms(0); |
| 440 | 436 |
| 441 gfx::Transform expected; | 437 gfx::Transform expected; |
| 442 gfx::Transform transform; | 438 gfx::Transform transform; |
| 443 bool success = tree.ComputeTransform(0, 0, &transform); | 439 bool success = tree.ComputeTransform(0, 0, &transform); |
| 444 EXPECT_TRUE(success); | 440 EXPECT_TRUE(success); |
| 445 EXPECT_TRANSFORMATION_MATRIX_EQ(expected, transform); | 441 EXPECT_TRANSFORMATION_MATRIX_EQ(expected, transform); |
| 446 | 442 |
| 447 transform.MakeIdentity(); | 443 transform.MakeIdentity(); |
| (...skipping 14 matching lines...) Expand all Loading... |
| 462 DIRECT_AND_SERIALIZED_PROPERTY_TREE_TEST_F( | 458 DIRECT_AND_SERIALIZED_PROPERTY_TREE_TEST_F( |
| 463 PropertyTreeTestComputeTransformRoot); | 459 PropertyTreeTestComputeTransformRoot); |
| 464 | 460 |
| 465 class PropertyTreeTestComputeTransformChild : public PropertyTreeTest { | 461 class PropertyTreeTestComputeTransformChild : public PropertyTreeTest { |
| 466 protected: | 462 protected: |
| 467 void StartTest() override { | 463 void StartTest() override { |
| 468 PropertyTrees property_trees; | 464 PropertyTrees property_trees; |
| 469 TransformTree& tree = property_trees.transform_tree; | 465 TransformTree& tree = property_trees.transform_tree; |
| 470 TransformNode& root = *tree.Node(0); | 466 TransformNode& root = *tree.Node(0); |
| 471 root.data.local.Translate(2, 2); | 467 root.data.local.Translate(2, 2); |
| 472 root.data.target_id = 0; | 468 tree.SetTargetId(root.id, 0); |
| 473 tree.UpdateTransforms(0); | 469 tree.UpdateTransforms(0); |
| 474 | 470 |
| 475 TransformNode child; | 471 TransformNode child; |
| 476 child.data.local.Translate(3, 3); | 472 child.data.local.Translate(3, 3); |
| 477 child.data.target_id = 0; | |
| 478 child.data.source_node_id = 0; | 473 child.data.source_node_id = 0; |
| 474 child.id = tree.Insert(child, 0); |
| 475 tree.SetTargetId(child.id, 0); |
| 479 | 476 |
| 480 tree.Insert(child, 0); | |
| 481 SetupTransformTreeForTest(&tree); | 477 SetupTransformTreeForTest(&tree); |
| 482 tree.UpdateTransforms(1); | 478 tree.UpdateTransforms(1); |
| 483 | 479 |
| 484 gfx::Transform expected; | 480 gfx::Transform expected; |
| 485 gfx::Transform transform; | 481 gfx::Transform transform; |
| 486 | 482 |
| 487 expected.Translate(3, 3); | 483 expected.Translate(3, 3); |
| 488 bool success = tree.ComputeTransform(1, 0, &transform); | 484 bool success = tree.ComputeTransform(1, 0, &transform); |
| 489 EXPECT_TRUE(success); | 485 EXPECT_TRUE(success); |
| 490 EXPECT_TRANSFORMATION_MATRIX_EQ(expected, transform); | 486 EXPECT_TRANSFORMATION_MATRIX_EQ(expected, transform); |
| (...skipping 24 matching lines...) Expand all Loading... |
| 515 DIRECT_AND_SERIALIZED_PROPERTY_TREE_TEST_F( | 511 DIRECT_AND_SERIALIZED_PROPERTY_TREE_TEST_F( |
| 516 PropertyTreeTestComputeTransformChild); | 512 PropertyTreeTestComputeTransformChild); |
| 517 | 513 |
| 518 class PropertyTreeTestComputeTransformSibling : public PropertyTreeTest { | 514 class PropertyTreeTestComputeTransformSibling : public PropertyTreeTest { |
| 519 protected: | 515 protected: |
| 520 void StartTest() override { | 516 void StartTest() override { |
| 521 PropertyTrees property_trees; | 517 PropertyTrees property_trees; |
| 522 TransformTree& tree = property_trees.transform_tree; | 518 TransformTree& tree = property_trees.transform_tree; |
| 523 TransformNode& root = *tree.Node(0); | 519 TransformNode& root = *tree.Node(0); |
| 524 root.data.local.Translate(2, 2); | 520 root.data.local.Translate(2, 2); |
| 525 root.data.target_id = 0; | 521 tree.SetTargetId(root.id, 0); |
| 526 tree.UpdateTransforms(0); | 522 tree.UpdateTransforms(0); |
| 527 | 523 |
| 528 TransformNode child; | 524 TransformNode child; |
| 529 child.data.local.Translate(3, 3); | 525 child.data.local.Translate(3, 3); |
| 530 child.data.source_node_id = 0; | 526 child.data.source_node_id = 0; |
| 531 child.data.target_id = 0; | 527 child.id = tree.Insert(child, 0); |
| 528 tree.SetTargetId(child.id, 0); |
| 532 | 529 |
| 533 TransformNode sibling; | 530 TransformNode sibling; |
| 534 sibling.data.local.Translate(7, 7); | 531 sibling.data.local.Translate(7, 7); |
| 535 sibling.data.source_node_id = 0; | 532 sibling.data.source_node_id = 0; |
| 536 sibling.data.target_id = 0; | 533 sibling.id = tree.Insert(sibling, 0); |
| 537 | 534 tree.SetTargetId(sibling.id, 0); |
| 538 tree.Insert(child, 0); | |
| 539 tree.Insert(sibling, 0); | |
| 540 | 535 |
| 541 SetupTransformTreeForTest(&tree); | 536 SetupTransformTreeForTest(&tree); |
| 542 | 537 |
| 543 tree.UpdateTransforms(1); | 538 tree.UpdateTransforms(1); |
| 544 tree.UpdateTransforms(2); | 539 tree.UpdateTransforms(2); |
| 545 | 540 |
| 546 gfx::Transform expected; | 541 gfx::Transform expected; |
| 547 gfx::Transform transform; | 542 gfx::Transform transform; |
| 548 | 543 |
| 549 expected.Translate(4, 4); | 544 expected.Translate(4, 4); |
| (...skipping 23 matching lines...) Expand all Loading... |
| 573 // + child | 568 // + child |
| 574 // + sibling | 569 // + sibling |
| 575 // Since the lowest common ancestor of |child| and |sibling| has a singular | 570 // Since the lowest common ancestor of |child| and |sibling| has a singular |
| 576 // transform, we cannot use screen space transforms to compute change of | 571 // transform, we cannot use screen space transforms to compute change of |
| 577 // basis | 572 // basis |
| 578 // transforms between these nodes. | 573 // transforms between these nodes. |
| 579 PropertyTrees property_trees; | 574 PropertyTrees property_trees; |
| 580 TransformTree& tree = property_trees.transform_tree; | 575 TransformTree& tree = property_trees.transform_tree; |
| 581 TransformNode& root = *tree.Node(0); | 576 TransformNode& root = *tree.Node(0); |
| 582 root.data.local.Translate(2, 2); | 577 root.data.local.Translate(2, 2); |
| 583 root.data.target_id = 0; | 578 tree.SetTargetId(root.id, 0); |
| 584 tree.UpdateTransforms(0); | 579 tree.UpdateTransforms(0); |
| 585 | 580 |
| 586 TransformNode singular; | 581 TransformNode singular; |
| 587 singular.data.local.matrix().set(2, 2, 0.0); | 582 singular.data.local.matrix().set(2, 2, 0.0); |
| 588 singular.data.source_node_id = 0; | 583 singular.data.source_node_id = 0; |
| 589 singular.data.target_id = 0; | 584 singular.id = tree.Insert(singular, 0); |
| 585 tree.SetTargetId(singular.id, 0); |
| 590 | 586 |
| 591 TransformNode child; | 587 TransformNode child; |
| 592 child.data.local.Translate(3, 3); | 588 child.data.local.Translate(3, 3); |
| 593 child.data.source_node_id = 1; | 589 child.data.source_node_id = 1; |
| 594 child.data.target_id = 0; | 590 child.id = tree.Insert(child, 1); |
| 591 tree.SetTargetId(child.id, 0); |
| 595 | 592 |
| 596 TransformNode sibling; | 593 TransformNode sibling; |
| 597 sibling.data.local.Translate(7, 7); | 594 sibling.data.local.Translate(7, 7); |
| 598 sibling.data.source_node_id = 1; | 595 sibling.data.source_node_id = 1; |
| 599 sibling.data.target_id = 0; | 596 sibling.id = tree.Insert(sibling, 1); |
| 600 | 597 tree.SetTargetId(sibling.id, 0); |
| 601 tree.Insert(singular, 0); | |
| 602 tree.Insert(child, 1); | |
| 603 tree.Insert(sibling, 1); | |
| 604 | 598 |
| 605 SetupTransformTreeForTest(&tree); | 599 SetupTransformTreeForTest(&tree); |
| 606 | 600 |
| 607 tree.UpdateTransforms(1); | 601 tree.UpdateTransforms(1); |
| 608 tree.UpdateTransforms(2); | 602 tree.UpdateTransforms(2); |
| 609 tree.UpdateTransforms(3); | 603 tree.UpdateTransforms(3); |
| 610 | 604 |
| 611 gfx::Transform expected; | 605 gfx::Transform expected; |
| 612 gfx::Transform transform; | 606 gfx::Transform transform; |
| 613 | 607 |
| (...skipping 14 matching lines...) Expand all Loading... |
| 628 DIRECT_AND_SERIALIZED_PROPERTY_TREE_TEST_F( | 622 DIRECT_AND_SERIALIZED_PROPERTY_TREE_TEST_F( |
| 629 PropertyTreeTestComputeTransformSiblingSingularAncestor); | 623 PropertyTreeTestComputeTransformSiblingSingularAncestor); |
| 630 | 624 |
| 631 class PropertyTreeTestTransformsWithFlattening : public PropertyTreeTest { | 625 class PropertyTreeTestTransformsWithFlattening : public PropertyTreeTest { |
| 632 protected: | 626 protected: |
| 633 void StartTest() override { | 627 void StartTest() override { |
| 634 PropertyTrees property_trees; | 628 PropertyTrees property_trees; |
| 635 TransformTree& tree = property_trees.transform_tree; | 629 TransformTree& tree = property_trees.transform_tree; |
| 636 | 630 |
| 637 int grand_parent = tree.Insert(TransformNode(), 0); | 631 int grand_parent = tree.Insert(TransformNode(), 0); |
| 638 tree.Node(grand_parent)->data.content_target_id = grand_parent; | 632 tree.SetContentTargetId(grand_parent, grand_parent); |
| 639 tree.Node(grand_parent)->data.target_id = grand_parent; | 633 tree.SetTargetId(grand_parent, grand_parent); |
| 640 tree.Node(grand_parent)->data.source_node_id = 0; | 634 tree.Node(grand_parent)->data.source_node_id = 0; |
| 641 | 635 |
| 642 gfx::Transform rotation_about_x; | 636 gfx::Transform rotation_about_x; |
| 643 rotation_about_x.RotateAboutXAxis(15); | 637 rotation_about_x.RotateAboutXAxis(15); |
| 644 | 638 |
| 645 int parent = tree.Insert(TransformNode(), grand_parent); | 639 int parent = tree.Insert(TransformNode(), grand_parent); |
| 646 tree.Node(parent)->data.needs_sublayer_scale = true; | 640 tree.Node(parent)->data.needs_sublayer_scale = true; |
| 647 tree.Node(parent)->data.target_id = grand_parent; | 641 tree.SetTargetId(parent, grand_parent); |
| 648 tree.Node(parent)->data.content_target_id = parent; | 642 tree.SetContentTargetId(parent, parent); |
| 649 tree.Node(parent)->data.source_node_id = grand_parent; | 643 tree.Node(parent)->data.source_node_id = grand_parent; |
| 650 tree.Node(parent)->data.local = rotation_about_x; | 644 tree.Node(parent)->data.local = rotation_about_x; |
| 651 | 645 |
| 652 int child = tree.Insert(TransformNode(), parent); | 646 int child = tree.Insert(TransformNode(), parent); |
| 653 tree.Node(child)->data.target_id = parent; | 647 tree.SetTargetId(child, parent); |
| 654 tree.Node(child)->data.content_target_id = parent; | 648 tree.SetContentTargetId(child, parent); |
| 655 tree.Node(child)->data.source_node_id = parent; | 649 tree.Node(child)->data.source_node_id = parent; |
| 656 tree.Node(child)->data.flattens_inherited_transform = true; | 650 tree.Node(child)->data.flattens_inherited_transform = true; |
| 657 tree.Node(child)->data.local = rotation_about_x; | 651 tree.Node(child)->data.local = rotation_about_x; |
| 658 | 652 |
| 659 int grand_child = tree.Insert(TransformNode(), child); | 653 int grand_child = tree.Insert(TransformNode(), child); |
| 660 tree.Node(grand_child)->data.target_id = parent; | 654 tree.SetTargetId(grand_child, parent); |
| 661 tree.Node(grand_child)->data.content_target_id = parent; | 655 tree.SetContentTargetId(grand_child, parent); |
| 662 tree.Node(grand_child)->data.source_node_id = child; | 656 tree.Node(grand_child)->data.source_node_id = child; |
| 663 tree.Node(grand_child)->data.flattens_inherited_transform = true; | 657 tree.Node(grand_child)->data.flattens_inherited_transform = true; |
| 664 tree.Node(grand_child)->data.local = rotation_about_x; | 658 tree.Node(grand_child)->data.local = rotation_about_x; |
| 665 | 659 |
| 666 tree.set_needs_update(true); | 660 tree.set_needs_update(true); |
| 667 SetupTransformTreeForTest(&tree); | 661 SetupTransformTreeForTest(&tree); |
| 668 draw_property_utils::ComputeTransforms(&tree); | 662 draw_property_utils::ComputeTransforms(&tree); |
| 669 | 663 |
| 670 gfx::Transform flattened_rotation_about_x = rotation_about_x; | 664 gfx::Transform flattened_rotation_about_x = rotation_about_x; |
| 671 flattened_rotation_about_x.FlattenTo2d(); | 665 flattened_rotation_about_x.FlattenTo2d(); |
| 672 | 666 |
| 673 EXPECT_TRANSFORMATION_MATRIX_EQ(rotation_about_x, | 667 EXPECT_TRANSFORMATION_MATRIX_EQ(rotation_about_x, tree.ToTarget(child)); |
| 674 tree.Node(child)->data.to_target); | 668 |
| 669 EXPECT_TRANSFORMATION_MATRIX_EQ( |
| 670 flattened_rotation_about_x * rotation_about_x, tree.ToScreen(child)); |
| 675 | 671 |
| 676 EXPECT_TRANSFORMATION_MATRIX_EQ( | 672 EXPECT_TRANSFORMATION_MATRIX_EQ( |
| 677 flattened_rotation_about_x * rotation_about_x, | 673 flattened_rotation_about_x * rotation_about_x, |
| 678 tree.Node(child)->data.to_screen); | 674 tree.ToTarget(grand_child)); |
| 679 | |
| 680 EXPECT_TRANSFORMATION_MATRIX_EQ( | |
| 681 flattened_rotation_about_x * rotation_about_x, | |
| 682 tree.Node(grand_child)->data.to_target); | |
| 683 | 675 |
| 684 EXPECT_TRANSFORMATION_MATRIX_EQ(flattened_rotation_about_x * | 676 EXPECT_TRANSFORMATION_MATRIX_EQ(flattened_rotation_about_x * |
| 685 flattened_rotation_about_x * | 677 flattened_rotation_about_x * |
| 686 rotation_about_x, | 678 rotation_about_x, |
| 687 tree.Node(grand_child)->data.to_screen); | 679 tree.ToScreen(grand_child)); |
| 688 | 680 |
| 689 gfx::Transform grand_child_to_child; | 681 gfx::Transform grand_child_to_child; |
| 690 bool success = | 682 bool success = |
| 691 tree.ComputeTransform(grand_child, child, &grand_child_to_child); | 683 tree.ComputeTransform(grand_child, child, &grand_child_to_child); |
| 692 EXPECT_TRUE(success); | 684 EXPECT_TRUE(success); |
| 693 EXPECT_TRANSFORMATION_MATRIX_EQ(rotation_about_x, grand_child_to_child); | 685 EXPECT_TRANSFORMATION_MATRIX_EQ(rotation_about_x, grand_child_to_child); |
| 694 | 686 |
| 695 // Remove flattening at grand_child, and recompute transforms. | 687 // Remove flattening at grand_child, and recompute transforms. |
| 696 tree.Node(grand_child)->data.flattens_inherited_transform = false; | 688 tree.Node(grand_child)->data.flattens_inherited_transform = false; |
| 697 tree.set_needs_update(true); | 689 tree.set_needs_update(true); |
| 698 SetupTransformTreeForTest(&tree); | 690 SetupTransformTreeForTest(&tree); |
| 699 draw_property_utils::ComputeTransforms(&tree); | 691 draw_property_utils::ComputeTransforms(&tree); |
| 700 | 692 |
| 701 EXPECT_TRANSFORMATION_MATRIX_EQ(rotation_about_x * rotation_about_x, | 693 EXPECT_TRANSFORMATION_MATRIX_EQ(rotation_about_x * rotation_about_x, |
| 702 tree.Node(grand_child)->data.to_target); | 694 tree.ToTarget(grand_child)); |
| 703 | 695 |
| 704 EXPECT_TRANSFORMATION_MATRIX_EQ( | 696 EXPECT_TRANSFORMATION_MATRIX_EQ( |
| 705 flattened_rotation_about_x * rotation_about_x * rotation_about_x, | 697 flattened_rotation_about_x * rotation_about_x * rotation_about_x, |
| 706 tree.Node(grand_child)->data.to_screen); | 698 tree.ToScreen(grand_child)); |
| 707 | 699 |
| 708 success = tree.ComputeTransform(grand_child, child, &grand_child_to_child); | 700 success = tree.ComputeTransform(grand_child, child, &grand_child_to_child); |
| 709 EXPECT_TRUE(success); | 701 EXPECT_TRUE(success); |
| 710 EXPECT_TRANSFORMATION_MATRIX_EQ(rotation_about_x, grand_child_to_child); | 702 EXPECT_TRANSFORMATION_MATRIX_EQ(rotation_about_x, grand_child_to_child); |
| 711 } | 703 } |
| 712 }; | 704 }; |
| 713 | 705 |
| 714 DIRECT_AND_SERIALIZED_PROPERTY_TREE_TEST_F( | 706 DIRECT_AND_SERIALIZED_PROPERTY_TREE_TEST_F( |
| 715 PropertyTreeTestTransformsWithFlattening); | 707 PropertyTreeTestTransformsWithFlattening); |
| 716 | 708 |
| 717 class PropertyTreeTestMultiplicationOrder : public PropertyTreeTest { | 709 class PropertyTreeTestMultiplicationOrder : public PropertyTreeTest { |
| 718 protected: | 710 protected: |
| 719 void StartTest() override { | 711 void StartTest() override { |
| 720 PropertyTrees property_trees; | 712 PropertyTrees property_trees; |
| 721 TransformTree& tree = property_trees.transform_tree; | 713 TransformTree& tree = property_trees.transform_tree; |
| 722 TransformNode& root = *tree.Node(0); | 714 TransformNode& root = *tree.Node(0); |
| 723 root.data.local.Translate(2, 2); | 715 root.data.local.Translate(2, 2); |
| 724 root.data.target_id = 0; | 716 tree.SetTargetId(root.id, 0); |
| 725 tree.UpdateTransforms(0); | 717 tree.UpdateTransforms(0); |
| 726 | 718 |
| 727 TransformNode child; | 719 TransformNode child; |
| 728 child.data.local.Scale(2, 2); | 720 child.data.local.Scale(2, 2); |
| 729 child.data.target_id = 0; | |
| 730 child.data.source_node_id = 0; | 721 child.data.source_node_id = 0; |
| 722 child.id = tree.Insert(child, 0); |
| 723 tree.SetTargetId(child.id, 0); |
| 731 | 724 |
| 732 tree.Insert(child, 0); | |
| 733 SetupTransformTreeForTest(&tree); | 725 SetupTransformTreeForTest(&tree); |
| 734 tree.UpdateTransforms(1); | 726 tree.UpdateTransforms(1); |
| 735 | 727 |
| 736 gfx::Transform expected; | 728 gfx::Transform expected; |
| 737 expected.Translate(2, 2); | 729 expected.Translate(2, 2); |
| 738 expected.Scale(2, 2); | 730 expected.Scale(2, 2); |
| 739 | 731 |
| 740 gfx::Transform transform; | 732 gfx::Transform transform; |
| 741 gfx::Transform inverse; | 733 gfx::Transform inverse; |
| 742 | 734 |
| (...skipping 12 matching lines...) Expand all Loading... |
| 755 | 747 |
| 756 DIRECT_AND_SERIALIZED_PROPERTY_TREE_TEST_F(PropertyTreeTestMultiplicationOrder); | 748 DIRECT_AND_SERIALIZED_PROPERTY_TREE_TEST_F(PropertyTreeTestMultiplicationOrder); |
| 757 | 749 |
| 758 class PropertyTreeTestComputeTransformWithUninvertibleTransform | 750 class PropertyTreeTestComputeTransformWithUninvertibleTransform |
| 759 : public PropertyTreeTest { | 751 : public PropertyTreeTest { |
| 760 protected: | 752 protected: |
| 761 void StartTest() override { | 753 void StartTest() override { |
| 762 PropertyTrees property_trees; | 754 PropertyTrees property_trees; |
| 763 TransformTree& tree = property_trees.transform_tree; | 755 TransformTree& tree = property_trees.transform_tree; |
| 764 TransformNode& root = *tree.Node(0); | 756 TransformNode& root = *tree.Node(0); |
| 765 root.data.target_id = 0; | 757 tree.SetTargetId(root.id, 0); |
| 766 tree.UpdateTransforms(0); | 758 tree.UpdateTransforms(0); |
| 767 | 759 |
| 768 TransformNode child; | 760 TransformNode child; |
| 769 child.data.local.Scale(0, 0); | 761 child.data.local.Scale(0, 0); |
| 770 child.data.target_id = 0; | |
| 771 child.data.source_node_id = 0; | 762 child.data.source_node_id = 0; |
| 763 child.id = tree.Insert(child, 0); |
| 764 tree.SetTargetId(child.id, 0); |
| 772 | 765 |
| 773 tree.Insert(child, 0); | |
| 774 SetupTransformTreeForTest(&tree); | 766 SetupTransformTreeForTest(&tree); |
| 775 tree.UpdateTransforms(1); | 767 tree.UpdateTransforms(1); |
| 776 | 768 |
| 777 gfx::Transform expected; | 769 gfx::Transform expected; |
| 778 expected.Scale(0, 0); | 770 expected.Scale(0, 0); |
| 779 | 771 |
| 780 gfx::Transform transform; | 772 gfx::Transform transform; |
| 781 gfx::Transform inverse; | 773 gfx::Transform inverse; |
| 782 | 774 |
| 783 bool success = tree.ComputeTransform(1, 0, &transform); | 775 bool success = tree.ComputeTransform(1, 0, &transform); |
| (...skipping 10 matching lines...) Expand all Loading... |
| 794 DIRECT_AND_SERIALIZED_PROPERTY_TREE_TEST_F( | 786 DIRECT_AND_SERIALIZED_PROPERTY_TREE_TEST_F( |
| 795 PropertyTreeTestComputeTransformWithUninvertibleTransform); | 787 PropertyTreeTestComputeTransformWithUninvertibleTransform); |
| 796 | 788 |
| 797 class PropertyTreeTestComputeTransformWithSublayerScale | 789 class PropertyTreeTestComputeTransformWithSublayerScale |
| 798 : public PropertyTreeTest { | 790 : public PropertyTreeTest { |
| 799 protected: | 791 protected: |
| 800 void StartTest() override { | 792 void StartTest() override { |
| 801 PropertyTrees property_trees; | 793 PropertyTrees property_trees; |
| 802 TransformTree& tree = property_trees.transform_tree; | 794 TransformTree& tree = property_trees.transform_tree; |
| 803 TransformNode& root = *tree.Node(0); | 795 TransformNode& root = *tree.Node(0); |
| 804 root.data.target_id = 0; | 796 root.id = 0; |
| 797 tree.SetTargetId(root.id, 0); |
| 805 tree.UpdateTransforms(0); | 798 tree.UpdateTransforms(0); |
| 806 | 799 |
| 807 TransformNode grand_parent; | 800 TransformNode grand_parent; |
| 808 grand_parent.data.local.Scale(2.f, 2.f); | 801 grand_parent.data.local.Scale(2.f, 2.f); |
| 809 grand_parent.data.target_id = 0; | |
| 810 grand_parent.data.source_node_id = 0; | 802 grand_parent.data.source_node_id = 0; |
| 811 grand_parent.data.needs_sublayer_scale = true; | 803 grand_parent.data.needs_sublayer_scale = true; |
| 812 int grand_parent_id = tree.Insert(grand_parent, 0); | 804 int grand_parent_id = tree.Insert(grand_parent, 0); |
| 805 tree.SetTargetId(grand_parent_id, 0); |
| 813 tree.UpdateTransforms(grand_parent_id); | 806 tree.UpdateTransforms(grand_parent_id); |
| 814 | 807 |
| 815 TransformNode parent; | 808 TransformNode parent; |
| 816 parent.data.local.Translate(15.f, 15.f); | 809 parent.data.local.Translate(15.f, 15.f); |
| 817 parent.data.target_id = grand_parent_id; | |
| 818 parent.data.source_node_id = grand_parent_id; | 810 parent.data.source_node_id = grand_parent_id; |
| 819 int parent_id = tree.Insert(parent, grand_parent_id); | 811 int parent_id = tree.Insert(parent, grand_parent_id); |
| 812 tree.SetTargetId(parent_id, grand_parent_id); |
| 820 tree.UpdateTransforms(parent_id); | 813 tree.UpdateTransforms(parent_id); |
| 821 | 814 |
| 822 TransformNode child; | 815 TransformNode child; |
| 823 child.data.local.Scale(3.f, 3.f); | 816 child.data.local.Scale(3.f, 3.f); |
| 824 child.data.target_id = grand_parent_id; | |
| 825 child.data.source_node_id = parent_id; | 817 child.data.source_node_id = parent_id; |
| 826 int child_id = tree.Insert(child, parent_id); | 818 int child_id = tree.Insert(child, parent_id); |
| 819 tree.SetTargetId(child_id, grand_parent_id); |
| 827 tree.UpdateTransforms(child_id); | 820 tree.UpdateTransforms(child_id); |
| 828 | 821 |
| 829 TransformNode grand_child; | 822 TransformNode grand_child; |
| 830 grand_child.data.local.Scale(5.f, 5.f); | 823 grand_child.data.local.Scale(5.f, 5.f); |
| 831 grand_child.data.target_id = grand_parent_id; | |
| 832 grand_child.data.source_node_id = child_id; | 824 grand_child.data.source_node_id = child_id; |
| 833 grand_child.data.needs_sublayer_scale = true; | 825 grand_child.data.needs_sublayer_scale = true; |
| 834 int grand_child_id = tree.Insert(grand_child, child_id); | 826 int grand_child_id = tree.Insert(grand_child, child_id); |
| 827 tree.SetTargetId(grand_child_id, grand_parent_id); |
| 835 SetupTransformTreeForTest(&tree); | 828 SetupTransformTreeForTest(&tree); |
| 836 tree.UpdateTransforms(grand_child_id); | 829 tree.UpdateTransforms(grand_child_id); |
| 837 | 830 |
| 838 EXPECT_EQ(gfx::Vector2dF(2.f, 2.f), | 831 EXPECT_EQ(gfx::Vector2dF(2.f, 2.f), |
| 839 tree.Node(grand_parent_id)->data.sublayer_scale); | 832 tree.Node(grand_parent_id)->data.sublayer_scale); |
| 840 EXPECT_EQ(gfx::Vector2dF(30.f, 30.f), | 833 EXPECT_EQ(gfx::Vector2dF(30.f, 30.f), |
| 841 tree.Node(grand_child_id)->data.sublayer_scale); | 834 tree.Node(grand_child_id)->data.sublayer_scale); |
| 842 | 835 |
| 843 // Compute transform from grand_parent to grand_child. | 836 // Compute transform from grand_parent to grand_child. |
| 844 gfx::Transform expected_transform_without_sublayer_scale; | 837 gfx::Transform expected_transform_without_sublayer_scale; |
| (...skipping 67 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 912 DIRECT_AND_SERIALIZED_PROPERTY_TREE_TEST_F( | 905 DIRECT_AND_SERIALIZED_PROPERTY_TREE_TEST_F( |
| 913 PropertyTreeTestComputeTransformWithSublayerScale); | 906 PropertyTreeTestComputeTransformWithSublayerScale); |
| 914 | 907 |
| 915 class PropertyTreeTestComputeTransformToTargetWithZeroSublayerScale | 908 class PropertyTreeTestComputeTransformToTargetWithZeroSublayerScale |
| 916 : public PropertyTreeTest { | 909 : public PropertyTreeTest { |
| 917 protected: | 910 protected: |
| 918 void StartTest() override { | 911 void StartTest() override { |
| 919 PropertyTrees property_trees; | 912 PropertyTrees property_trees; |
| 920 TransformTree& tree = property_trees.transform_tree; | 913 TransformTree& tree = property_trees.transform_tree; |
| 921 TransformNode& root = *tree.Node(0); | 914 TransformNode& root = *tree.Node(0); |
| 922 root.data.target_id = 0; | 915 tree.SetTargetId(root.id, 0); |
| 923 tree.UpdateTransforms(0); | 916 tree.UpdateTransforms(0); |
| 924 | 917 |
| 925 TransformNode grand_parent; | 918 TransformNode grand_parent; |
| 926 grand_parent.data.local.Scale(2.f, 0.f); | 919 grand_parent.data.local.Scale(2.f, 0.f); |
| 927 grand_parent.data.target_id = 0; | |
| 928 grand_parent.data.source_node_id = 0; | 920 grand_parent.data.source_node_id = 0; |
| 929 grand_parent.data.needs_sublayer_scale = true; | 921 grand_parent.data.needs_sublayer_scale = true; |
| 930 int grand_parent_id = tree.Insert(grand_parent, 0); | 922 int grand_parent_id = tree.Insert(grand_parent, 0); |
| 931 tree.Node(grand_parent_id)->data.content_target_id = grand_parent_id; | 923 tree.SetTargetId(grand_parent_id, 0); |
| 924 tree.SetContentTargetId(grand_parent_id, grand_parent_id); |
| 932 tree.UpdateTransforms(grand_parent_id); | 925 tree.UpdateTransforms(grand_parent_id); |
| 933 | 926 |
| 934 TransformNode parent; | 927 TransformNode parent; |
| 935 parent.data.local.Translate(1.f, 1.f); | 928 parent.data.local.Translate(1.f, 1.f); |
| 936 parent.data.target_id = grand_parent_id; | |
| 937 parent.data.content_target_id = grand_parent_id; | |
| 938 parent.data.source_node_id = grand_parent_id; | 929 parent.data.source_node_id = grand_parent_id; |
| 939 int parent_id = tree.Insert(parent, grand_parent_id); | 930 int parent_id = tree.Insert(parent, grand_parent_id); |
| 931 tree.SetTargetId(parent_id, grand_parent_id); |
| 932 tree.SetContentTargetId(parent_id, grand_parent_id); |
| 940 tree.UpdateTransforms(parent_id); | 933 tree.UpdateTransforms(parent_id); |
| 941 | 934 |
| 942 TransformNode child; | 935 TransformNode child; |
| 943 child.data.local.Translate(3.f, 4.f); | 936 child.data.local.Translate(3.f, 4.f); |
| 944 child.data.target_id = grand_parent_id; | |
| 945 child.data.content_target_id = grand_parent_id; | |
| 946 child.data.source_node_id = parent_id; | 937 child.data.source_node_id = parent_id; |
| 947 int child_id = tree.Insert(child, parent_id); | 938 int child_id = tree.Insert(child, parent_id); |
| 939 tree.SetTargetId(child_id, grand_parent_id); |
| 940 tree.SetContentTargetId(child_id, grand_parent_id); |
| 948 SetupTransformTreeForTest(&tree); | 941 SetupTransformTreeForTest(&tree); |
| 949 tree.UpdateTransforms(child_id); | 942 tree.UpdateTransforms(child_id); |
| 950 | 943 |
| 951 gfx::Transform expected_transform; | 944 gfx::Transform expected_transform; |
| 952 expected_transform.Translate(4.f, 5.f); | 945 expected_transform.Translate(4.f, 5.f); |
| 953 | 946 |
| 954 gfx::Transform transform; | 947 gfx::Transform transform; |
| 955 bool success = tree.ComputeTransform(child_id, grand_parent_id, &transform); | 948 bool success = tree.ComputeTransform(child_id, grand_parent_id, &transform); |
| 956 EXPECT_TRUE(success); | 949 EXPECT_TRUE(success); |
| 957 EXPECT_TRANSFORMATION_MATRIX_EQ(expected_transform, transform); | 950 EXPECT_TRANSFORMATION_MATRIX_EQ(expected_transform, transform); |
| (...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 989 : public PropertyTreeTest { | 982 : public PropertyTreeTest { |
| 990 protected: | 983 protected: |
| 991 void StartTest() override { | 984 void StartTest() override { |
| 992 // This tests that flattening is performed correctly when | 985 // This tests that flattening is performed correctly when |
| 993 // destination and its ancestors are flat, but there are 3d transforms | 986 // destination and its ancestors are flat, but there are 3d transforms |
| 994 // and flattening between the source and destination. | 987 // and flattening between the source and destination. |
| 995 PropertyTrees property_trees; | 988 PropertyTrees property_trees; |
| 996 TransformTree& tree = property_trees.transform_tree; | 989 TransformTree& tree = property_trees.transform_tree; |
| 997 | 990 |
| 998 int parent = tree.Insert(TransformNode(), 0); | 991 int parent = tree.Insert(TransformNode(), 0); |
| 999 tree.Node(parent)->data.content_target_id = parent; | 992 tree.SetContentTargetId(parent, parent); |
| 1000 tree.Node(parent)->data.target_id = parent; | 993 tree.SetTargetId(parent, parent); |
| 1001 tree.Node(parent)->data.source_node_id = 0; | 994 tree.Node(parent)->data.source_node_id = 0; |
| 1002 tree.Node(parent)->data.local.Translate(2, 2); | 995 tree.Node(parent)->data.local.Translate(2, 2); |
| 1003 | 996 |
| 1004 gfx::Transform rotation_about_x; | 997 gfx::Transform rotation_about_x; |
| 1005 rotation_about_x.RotateAboutXAxis(15); | 998 rotation_about_x.RotateAboutXAxis(15); |
| 1006 | 999 |
| 1007 int child = tree.Insert(TransformNode(), parent); | 1000 int child = tree.Insert(TransformNode(), parent); |
| 1008 tree.Node(child)->data.content_target_id = child; | 1001 tree.SetContentTargetId(child, child); |
| 1009 tree.Node(child)->data.target_id = child; | 1002 tree.SetTargetId(child, child); |
| 1010 tree.Node(child)->data.source_node_id = parent; | 1003 tree.Node(child)->data.source_node_id = parent; |
| 1011 tree.Node(child)->data.local = rotation_about_x; | 1004 tree.Node(child)->data.local = rotation_about_x; |
| 1012 | 1005 |
| 1013 int grand_child = tree.Insert(TransformNode(), child); | 1006 int grand_child = tree.Insert(TransformNode(), child); |
| 1014 tree.Node(grand_child)->data.content_target_id = grand_child; | 1007 tree.SetContentTargetId(grand_child, grand_child); |
| 1015 tree.Node(grand_child)->data.target_id = grand_child; | 1008 tree.SetTargetId(grand_child, grand_child); |
| 1016 tree.Node(grand_child)->data.source_node_id = child; | 1009 tree.Node(grand_child)->data.source_node_id = child; |
| 1017 tree.Node(grand_child)->data.flattens_inherited_transform = true; | 1010 tree.Node(grand_child)->data.flattens_inherited_transform = true; |
| 1018 | 1011 |
| 1019 tree.set_needs_update(true); | 1012 tree.set_needs_update(true); |
| 1020 SetupTransformTreeForTest(&tree); | 1013 SetupTransformTreeForTest(&tree); |
| 1021 draw_property_utils::ComputeTransforms(&tree); | 1014 draw_property_utils::ComputeTransforms(&tree); |
| 1022 | 1015 |
| 1023 gfx::Transform flattened_rotation_about_x = rotation_about_x; | 1016 gfx::Transform flattened_rotation_about_x = rotation_about_x; |
| 1024 flattened_rotation_about_x.FlattenTo2d(); | 1017 flattened_rotation_about_x.FlattenTo2d(); |
| 1025 | 1018 |
| (...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1066 | 1059 |
| 1067 class PropertyTreeTestNonIntegerTranslationTest : public PropertyTreeTest { | 1060 class PropertyTreeTestNonIntegerTranslationTest : public PropertyTreeTest { |
| 1068 protected: | 1061 protected: |
| 1069 void StartTest() override { | 1062 void StartTest() override { |
| 1070 // This tests that when a node has non-integer translation, the information | 1063 // This tests that when a node has non-integer translation, the information |
| 1071 // is propagated to the subtree. | 1064 // is propagated to the subtree. |
| 1072 PropertyTrees property_trees; | 1065 PropertyTrees property_trees; |
| 1073 TransformTree& tree = property_trees.transform_tree; | 1066 TransformTree& tree = property_trees.transform_tree; |
| 1074 | 1067 |
| 1075 int parent = tree.Insert(TransformNode(), 0); | 1068 int parent = tree.Insert(TransformNode(), 0); |
| 1076 tree.Node(parent)->data.target_id = parent; | 1069 tree.SetTargetId(parent, parent); |
| 1077 tree.Node(parent)->data.local.Translate(1.5f, 1.5f); | 1070 tree.Node(parent)->data.local.Translate(1.5f, 1.5f); |
| 1078 | 1071 |
| 1079 int child = tree.Insert(TransformNode(), parent); | 1072 int child = tree.Insert(TransformNode(), parent); |
| 1080 tree.Node(child)->data.target_id = parent; | 1073 tree.SetTargetId(child, parent); |
| 1081 tree.Node(child)->data.local.Translate(1, 1); | 1074 tree.Node(child)->data.local.Translate(1, 1); |
| 1082 tree.set_needs_update(true); | 1075 tree.set_needs_update(true); |
| 1083 SetupTransformTreeForTest(&tree); | 1076 SetupTransformTreeForTest(&tree); |
| 1084 draw_property_utils::ComputeTransforms(&tree); | 1077 draw_property_utils::ComputeTransforms(&tree); |
| 1085 EXPECT_FALSE(tree.Node(parent) | 1078 EXPECT_FALSE(tree.Node(parent) |
| 1086 ->data.node_and_ancestors_have_only_integer_translation); | 1079 ->data.node_and_ancestors_have_only_integer_translation); |
| 1087 EXPECT_FALSE(tree.Node(child) | 1080 EXPECT_FALSE(tree.Node(child) |
| 1088 ->data.node_and_ancestors_have_only_integer_translation); | 1081 ->data.node_and_ancestors_have_only_integer_translation); |
| 1089 | 1082 |
| 1090 tree.Node(parent)->data.local.Translate(0.5f, 0.5f); | 1083 tree.Node(parent)->data.local.Translate(0.5f, 0.5f); |
| 1091 tree.Node(child)->data.local.Translate(0.5f, 0.5f); | 1084 tree.Node(child)->data.local.Translate(0.5f, 0.5f); |
| 1092 tree.set_needs_update(true); | 1085 tree.set_needs_update(true); |
| 1093 SetupTransformTreeForTest(&tree); | 1086 SetupTransformTreeForTest(&tree); |
| 1094 draw_property_utils::ComputeTransforms(&tree); | 1087 draw_property_utils::ComputeTransforms(&tree); |
| 1095 EXPECT_TRUE(tree.Node(parent) | 1088 EXPECT_TRUE(tree.Node(parent) |
| 1096 ->data.node_and_ancestors_have_only_integer_translation); | 1089 ->data.node_and_ancestors_have_only_integer_translation); |
| 1097 EXPECT_FALSE(tree.Node(child) | 1090 EXPECT_FALSE(tree.Node(child) |
| 1098 ->data.node_and_ancestors_have_only_integer_translation); | 1091 ->data.node_and_ancestors_have_only_integer_translation); |
| 1099 | 1092 |
| 1100 tree.Node(child)->data.local.Translate(0.5f, 0.5f); | 1093 tree.Node(child)->data.local.Translate(0.5f, 0.5f); |
| 1101 tree.Node(child)->data.target_id = child; | 1094 tree.SetTargetId(child, child); |
| 1102 tree.set_needs_update(true); | 1095 tree.set_needs_update(true); |
| 1103 SetupTransformTreeForTest(&tree); | 1096 SetupTransformTreeForTest(&tree); |
| 1104 draw_property_utils::ComputeTransforms(&tree); | 1097 draw_property_utils::ComputeTransforms(&tree); |
| 1105 EXPECT_TRUE(tree.Node(parent) | 1098 EXPECT_TRUE(tree.Node(parent) |
| 1106 ->data.node_and_ancestors_have_only_integer_translation); | 1099 ->data.node_and_ancestors_have_only_integer_translation); |
| 1107 EXPECT_TRUE(tree.Node(child) | 1100 EXPECT_TRUE(tree.Node(child) |
| 1108 ->data.node_and_ancestors_have_only_integer_translation); | 1101 ->data.node_and_ancestors_have_only_integer_translation); |
| 1109 } | 1102 } |
| 1110 }; | 1103 }; |
| 1111 | 1104 |
| 1112 DIRECT_AND_SERIALIZED_PROPERTY_TREE_TEST_F( | 1105 DIRECT_AND_SERIALIZED_PROPERTY_TREE_TEST_F( |
| 1113 PropertyTreeTestNonIntegerTranslationTest); | 1106 PropertyTreeTestNonIntegerTranslationTest); |
| 1114 | 1107 |
| 1115 class PropertyTreeTestSingularTransformSnapTest : public PropertyTreeTest { | 1108 class PropertyTreeTestSingularTransformSnapTest : public PropertyTreeTest { |
| 1116 protected: | 1109 protected: |
| 1117 void StartTest() override { | 1110 void StartTest() override { |
| 1118 // This tests that to_target transform is not snapped when it has a singular | 1111 // This tests that to_target transform is not snapped when it has a singular |
| 1119 // transform. | 1112 // transform. |
| 1120 PropertyTrees property_trees; | 1113 PropertyTrees property_trees; |
| 1121 TransformTree& tree = property_trees.transform_tree; | 1114 TransformTree& tree = property_trees.transform_tree; |
| 1122 | 1115 |
| 1123 int parent = tree.Insert(TransformNode(), 0); | 1116 int parent = tree.Insert(TransformNode(), 0); |
| 1124 tree.Node(parent)->data.target_id = parent; | 1117 tree.SetTargetId(parent, parent); |
| 1125 tree.Node(parent)->data.scrolls = true; | 1118 tree.Node(parent)->data.scrolls = true; |
| 1126 | 1119 |
| 1127 int child = tree.Insert(TransformNode(), parent); | 1120 int child = tree.Insert(TransformNode(), parent); |
| 1128 TransformNode* child_node = tree.Node(child); | 1121 TransformNode* child_node = tree.Node(child); |
| 1129 child_node->data.target_id = parent; | 1122 tree.SetTargetId(child, parent); |
| 1130 child_node->data.scrolls = true; | 1123 child_node->data.scrolls = true; |
| 1131 child_node->data.local.Scale3d(6.0f, 6.0f, 0.0f); | 1124 child_node->data.local.Scale3d(6.0f, 6.0f, 0.0f); |
| 1132 child_node->data.local.Translate(1.3f, 1.3f); | 1125 child_node->data.local.Translate(1.3f, 1.3f); |
| 1133 tree.set_needs_update(true); | 1126 tree.set_needs_update(true); |
| 1134 | 1127 |
| 1135 SetupTransformTreeForTest(&tree); | 1128 SetupTransformTreeForTest(&tree); |
| 1136 draw_property_utils::ComputeTransforms(&tree); | 1129 draw_property_utils::ComputeTransforms(&tree); |
| 1137 | 1130 |
| 1138 gfx::Transform from_target; | 1131 gfx::Transform from_target; |
| 1139 EXPECT_FALSE(child_node->data.to_target.GetInverse(&from_target)); | 1132 EXPECT_FALSE(tree.ToTarget(child).GetInverse(&from_target)); |
| 1140 // The following checks are to ensure that snapping is skipped because of | 1133 // The following checks are to ensure that snapping is skipped because of |
| 1141 // singular transform (and not because of other reasons which also cause | 1134 // singular transform (and not because of other reasons which also cause |
| 1142 // snapping to be skipped). | 1135 // snapping to be skipped). |
| 1143 EXPECT_TRUE(child_node->data.scrolls); | 1136 EXPECT_TRUE(child_node->data.scrolls); |
| 1144 EXPECT_TRUE(child_node->data.to_target.IsScaleOrTranslation()); | 1137 EXPECT_TRUE(tree.ToTarget(child).IsScaleOrTranslation()); |
| 1145 EXPECT_FALSE(child_node->data.to_screen_is_potentially_animated); | 1138 EXPECT_FALSE(child_node->data.to_screen_is_potentially_animated); |
| 1146 EXPECT_FALSE(child_node->data.ancestors_are_invertible); | 1139 EXPECT_FALSE(child_node->data.ancestors_are_invertible); |
| 1147 | 1140 |
| 1148 gfx::Transform rounded = child_node->data.to_target; | 1141 gfx::Transform rounded = tree.ToTarget(child); |
| 1149 rounded.RoundTranslationComponents(); | 1142 rounded.RoundTranslationComponents(); |
| 1150 EXPECT_NE(child_node->data.to_target, rounded); | 1143 EXPECT_NE(tree.ToTarget(child), rounded); |
| 1151 } | 1144 } |
| 1152 }; | 1145 }; |
| 1153 | 1146 |
| 1154 DIRECT_AND_SERIALIZED_PROPERTY_TREE_TEST_F( | 1147 DIRECT_AND_SERIALIZED_PROPERTY_TREE_TEST_F( |
| 1155 PropertyTreeTestSingularTransformSnapTest); | 1148 PropertyTreeTestSingularTransformSnapTest); |
| 1156 | 1149 |
| 1157 #undef DIRECT_AND_SERIALIZED_PROPERTY_TREE_TEST_F | 1150 #undef DIRECT_AND_SERIALIZED_PROPERTY_TREE_TEST_F |
| 1158 #undef SERIALIZED_PROPERTY_TREE_TEST_F | 1151 #undef SERIALIZED_PROPERTY_TREE_TEST_F |
| 1159 #undef DIRECT_PROPERTY_TREE_TEST_F | 1152 #undef DIRECT_PROPERTY_TREE_TEST_F |
| 1160 | 1153 |
| 1161 } // namespace | 1154 } // namespace |
| 1162 } // namespace cc | 1155 } // namespace cc |
| OLD | NEW |