Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(97)

Side by Side Diff: cc/trees/property_tree_unittest.cc

Issue 2032213002: cc: Put to_target and to_screen behind an accessor. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Rename ids to node_ids Created 4 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698