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 54 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
162 root.data.target_id = 1; | 157 root.data.target_id = 1; |
163 ClipNode second; | 158 ClipNode second; |
164 second.owner_id = 2; | 159 second.owner_id = 2; |
165 second.data.transform_id = 4; | 160 second.data.transform_id = 4; |
166 second.data.applies_local_clip = true; | 161 second.data.applies_local_clip = true; |
167 ClipNode third; | 162 ClipNode third; |
168 third.owner_id = 3; | 163 third.owner_id = 3; |
169 third.data.target_id = 3; | 164 third.data.target_id = 3; |
170 third.data.target_is_clipped = false; | 165 third.data.target_is_clipped = false; |
171 | 166 |
172 original.Insert(second, 0); | 167 second.id = original.Insert(second, 0); |
173 original.Insert(third, 1); | 168 third.id = original.Insert(third, 1); |
ajuma
2016/06/07 19:51:01
Is this change needed? We don't seem to use |secon
sunxd
2016/06/07 20:34:22
Done.
| |
174 original.set_needs_update(true); | 169 original.set_needs_update(true); |
175 | 170 |
176 proto::PropertyTree proto; | 171 proto::PropertyTree proto; |
177 original.ToProtobuf(&proto); | 172 original.ToProtobuf(&proto); |
178 ClipTree result; | 173 ClipTree result; |
179 std::unordered_map<int, int> clip_id_to_index_map; | 174 std::unordered_map<int, int> clip_id_to_index_map; |
180 result.FromProtobuf(proto, &clip_id_to_index_map); | 175 result.FromProtobuf(proto, &clip_id_to_index_map); |
181 | 176 |
182 EXPECT_EQ(clip_id_to_index_map[1], 0); | 177 EXPECT_EQ(clip_id_to_index_map[1], 0); |
183 EXPECT_EQ(clip_id_to_index_map[2], 1); | 178 EXPECT_EQ(clip_id_to_index_map[2], 1); |
(...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
223 root.data.clip_id = 1; | 218 root.data.clip_id = 1; |
224 EffectNode second; | 219 EffectNode second; |
225 second.owner_id = 6; | 220 second.owner_id = 6; |
226 second.data.transform_id = 4; | 221 second.data.transform_id = 4; |
227 second.data.opacity = true; | 222 second.data.opacity = true; |
228 EffectNode third; | 223 EffectNode third; |
229 third.owner_id = 7; | 224 third.owner_id = 7; |
230 third.data.clip_id = 3; | 225 third.data.clip_id = 3; |
231 third.data.has_render_surface = false; | 226 third.data.has_render_surface = false; |
232 | 227 |
233 original.Insert(second, 0); | 228 second.id = original.Insert(second, 0); |
234 original.Insert(third, 1); | 229 third.id = original.Insert(third, 1); |
235 original.set_needs_update(true); | 230 original.set_needs_update(true); |
236 | 231 |
237 proto::PropertyTree proto; | 232 proto::PropertyTree proto; |
238 original.ToProtobuf(&proto); | 233 original.ToProtobuf(&proto); |
239 EffectTree result; | 234 EffectTree result; |
240 std::unordered_map<int, int> effect_id_to_index_map; | 235 std::unordered_map<int, int> effect_id_to_index_map; |
241 result.FromProtobuf(proto, &effect_id_to_index_map); | 236 result.FromProtobuf(proto, &effect_id_to_index_map); |
242 | 237 |
243 EXPECT_EQ(effect_id_to_index_map[5], 0); | 238 EXPECT_EQ(effect_id_to_index_map[5], 0); |
244 EXPECT_EQ(effect_id_to_index_map[6], 1); | 239 EXPECT_EQ(effect_id_to_index_map[6], 1); |
(...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
285 property_trees.is_main_thread = true; | 280 property_trees.is_main_thread = true; |
286 ScrollTree& original = property_trees.scroll_tree; | 281 ScrollTree& original = property_trees.scroll_tree; |
287 ScrollNode second; | 282 ScrollNode second; |
288 second.owner_id = 10; | 283 second.owner_id = 10; |
289 second.data.scrollable = true; | 284 second.data.scrollable = true; |
290 second.data.bounds = gfx::Size(15, 15); | 285 second.data.bounds = gfx::Size(15, 15); |
291 ScrollNode third; | 286 ScrollNode third; |
292 third.owner_id = 20; | 287 third.owner_id = 20; |
293 third.data.contains_non_fast_scrollable_region = true; | 288 third.data.contains_non_fast_scrollable_region = true; |
294 | 289 |
295 original.Insert(second, 0); | 290 second.id = original.Insert(second, 0); |
296 original.Insert(third, 1); | 291 third.id = original.Insert(third, 1); |
297 | 292 |
298 original.set_currently_scrolling_node(1); | 293 original.set_currently_scrolling_node(1); |
299 original.SetScrollOffset(1, gfx::ScrollOffset(1, 2)); | 294 original.SetScrollOffset(1, gfx::ScrollOffset(1, 2)); |
300 | 295 |
301 proto::PropertyTree proto; | 296 proto::PropertyTree proto; |
302 original.ToProtobuf(&proto); | 297 original.ToProtobuf(&proto); |
303 ScrollTree result; | 298 ScrollTree result; |
304 std::unordered_map<int, int> scroll_id_to_index_map; | 299 std::unordered_map<int, int> scroll_id_to_index_map; |
305 result.FromProtobuf(proto, &scroll_id_to_index_map); | 300 result.FromProtobuf(proto, &scroll_id_to_index_map); |
306 | 301 |
(...skipping 11 matching lines...) Expand all 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 |