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

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

Issue 2087963003: cc: Stop creating unused 0 property tree nodes other than transform Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: 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
« cc/trees/property_tree.cc ('K') | « cc/trees/property_tree_builder.cc ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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"
(...skipping 54 matching lines...) Expand 10 before | Expand all | Expand 10 after
65 proto::TreeNode proto; 65 proto::TreeNode proto;
66 original.ToProtobuf(&proto); 66 original.ToProtobuf(&proto);
67 TransformNode result; 67 TransformNode result;
68 result.FromProtobuf(proto); 68 result.FromProtobuf(proto);
69 69
70 EXPECT_EQ(original, result); 70 EXPECT_EQ(original, result);
71 } 71 }
72 72
73 TEST(PropertyTreeSerializationTest, TransformTreeSerialization) { 73 TEST(PropertyTreeSerializationTest, TransformTreeSerialization) {
74 TransformTree original; 74 TransformTree original;
75 TransformNode& root = *original.Node(0); 75 TransformNode root;
76 root.id = 0;
77 root.owner_id = 1; 76 root.owner_id = 1;
78 original.SetTargetId(root.id, 3); 77 root.id = original.Insert(root, TransformTree::kDeviceNodeId);
79 original.SetContentTargetId(root.id, 4); 78 original.SetTargetId(root.id, TransformTree::kDeviceNodeId);
79 original.SetContentTargetId(root.id, TransformTree::kDeviceNodeId);
80 TransformNode second; 80 TransformNode second;
81 second.owner_id = 2; 81 second.owner_id = 2;
82 second.data.local.Translate3d(2.f, 2.f, 0.f); 82 second.data.local.Translate3d(2.f, 2.f, 0.f);
83 second.data.source_node_id = 0; 83 second.data.source_node_id = root.id;
84 second.id = original.Insert(second, 0); 84 second.id = original.Insert(second, root.id);
85 original.SetTargetId(second.id, 0); 85 original.SetTargetId(second.id, root.id);
86 TransformNode third; 86 TransformNode third;
87 third.owner_id = 3; 87 third.owner_id = 3;
88 third.data.scrolls = true; 88 third.data.scrolls = true;
89 third.data.source_node_id = 1; 89 third.data.source_node_id = root.id;
90 third.id = original.Insert(third, 1); 90 third.id = original.Insert(third, root.id);
91 original.SetTargetId(third.id, 0); 91 original.SetTargetId(third.id, root.id);
92 92
93 original.set_needs_update(true); 93 original.set_needs_update(true);
94 94
95 original.set_page_scale_factor(0.5f); 95 original.set_page_scale_factor(0.5f);
96 original.set_device_scale_factor(0.6f); 96 original.set_device_scale_factor(0.6f);
97 gfx::Transform transform = 97 gfx::Transform transform =
98 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,
99 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);
100 original.SetDeviceTransformScaleFactor(transform); 100 original.SetDeviceTransformScaleFactor(transform);
101 original.AddNodeAffectedByInnerViewportBoundsDelta(0); 101 original.AddNodeAffectedByInnerViewportBoundsDelta(0);
102 original.AddNodeAffectedByOuterViewportBoundsDelta(1); 102 original.AddNodeAffectedByOuterViewportBoundsDelta(1);
103 103
104 proto::PropertyTree proto; 104 proto::PropertyTree proto;
105 original.ToProtobuf(&proto); 105 original.ToProtobuf(&proto);
106 TransformTree result; 106 TransformTree result;
107 std::unordered_map<int, int> transform_id_to_index_map; 107 std::unordered_map<int, int> transform_id_to_index_map;
108 result.FromProtobuf(proto, &transform_id_to_index_map); 108 result.FromProtobuf(proto, &transform_id_to_index_map);
109 109
110 EXPECT_EQ(transform_id_to_index_map[1], 0); 110 EXPECT_EQ(1, transform_id_to_index_map[1]);
111 EXPECT_EQ(transform_id_to_index_map[2], 1); 111 EXPECT_EQ(2, transform_id_to_index_map[2]);
112 EXPECT_EQ(transform_id_to_index_map[3], 2); 112 EXPECT_EQ(3, transform_id_to_index_map[3]);
113 EXPECT_EQ(original, result); 113 EXPECT_EQ(original, result);
114 } 114 }
115 115
116 TEST(PropertyTreeSerializationTest, ClipNodeDataSerialization) { 116 TEST(PropertyTreeSerializationTest, ClipNodeDataSerialization) {
117 ClipNodeData original; 117 ClipNodeData original;
118 original.clip = gfx::RectF(0.5f, 0.5f); 118 original.clip = gfx::RectF(0.5f, 0.5f);
119 original.combined_clip_in_target_space = gfx::RectF(0.6f, 0.6f); 119 original.combined_clip_in_target_space = gfx::RectF(0.6f, 0.6f);
120 original.clip_in_target_space = gfx::RectF(0.7f, 0.7f); 120 original.clip_in_target_space = gfx::RectF(0.7f, 0.7f);
121 original.transform_id = 2; 121 original.transform_id = 2;
122 original.target_id = 3; 122 original.target_id = 3;
(...skipping 21 matching lines...) Expand all
144 proto::TreeNode proto; 144 proto::TreeNode proto;
145 original.ToProtobuf(&proto); 145 original.ToProtobuf(&proto);
146 ClipNode result; 146 ClipNode result;
147 result.FromProtobuf(proto); 147 result.FromProtobuf(proto);
148 148
149 EXPECT_EQ(original, result); 149 EXPECT_EQ(original, result);
150 } 150 }
151 151
152 TEST(PropertyTreeSerializationTest, ClipTreeSerialization) { 152 TEST(PropertyTreeSerializationTest, ClipTreeSerialization) {
153 ClipTree original; 153 ClipTree original;
154 ClipNode& root = *original.Node(0); 154 ClipNode root;
155 root.owner_id = 1; 155 root.owner_id = 1;
156 root.data.transform_id = 2; 156 root.data.transform_id = 2;
157 root.data.target_id = 1; 157 root.data.target_id = 1;
158 ClipNode second; 158 ClipNode second;
159 second.owner_id = 2; 159 second.owner_id = 2;
160 second.data.transform_id = 4; 160 second.data.transform_id = 4;
161 second.data.applies_local_clip = true; 161 second.data.applies_local_clip = true;
162 ClipNode third; 162 ClipNode third;
163 third.owner_id = 3; 163 third.owner_id = 3;
164 third.data.target_id = 3; 164 third.data.target_id = 3;
165 third.data.target_is_clipped = false; 165 third.data.target_is_clipped = false;
166 166
167 original.Insert(root, -1);
167 original.Insert(second, 0); 168 original.Insert(second, 0);
168 original.Insert(third, 1); 169 original.Insert(third, 1);
169 original.set_needs_update(true); 170 original.set_needs_update(true);
170 171
171 proto::PropertyTree proto; 172 proto::PropertyTree proto;
172 original.ToProtobuf(&proto); 173 original.ToProtobuf(&proto);
173 ClipTree result; 174 ClipTree result;
174 std::unordered_map<int, int> clip_id_to_index_map; 175 std::unordered_map<int, int> clip_id_to_index_map;
175 result.FromProtobuf(proto, &clip_id_to_index_map); 176 result.FromProtobuf(proto, &clip_id_to_index_map);
176 177
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after
208 proto::TreeNode proto; 209 proto::TreeNode proto;
209 original.ToProtobuf(&proto); 210 original.ToProtobuf(&proto);
210 EffectNode result; 211 EffectNode result;
211 result.FromProtobuf(proto); 212 result.FromProtobuf(proto);
212 213
213 EXPECT_EQ(original, result); 214 EXPECT_EQ(original, result);
214 } 215 }
215 216
216 TEST(PropertyTreeSerializationTest, EffectTreeSerialization) { 217 TEST(PropertyTreeSerializationTest, EffectTreeSerialization) {
217 EffectTree original; 218 EffectTree original;
218 EffectNode& root = *original.Node(0); 219 EffectNode root;
219 root.owner_id = 5; 220 root.owner_id = 5;
220 root.data.transform_id = 2; 221 root.data.transform_id = 2;
221 root.data.clip_id = 1; 222 root.data.clip_id = 1;
222 EffectNode second; 223 EffectNode second;
223 second.owner_id = 6; 224 second.owner_id = 6;
224 second.data.transform_id = 4; 225 second.data.transform_id = 4;
225 second.data.opacity = true; 226 second.data.opacity = true;
226 second.data.mask_layer_id = 32; 227 second.data.mask_layer_id = 32;
227 EffectNode third; 228 EffectNode third;
228 third.owner_id = 7; 229 third.owner_id = 7;
229 third.data.clip_id = 3; 230 third.data.clip_id = 3;
230 third.data.replica_layer_id = 44; 231 third.data.replica_layer_id = 44;
231 third.data.replica_mask_layer_id = 45; 232 third.data.replica_mask_layer_id = 45;
232 third.data.has_render_surface = false; 233 third.data.has_render_surface = false;
233 234
235 original.Insert(root, -1);
234 original.Insert(second, 0); 236 original.Insert(second, 0);
235 original.Insert(third, 1); 237 original.Insert(third, 1);
236 original.AddMaskOrReplicaLayerId(32); 238 original.AddMaskOrReplicaLayerId(32);
237 original.AddMaskOrReplicaLayerId(44); 239 original.AddMaskOrReplicaLayerId(44);
238 original.AddMaskOrReplicaLayerId(45); 240 original.AddMaskOrReplicaLayerId(45);
239 original.set_needs_update(true); 241 original.set_needs_update(true);
240 242
241 proto::PropertyTree proto; 243 proto::PropertyTree proto;
242 original.ToProtobuf(&proto); 244 original.ToProtobuf(&proto);
243 EffectTree result; 245 EffectTree result;
(...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after
281 ScrollNode result; 283 ScrollNode result;
282 result.FromProtobuf(proto); 284 result.FromProtobuf(proto);
283 285
284 EXPECT_EQ(original, result); 286 EXPECT_EQ(original, result);
285 } 287 }
286 288
287 TEST(PropertyTreeSerializationTest, ScrollTreeSerialization) { 289 TEST(PropertyTreeSerializationTest, ScrollTreeSerialization) {
288 PropertyTrees property_trees; 290 PropertyTrees property_trees;
289 property_trees.is_main_thread = true; 291 property_trees.is_main_thread = true;
290 ScrollTree& original = property_trees.scroll_tree; 292 ScrollTree& original = property_trees.scroll_tree;
293 ScrollNode root;
294 original.Insert(root, -1);
291 ScrollNode second; 295 ScrollNode second;
292 second.owner_id = 10; 296 second.owner_id = 10;
293 second.data.scrollable = true; 297 second.data.scrollable = true;
294 second.data.bounds = gfx::Size(15, 15); 298 second.data.bounds = gfx::Size(15, 15);
295 ScrollNode third; 299 ScrollNode third;
296 third.owner_id = 20; 300 third.owner_id = 20;
297 third.data.contains_non_fast_scrollable_region = true; 301 third.data.contains_non_fast_scrollable_region = true;
298 302
299 original.Insert(second, 0); 303 original.Insert(second, 0);
300 original.Insert(third, 1); 304 original.Insert(third, 1);
301 305
302 original.set_currently_scrolling_node(1); 306 original.set_currently_scrolling_node(1);
303 original.SetScrollOffset(1, gfx::ScrollOffset(1, 2)); 307 original.SetScrollOffset(1, gfx::ScrollOffset(1, 2));
304 308
305 proto::PropertyTree proto; 309 proto::PropertyTree proto;
306 original.ToProtobuf(&proto); 310 original.ToProtobuf(&proto);
307 ScrollTree result; 311 ScrollTree result;
308 std::unordered_map<int, int> scroll_id_to_index_map; 312 std::unordered_map<int, int> scroll_id_to_index_map;
309 result.FromProtobuf(proto, &scroll_id_to_index_map); 313 result.FromProtobuf(proto, &scroll_id_to_index_map);
310 314
311 EXPECT_EQ(original, result); 315 EXPECT_EQ(original, result);
312 EXPECT_EQ(scroll_id_to_index_map[10], 1); 316 EXPECT_EQ(scroll_id_to_index_map[10], 1);
313 EXPECT_EQ(scroll_id_to_index_map[20], 2); 317 EXPECT_EQ(scroll_id_to_index_map[20], 2);
314 318
315 original.clear(); 319 original.clear();
320 ScrollNode root2;
321 original.Insert(root, -1);
316 original.set_currently_scrolling_node(0); 322 original.set_currently_scrolling_node(0);
317 original.SetScrollOffset(2, gfx::ScrollOffset(1, 2)); 323 original.SetScrollOffset(2, gfx::ScrollOffset(1, 2));
318 324
319 proto::PropertyTree proto2; 325 proto::PropertyTree proto2;
320 original.ToProtobuf(&proto2); 326 original.ToProtobuf(&proto2);
321 result = ScrollTree(); 327 result = ScrollTree();
322 scroll_id_to_index_map.clear(); 328 scroll_id_to_index_map.clear();
323 result.FromProtobuf(proto2, &scroll_id_to_index_map); 329 result.FromProtobuf(proto2, &scroll_id_to_index_map);
324 330
325 EXPECT_EQ(original, result); 331 EXPECT_EQ(original, result);
326 } 332 }
327 333
328 TEST(PropertyTreeSerializationTest, PropertyTrees) { 334 TEST(PropertyTreeSerializationTest, PropertyTrees) {
329 PropertyTrees original; 335 PropertyTrees original;
330 TransformNode transform_node1 = TransformNode(); 336 TransformNode transform_node1 = TransformNode();
331 transform_node1.owner_id = 10; 337 transform_node1.owner_id = 10;
332 transform_node1.id = original.transform_tree.Insert(transform_node1, 0); 338 transform_node1.id = original.transform_tree.Insert(
339 transform_node1, TransformTree::kDeviceNodeId);
333 TransformNode transform_node2 = TransformNode(); 340 TransformNode transform_node2 = TransformNode();
334 transform_node2.owner_id = 20; 341 transform_node2.owner_id = 20;
335 transform_node2.id = original.transform_tree.Insert(transform_node2, 1); 342 transform_node2.id =
336 original.transform_id_to_index_map[10] = 1; 343 original.transform_tree.Insert(transform_node2, transform_node1.id);
337 original.transform_id_to_index_map[20] = 2; 344 original.transform_id_to_index_map[10] = transform_node1.id;
345 original.transform_id_to_index_map[20] = transform_node2.id;
338 346
339 ClipNode clip_node1 = ClipNode(); 347 ClipNode clip_node1 = ClipNode();
340 clip_node1.owner_id = 10; 348 clip_node1.owner_id = 10;
341 clip_node1.id = original.clip_tree.Insert(clip_node1, 0); 349 clip_node1.id =
350 original.clip_tree.Insert(clip_node1, ClipTree::kInvalidNodeId);
342 ClipNode clip_node2 = ClipNode(); 351 ClipNode clip_node2 = ClipNode();
343 clip_node2.owner_id = 22; 352 clip_node2.owner_id = 22;
344 clip_node2.id = original.clip_tree.Insert(clip_node2, 1); 353 clip_node2.id = original.clip_tree.Insert(clip_node2, clip_node1.id);
345 original.clip_id_to_index_map[10] = 1; 354 original.clip_id_to_index_map[10] = clip_node1.id;
346 original.clip_id_to_index_map[22] = 2; 355 original.clip_id_to_index_map[22] = clip_node2.id;
347 356
348 EffectNode effect_node1 = EffectNode(); 357 EffectNode effect_node1 = EffectNode();
349 effect_node1.owner_id = 11; 358 effect_node1.owner_id = 11;
350 effect_node1.id = original.effect_tree.Insert(effect_node1, 0); 359 effect_node1.id =
360 original.effect_tree.Insert(effect_node1, EffectTree::kInvalidNodeId);
351 EffectNode effect_node2 = EffectNode(); 361 EffectNode effect_node2 = EffectNode();
352 effect_node2.owner_id = 23; 362 effect_node2.owner_id = 23;
353 effect_node2.id = original.effect_tree.Insert(effect_node2, 1); 363 effect_node2.id = original.effect_tree.Insert(effect_node2, effect_node1.id);
354 original.effect_id_to_index_map[11] = 1; 364 original.effect_id_to_index_map[11] = effect_node1.id;
355 original.effect_id_to_index_map[23] = 2; 365 original.effect_id_to_index_map[23] = effect_node2.id;
356 366
357 ScrollNode scroll_node1 = ScrollNode(); 367 ScrollNode scroll_node1 = ScrollNode();
358 scroll_node1.owner_id = 10; 368 scroll_node1.owner_id = 10;
359 scroll_node1.id = original.scroll_tree.Insert(scroll_node1, 0); 369 scroll_node1.id =
370 original.scroll_tree.Insert(scroll_node1, ScrollTree::kInvalidNodeId);
360 ScrollNode scroll_node2 = ScrollNode(); 371 ScrollNode scroll_node2 = ScrollNode();
361 scroll_node2.owner_id = 20; 372 scroll_node2.owner_id = 20;
362 scroll_node2.id = original.scroll_tree.Insert(scroll_node2, 1); 373 scroll_node2.id = original.scroll_tree.Insert(scroll_node2, scroll_node1.id);
363 original.scroll_id_to_index_map[10] = 1; 374 original.scroll_id_to_index_map[10] = scroll_node1.id;
364 original.scroll_id_to_index_map[20] = 2; 375 original.scroll_id_to_index_map[20] = scroll_node2.id;
365 376
366 original.needs_rebuild = false; 377 original.needs_rebuild = false;
367 original.non_root_surfaces_enabled = false; 378 original.non_root_surfaces_enabled = false;
368 original.sequence_number = 3; 379 original.sequence_number = 3;
369 380
370 proto::PropertyTrees proto; 381 proto::PropertyTrees proto;
371 original.ToProtobuf(&proto); 382 original.ToProtobuf(&proto);
372 PropertyTrees result; 383 PropertyTrees result;
373 result.FromProtobuf(proto); 384 result.FromProtobuf(proto);
374 385
(...skipping 54 matching lines...) Expand 10 before | Expand all | Expand 10 after
429 440
430 #define DIRECT_AND_SERIALIZED_PROPERTY_TREE_TEST_F(TEST_FIXTURE_NAME) \ 441 #define DIRECT_AND_SERIALIZED_PROPERTY_TREE_TEST_F(TEST_FIXTURE_NAME) \
431 DIRECT_PROPERTY_TREE_TEST_F(TEST_FIXTURE_NAME); \ 442 DIRECT_PROPERTY_TREE_TEST_F(TEST_FIXTURE_NAME); \
432 SERIALIZED_PROPERTY_TREE_TEST_F(TEST_FIXTURE_NAME) 443 SERIALIZED_PROPERTY_TREE_TEST_F(TEST_FIXTURE_NAME)
433 444
434 class PropertyTreeTestComputeTransformRoot : public PropertyTreeTest { 445 class PropertyTreeTestComputeTransformRoot : public PropertyTreeTest {
435 protected: 446 protected:
436 void StartTest() override { 447 void StartTest() override {
437 PropertyTrees property_trees; 448 PropertyTrees property_trees;
438 TransformTree& tree = property_trees.transform_tree; 449 TransformTree& tree = property_trees.transform_tree;
439 TransformNode& root = *tree.Node(0); 450 TransformNode root;
440 root.id = 0;
441 root.data.local.Translate(2, 2); 451 root.data.local.Translate(2, 2);
442 tree.SetTargetId(root.id, 0); 452 root.id = tree.Insert(root, TransformTree::kDeviceNodeId);
453 tree.SetTargetId(root.id, TransformTree::kDeviceNodeId);
443 SetupTransformTreeForTest(&tree); 454 SetupTransformTreeForTest(&tree);
444 tree.UpdateTransforms(0); 455 tree.UpdateTransforms(root.id);
445 456
446 gfx::Transform expected; 457 gfx::Transform expected;
447 gfx::Transform transform; 458 gfx::Transform transform;
448 bool success = tree.ComputeTransform(0, 0, &transform); 459 bool success = tree.ComputeTransform(root.id, root.id, &transform);
449 EXPECT_TRUE(success); 460 EXPECT_TRUE(success);
450 EXPECT_TRANSFORMATION_MATRIX_EQ(expected, transform); 461 EXPECT_TRANSFORMATION_MATRIX_EQ(expected, transform);
451 462
452 transform.MakeIdentity(); 463 transform.MakeIdentity();
453 expected.Translate(2, 2); 464 expected.Translate(2, 2);
454 success = tree.ComputeTransform(0, -1, &transform); 465 success = tree.ComputeTransform(root.id, TransformTree::kDeviceNodeId,
466 &transform);
455 EXPECT_TRUE(success); 467 EXPECT_TRUE(success);
456 EXPECT_TRANSFORMATION_MATRIX_EQ(expected, transform); 468 EXPECT_TRANSFORMATION_MATRIX_EQ(expected, transform);
457 469
458 transform.MakeIdentity(); 470 transform.MakeIdentity();
459 expected.MakeIdentity(); 471 expected.MakeIdentity();
460 expected.Translate(-2, -2); 472 expected.Translate(-2, -2);
461 success = tree.ComputeTransform(-1, 0, &transform); 473 success = tree.ComputeTransform(TransformTree::kDeviceNodeId, root.id,
474 &transform);
462 EXPECT_TRUE(success); 475 EXPECT_TRUE(success);
463 EXPECT_TRANSFORMATION_MATRIX_EQ(expected, transform); 476 EXPECT_TRANSFORMATION_MATRIX_EQ(expected, transform);
464 } 477 }
465 }; 478 };
466 479
467 DIRECT_AND_SERIALIZED_PROPERTY_TREE_TEST_F( 480 DIRECT_AND_SERIALIZED_PROPERTY_TREE_TEST_F(
468 PropertyTreeTestComputeTransformRoot); 481 PropertyTreeTestComputeTransformRoot);
469 482
470 class PropertyTreeTestComputeTransformChild : public PropertyTreeTest { 483 class PropertyTreeTestComputeTransformChild : public PropertyTreeTest {
471 protected: 484 protected:
472 void StartTest() override { 485 void StartTest() override {
473 PropertyTrees property_trees; 486 PropertyTrees property_trees;
474 TransformTree& tree = property_trees.transform_tree; 487 TransformTree& tree = property_trees.transform_tree;
475 TransformNode& root = *tree.Node(0); 488 TransformNode root;
476 root.data.local.Translate(2, 2); 489 root.data.local.Translate(2, 2);
477 tree.SetTargetId(root.id, 0); 490 root.id = tree.Insert(root, TransformTree::kDeviceNodeId);
478 tree.UpdateTransforms(0); 491 tree.SetTargetId(root.id, TransformTree::kDeviceNodeId);
492 tree.UpdateTransforms(root.id);
479 493
480 TransformNode child; 494 TransformNode child;
481 child.data.local.Translate(3, 3); 495 child.data.local.Translate(3, 3);
482 child.data.source_node_id = 0; 496 child.data.source_node_id = root.id;
483 child.id = tree.Insert(child, 0); 497 child.id = tree.Insert(child, root.id);
484 tree.SetTargetId(child.id, 0); 498 tree.SetTargetId(child.id, root.id);
485 499
486 SetupTransformTreeForTest(&tree); 500 SetupTransformTreeForTest(&tree);
487 tree.UpdateTransforms(1); 501 tree.UpdateTransforms(child.id);
488 502
489 gfx::Transform expected; 503 gfx::Transform expected;
490 gfx::Transform transform; 504 gfx::Transform transform;
491 505
492 expected.Translate(3, 3); 506 expected.Translate(3, 3);
493 bool success = tree.ComputeTransform(1, 0, &transform); 507 bool success = tree.ComputeTransform(child.id, root.id, &transform);
494 EXPECT_TRUE(success); 508 EXPECT_TRUE(success);
495 EXPECT_TRANSFORMATION_MATRIX_EQ(expected, transform); 509 EXPECT_TRANSFORMATION_MATRIX_EQ(expected, transform);
496 510
497 transform.MakeIdentity(); 511 transform.MakeIdentity();
498 expected.MakeIdentity(); 512 expected.MakeIdentity();
499 expected.Translate(-3, -3); 513 expected.Translate(-3, -3);
500 success = tree.ComputeTransform(0, 1, &transform); 514 success = tree.ComputeTransform(root.id, child.id, &transform);
501 EXPECT_TRUE(success); 515 EXPECT_TRUE(success);
502 EXPECT_TRANSFORMATION_MATRIX_EQ(expected, transform); 516 EXPECT_TRANSFORMATION_MATRIX_EQ(expected, transform);
503 517
504 transform.MakeIdentity(); 518 transform.MakeIdentity();
505 expected.MakeIdentity(); 519 expected.MakeIdentity();
506 expected.Translate(5, 5); 520 expected.Translate(5, 5);
507 success = tree.ComputeTransform(1, -1, &transform); 521 success = tree.ComputeTransform(child.id, TransformTree::kDeviceNodeId,
522 &transform);
508 EXPECT_TRUE(success); 523 EXPECT_TRUE(success);
509 EXPECT_TRANSFORMATION_MATRIX_EQ(expected, transform); 524 EXPECT_TRANSFORMATION_MATRIX_EQ(expected, transform);
510 525
511 transform.MakeIdentity(); 526 transform.MakeIdentity();
512 expected.MakeIdentity(); 527 expected.MakeIdentity();
513 expected.Translate(-5, -5); 528 expected.Translate(-5, -5);
514 success = tree.ComputeTransform(-1, 1, &transform); 529 success = tree.ComputeTransform(TransformTree::kDeviceNodeId, child.id,
530 &transform);
515 EXPECT_TRUE(success); 531 EXPECT_TRUE(success);
516 EXPECT_TRANSFORMATION_MATRIX_EQ(expected, transform); 532 EXPECT_TRANSFORMATION_MATRIX_EQ(expected, transform);
517 } 533 }
518 }; 534 };
519 535
520 DIRECT_AND_SERIALIZED_PROPERTY_TREE_TEST_F( 536 DIRECT_AND_SERIALIZED_PROPERTY_TREE_TEST_F(
521 PropertyTreeTestComputeTransformChild); 537 PropertyTreeTestComputeTransformChild);
522 538
523 class PropertyTreeTestComputeTransformSibling : public PropertyTreeTest { 539 class PropertyTreeTestComputeTransformSibling : public PropertyTreeTest {
524 protected: 540 protected:
525 void StartTest() override { 541 void StartTest() override {
526 PropertyTrees property_trees; 542 PropertyTrees property_trees;
527 TransformTree& tree = property_trees.transform_tree; 543 TransformTree& tree = property_trees.transform_tree;
528 TransformNode& root = *tree.Node(0); 544 TransformNode root;
529 root.data.local.Translate(2, 2); 545 root.data.local.Translate(2, 2);
530 tree.SetTargetId(root.id, 0); 546 root.id = tree.Insert(root, TransformTree::kDeviceNodeId);
531 tree.UpdateTransforms(0); 547 tree.SetTargetId(root.id, TransformTree::kDeviceNodeId);
548 tree.UpdateTransforms(TransformTree::kDeviceNodeId);
532 549
533 TransformNode child; 550 TransformNode child;
534 child.data.local.Translate(3, 3); 551 child.data.local.Translate(3, 3);
535 child.data.source_node_id = 0; 552 child.data.source_node_id = root.id;
536 child.id = tree.Insert(child, 0); 553 child.id = tree.Insert(child, root.id);
537 tree.SetTargetId(child.id, 0); 554 tree.SetTargetId(child.id, root.id);
538 555
539 TransformNode sibling; 556 TransformNode sibling;
540 sibling.data.local.Translate(7, 7); 557 sibling.data.local.Translate(7, 7);
541 sibling.data.source_node_id = 0; 558 sibling.data.source_node_id = root.id;
542 sibling.id = tree.Insert(sibling, 0); 559 sibling.id = tree.Insert(sibling, root.id);
543 tree.SetTargetId(sibling.id, 0); 560 tree.SetTargetId(sibling.id, root.id);
544 561
545 SetupTransformTreeForTest(&tree); 562 SetupTransformTreeForTest(&tree);
546 563
547 tree.UpdateTransforms(1); 564 tree.UpdateTransforms(child.id);
548 tree.UpdateTransforms(2); 565 tree.UpdateTransforms(sibling.id);
549 566
550 gfx::Transform expected; 567 gfx::Transform expected;
551 gfx::Transform transform; 568 gfx::Transform transform;
552 569
553 expected.Translate(4, 4); 570 expected.Translate(4, 4);
554 bool success = tree.ComputeTransform(2, 1, &transform); 571 bool success = tree.ComputeTransform(sibling.id, child.id, &transform);
555 EXPECT_TRUE(success); 572 EXPECT_TRUE(success);
556 EXPECT_TRANSFORMATION_MATRIX_EQ(expected, transform); 573 EXPECT_TRANSFORMATION_MATRIX_EQ(expected, transform);
557 574
558 transform.MakeIdentity(); 575 transform.MakeIdentity();
559 expected.MakeIdentity(); 576 expected.MakeIdentity();
560 expected.Translate(-4, -4); 577 expected.Translate(-4, -4);
561 success = tree.ComputeTransform(1, 2, &transform); 578 success = tree.ComputeTransform(child.id, sibling.id, &transform);
562 EXPECT_TRUE(success); 579 EXPECT_TRUE(success);
563 EXPECT_TRANSFORMATION_MATRIX_EQ(expected, transform); 580 EXPECT_TRANSFORMATION_MATRIX_EQ(expected, transform);
564 } 581 }
565 }; 582 };
566 583
567 DIRECT_AND_SERIALIZED_PROPERTY_TREE_TEST_F( 584 DIRECT_AND_SERIALIZED_PROPERTY_TREE_TEST_F(
568 PropertyTreeTestComputeTransformSibling); 585 PropertyTreeTestComputeTransformSibling);
569 586
570 class PropertyTreeTestComputeTransformSiblingSingularAncestor 587 class PropertyTreeTestComputeTransformSiblingSingularAncestor
571 : public PropertyTreeTest { 588 : public PropertyTreeTest {
572 protected: 589 protected:
573 void StartTest() override { 590 void StartTest() override {
574 // In this test, we have the following tree: 591 // In this test, we have the following tree:
575 // root 592 // root
576 // + singular 593 // + singular
577 // + child 594 // + child
578 // + sibling 595 // + sibling
579 // Since the lowest common ancestor of |child| and |sibling| has a singular 596 // Since the lowest common ancestor of |child| and |sibling| has a singular
580 // transform, we cannot use screen space transforms to compute change of 597 // transform, we cannot use screen space transforms to compute change of
581 // basis 598 // basis
582 // transforms between these nodes. 599 // transforms between these nodes.
583 PropertyTrees property_trees; 600 PropertyTrees property_trees;
584 TransformTree& tree = property_trees.transform_tree; 601 TransformTree& tree = property_trees.transform_tree;
585 TransformNode& root = *tree.Node(0); 602 TransformNode root;
586 root.data.local.Translate(2, 2); 603 root.data.local.Translate(2, 2);
587 tree.SetTargetId(root.id, 0); 604 root.id = tree.Insert(root, TransformTree::kDeviceNodeId);
588 tree.UpdateTransforms(0); 605 tree.SetTargetId(root.id, root.id);
606 tree.UpdateTransforms(root.id);
589 607
590 TransformNode singular; 608 TransformNode singular;
591 singular.data.local.matrix().set(2, 2, 0.0); 609 singular.data.local.matrix().set(2, 2, 0.0);
592 singular.data.source_node_id = 0; 610 singular.data.source_node_id = root.id;
593 singular.id = tree.Insert(singular, 0); 611 singular.id = tree.Insert(singular, root.id);
594 tree.SetTargetId(singular.id, 0); 612 tree.SetTargetId(singular.id, root.id);
595 613
596 TransformNode child; 614 TransformNode child;
597 child.data.local.Translate(3, 3); 615 child.data.local.Translate(3, 3);
598 child.data.source_node_id = 1; 616 child.data.source_node_id = singular.id;
599 child.id = tree.Insert(child, 1); 617 child.id = tree.Insert(child, singular.id);
600 tree.SetTargetId(child.id, 0); 618 tree.SetTargetId(child.id, root.id);
601 619
602 TransformNode sibling; 620 TransformNode sibling;
603 sibling.data.local.Translate(7, 7); 621 sibling.data.local.Translate(7, 7);
604 sibling.data.source_node_id = 1; 622 sibling.data.source_node_id = singular.id;
605 sibling.id = tree.Insert(sibling, 1); 623 sibling.id = tree.Insert(sibling, singular.id);
606 tree.SetTargetId(sibling.id, 0); 624 tree.SetTargetId(sibling.id, root.id);
607 625
608 SetupTransformTreeForTest(&tree); 626 SetupTransformTreeForTest(&tree);
609 627
610 tree.UpdateTransforms(1); 628 tree.UpdateTransforms(singular.id);
611 tree.UpdateTransforms(2); 629 tree.UpdateTransforms(child.id);
612 tree.UpdateTransforms(3); 630 tree.UpdateTransforms(sibling.id);
613 631
614 gfx::Transform expected; 632 gfx::Transform expected;
615 gfx::Transform transform; 633 gfx::Transform transform;
616 634
617 expected.Translate(4, 4); 635 expected.Translate(4, 4);
618 bool success = tree.ComputeTransform(3, 2, &transform); 636 bool success = tree.ComputeTransform(sibling.id, child.id, &transform);
619 EXPECT_TRUE(success); 637 EXPECT_TRUE(success);
620 EXPECT_TRANSFORMATION_MATRIX_EQ(expected, transform); 638 EXPECT_TRANSFORMATION_MATRIX_EQ(expected, transform);
621 639
622 transform.MakeIdentity(); 640 transform.MakeIdentity();
623 expected.MakeIdentity(); 641 expected.MakeIdentity();
624 expected.Translate(-4, -4); 642 expected.Translate(-4, -4);
625 success = tree.ComputeTransform(2, 3, &transform); 643 success = tree.ComputeTransform(child.id, sibling.id, &transform);
626 EXPECT_TRUE(success); 644 EXPECT_TRUE(success);
627 EXPECT_TRANSFORMATION_MATRIX_EQ(expected, transform); 645 EXPECT_TRANSFORMATION_MATRIX_EQ(expected, transform);
628 } 646 }
629 }; 647 };
630 648
631 DIRECT_AND_SERIALIZED_PROPERTY_TREE_TEST_F( 649 DIRECT_AND_SERIALIZED_PROPERTY_TREE_TEST_F(
632 PropertyTreeTestComputeTransformSiblingSingularAncestor); 650 PropertyTreeTestComputeTransformSiblingSingularAncestor);
633 651
634 class PropertyTreeTestTransformsWithFlattening : public PropertyTreeTest { 652 class PropertyTreeTestTransformsWithFlattening : public PropertyTreeTest {
635 protected: 653 protected:
636 void StartTest() override { 654 void StartTest() override {
637 PropertyTrees property_trees; 655 PropertyTrees property_trees;
638 TransformTree& tree = property_trees.transform_tree; 656 TransformTree& tree = property_trees.transform_tree;
639 657
640 int grand_parent = tree.Insert(TransformNode(), 0); 658 int grand_parent =
659 tree.Insert(TransformNode(), TransformTree::kDeviceNodeId);
641 tree.SetContentTargetId(grand_parent, grand_parent); 660 tree.SetContentTargetId(grand_parent, grand_parent);
642 tree.SetTargetId(grand_parent, grand_parent); 661 tree.SetTargetId(grand_parent, grand_parent);
643 tree.Node(grand_parent)->data.source_node_id = 0; 662 tree.Node(grand_parent)->data.source_node_id = TransformTree::kDeviceNodeId;
644 663
645 gfx::Transform rotation_about_x; 664 gfx::Transform rotation_about_x;
646 rotation_about_x.RotateAboutXAxis(15); 665 rotation_about_x.RotateAboutXAxis(15);
647 666
648 int parent = tree.Insert(TransformNode(), grand_parent); 667 int parent = tree.Insert(TransformNode(), grand_parent);
649 tree.Node(parent)->data.needs_sublayer_scale = true; 668 tree.Node(parent)->data.needs_sublayer_scale = true;
650 tree.SetTargetId(parent, grand_parent); 669 tree.SetTargetId(parent, grand_parent);
651 tree.SetContentTargetId(parent, parent); 670 tree.SetContentTargetId(parent, parent);
652 tree.Node(parent)->data.source_node_id = grand_parent; 671 tree.Node(parent)->data.source_node_id = grand_parent;
653 tree.Node(parent)->data.local = rotation_about_x; 672 tree.Node(parent)->data.local = rotation_about_x;
(...skipping 59 matching lines...) Expand 10 before | Expand all | Expand 10 after
713 }; 732 };
714 733
715 DIRECT_AND_SERIALIZED_PROPERTY_TREE_TEST_F( 734 DIRECT_AND_SERIALIZED_PROPERTY_TREE_TEST_F(
716 PropertyTreeTestTransformsWithFlattening); 735 PropertyTreeTestTransformsWithFlattening);
717 736
718 class PropertyTreeTestMultiplicationOrder : public PropertyTreeTest { 737 class PropertyTreeTestMultiplicationOrder : public PropertyTreeTest {
719 protected: 738 protected:
720 void StartTest() override { 739 void StartTest() override {
721 PropertyTrees property_trees; 740 PropertyTrees property_trees;
722 TransformTree& tree = property_trees.transform_tree; 741 TransformTree& tree = property_trees.transform_tree;
723 TransformNode& root = *tree.Node(0); 742 TransformNode root;
724 root.data.local.Translate(2, 2); 743 root.data.local.Translate(2, 2);
725 tree.SetTargetId(root.id, 0); 744 root.id = tree.Insert(root, TransformTree::kDeviceNodeId);
726 tree.UpdateTransforms(0); 745 tree.SetTargetId(root.id, TransformTree::kDeviceNodeId);
746 tree.UpdateTransforms(root.id);
727 747
728 TransformNode child; 748 TransformNode child;
729 child.data.local.Scale(2, 2); 749 child.data.local.Scale(2, 2);
730 child.data.source_node_id = 0; 750 child.data.source_node_id = root.id;
731 child.id = tree.Insert(child, 0); 751 child.id = tree.Insert(child, root.id);
732 tree.SetTargetId(child.id, 0); 752 tree.SetTargetId(child.id, root.id);
733 753
734 SetupTransformTreeForTest(&tree); 754 SetupTransformTreeForTest(&tree);
735 tree.UpdateTransforms(1); 755 tree.UpdateTransforms(child.id);
736 756
737 gfx::Transform expected; 757 gfx::Transform expected;
738 expected.Translate(2, 2); 758 expected.Translate(2, 2);
739 expected.Scale(2, 2); 759 expected.Scale(2, 2);
740 760
741 gfx::Transform transform; 761 gfx::Transform transform;
742 gfx::Transform inverse; 762 gfx::Transform inverse;
743 763
744 bool success = tree.ComputeTransform(1, -1, &transform); 764 bool success = tree.ComputeTransform(child.id, TransformTree::kDeviceNodeId,
765 &transform);
745 EXPECT_TRUE(success); 766 EXPECT_TRUE(success);
746 EXPECT_TRANSFORMATION_MATRIX_EQ(expected, transform); 767 EXPECT_TRANSFORMATION_MATRIX_EQ(expected, transform);
747 768
748 success = tree.ComputeTransform(-1, 1, &inverse); 769 success =
770 tree.ComputeTransform(TransformTree::kDeviceNodeId, child.id, &inverse);
749 EXPECT_TRUE(success); 771 EXPECT_TRUE(success);
750 772
751 transform = transform * inverse; 773 transform = transform * inverse;
752 expected.MakeIdentity(); 774 expected.MakeIdentity();
753 EXPECT_TRANSFORMATION_MATRIX_EQ(expected, transform); 775 EXPECT_TRANSFORMATION_MATRIX_EQ(expected, transform);
754 } 776 }
755 }; 777 };
756 778
757 DIRECT_AND_SERIALIZED_PROPERTY_TREE_TEST_F(PropertyTreeTestMultiplicationOrder); 779 DIRECT_AND_SERIALIZED_PROPERTY_TREE_TEST_F(PropertyTreeTestMultiplicationOrder);
758 780
759 class PropertyTreeTestComputeTransformWithUninvertibleTransform 781 class PropertyTreeTestComputeTransformWithUninvertibleTransform
760 : public PropertyTreeTest { 782 : public PropertyTreeTest {
761 protected: 783 protected:
762 void StartTest() override { 784 void StartTest() override {
763 PropertyTrees property_trees; 785 PropertyTrees property_trees;
764 TransformTree& tree = property_trees.transform_tree; 786 TransformTree& tree = property_trees.transform_tree;
765 TransformNode& root = *tree.Node(0); 787 TransformNode root;
766 tree.SetTargetId(root.id, 0); 788 root.id = tree.Insert(root, TransformTree::kDeviceNodeId);
767 tree.UpdateTransforms(0); 789 tree.SetTargetId(root.id, TransformTree::kDeviceNodeId);
790 tree.UpdateTransforms(root.id);
768 791
769 TransformNode child; 792 TransformNode child;
770 child.data.local.Scale(0, 0); 793 child.data.local.Scale(0, 0);
771 child.data.source_node_id = 0; 794 child.data.source_node_id = root.id;
772 child.id = tree.Insert(child, 0); 795 child.id = tree.Insert(child, root.id);
773 tree.SetTargetId(child.id, 0); 796 tree.SetTargetId(child.id, root.id);
774 797
775 SetupTransformTreeForTest(&tree); 798 SetupTransformTreeForTest(&tree);
776 tree.UpdateTransforms(1); 799 tree.UpdateTransforms(child.id);
777 800
778 gfx::Transform expected; 801 gfx::Transform expected;
779 expected.Scale(0, 0); 802 expected.Scale(0, 0);
780 803
781 gfx::Transform transform; 804 gfx::Transform transform;
782 gfx::Transform inverse; 805 gfx::Transform inverse;
783 806
784 bool success = tree.ComputeTransform(1, 0, &transform); 807 bool success = tree.ComputeTransform(child.id, root.id, &transform);
785 EXPECT_TRUE(success); 808 EXPECT_TRUE(success);
786 EXPECT_TRANSFORMATION_MATRIX_EQ(expected, transform); 809 EXPECT_TRANSFORMATION_MATRIX_EQ(expected, transform);
787 810
788 // To compute this would require inverting the 0 matrix, so we cannot 811 // To compute this would require inverting the 0 matrix, so we cannot
789 // succeed. 812 // succeed.
790 success = tree.ComputeTransform(0, 1, &inverse); 813 success = tree.ComputeTransform(root.id, child.id, &inverse);
791 EXPECT_FALSE(success); 814 EXPECT_FALSE(success);
792 } 815 }
793 }; 816 };
794 817
795 DIRECT_AND_SERIALIZED_PROPERTY_TREE_TEST_F( 818 DIRECT_AND_SERIALIZED_PROPERTY_TREE_TEST_F(
796 PropertyTreeTestComputeTransformWithUninvertibleTransform); 819 PropertyTreeTestComputeTransformWithUninvertibleTransform);
797 820
798 class PropertyTreeTestComputeTransformWithSublayerScale 821 class PropertyTreeTestComputeTransformWithSublayerScale
799 : public PropertyTreeTest { 822 : public PropertyTreeTest {
800 protected: 823 protected:
801 void StartTest() override { 824 void StartTest() override {
802 PropertyTrees property_trees; 825 PropertyTrees property_trees;
803 TransformTree& tree = property_trees.transform_tree; 826 TransformTree& tree = property_trees.transform_tree;
804 TransformNode& root = *tree.Node(0); 827 TransformNode root;
805 root.id = 0; 828 root.id = tree.Insert(root, TransformTree::kDeviceNodeId);
806 tree.SetTargetId(root.id, 0); 829 tree.SetTargetId(root.id, TransformTree::kDeviceNodeId);
807 tree.UpdateTransforms(0); 830 tree.UpdateTransforms(root.id);
808 831
809 TransformNode grand_parent; 832 TransformNode grand_parent;
810 grand_parent.data.local.Scale(2.f, 2.f); 833 grand_parent.data.local.Scale(2.f, 2.f);
811 grand_parent.data.source_node_id = 0; 834 grand_parent.data.source_node_id = root.id;
812 grand_parent.data.needs_sublayer_scale = true; 835 grand_parent.data.needs_sublayer_scale = true;
813 int grand_parent_id = tree.Insert(grand_parent, 0); 836 int grand_parent_id = tree.Insert(grand_parent, root.id);
814 tree.SetTargetId(grand_parent_id, 0); 837 tree.SetTargetId(grand_parent_id, root.id);
815 tree.UpdateTransforms(grand_parent_id); 838 tree.UpdateTransforms(grand_parent_id);
816 839
817 TransformNode parent; 840 TransformNode parent;
818 parent.data.local.Translate(15.f, 15.f); 841 parent.data.local.Translate(15.f, 15.f);
819 parent.data.source_node_id = grand_parent_id; 842 parent.data.source_node_id = grand_parent_id;
820 int parent_id = tree.Insert(parent, grand_parent_id); 843 int parent_id = tree.Insert(parent, grand_parent_id);
821 tree.SetTargetId(parent_id, grand_parent_id); 844 tree.SetTargetId(parent_id, grand_parent_id);
822 tree.UpdateTransforms(parent_id); 845 tree.UpdateTransforms(parent_id);
823 846
824 TransformNode child; 847 TransformNode child;
(...skipping 88 matching lines...) Expand 10 before | Expand all | Expand 10 after
913 936
914 DIRECT_AND_SERIALIZED_PROPERTY_TREE_TEST_F( 937 DIRECT_AND_SERIALIZED_PROPERTY_TREE_TEST_F(
915 PropertyTreeTestComputeTransformWithSublayerScale); 938 PropertyTreeTestComputeTransformWithSublayerScale);
916 939
917 class PropertyTreeTestComputeTransformToTargetWithZeroSublayerScale 940 class PropertyTreeTestComputeTransformToTargetWithZeroSublayerScale
918 : public PropertyTreeTest { 941 : public PropertyTreeTest {
919 protected: 942 protected:
920 void StartTest() override { 943 void StartTest() override {
921 PropertyTrees property_trees; 944 PropertyTrees property_trees;
922 TransformTree& tree = property_trees.transform_tree; 945 TransformTree& tree = property_trees.transform_tree;
923 TransformNode& root = *tree.Node(0); 946 TransformNode root;
924 tree.SetTargetId(root.id, 0); 947 root.id = tree.Insert(root, TransformTree::kDeviceNodeId);
925 tree.UpdateTransforms(0); 948 tree.SetTargetId(root.id, TransformTree::kDeviceNodeId);
949 tree.UpdateTransforms(root.id);
926 950
927 TransformNode grand_parent; 951 TransformNode grand_parent;
928 grand_parent.data.local.Scale(2.f, 0.f); 952 grand_parent.data.local.Scale(2.f, 0.f);
929 grand_parent.data.source_node_id = 0; 953 grand_parent.data.source_node_id = root.id;
930 grand_parent.data.needs_sublayer_scale = true; 954 grand_parent.data.needs_sublayer_scale = true;
931 int grand_parent_id = tree.Insert(grand_parent, 0); 955 int grand_parent_id = tree.Insert(grand_parent, root.id);
932 tree.SetTargetId(grand_parent_id, 0); 956 tree.SetTargetId(grand_parent_id, root.id);
933 tree.SetContentTargetId(grand_parent_id, grand_parent_id); 957 tree.SetContentTargetId(grand_parent_id, grand_parent_id);
934 tree.UpdateTransforms(grand_parent_id); 958 tree.UpdateTransforms(grand_parent_id);
935 959
936 TransformNode parent; 960 TransformNode parent;
937 parent.data.local.Translate(1.f, 1.f); 961 parent.data.local.Translate(1.f, 1.f);
938 parent.data.source_node_id = grand_parent_id; 962 parent.data.source_node_id = grand_parent_id;
939 int parent_id = tree.Insert(parent, grand_parent_id); 963 int parent_id = tree.Insert(parent, grand_parent_id);
940 tree.SetTargetId(parent_id, grand_parent_id); 964 tree.SetTargetId(parent_id, grand_parent_id);
941 tree.SetContentTargetId(parent_id, grand_parent_id); 965 tree.SetContentTargetId(parent_id, grand_parent_id);
942 tree.UpdateTransforms(parent_id); 966 tree.UpdateTransforms(parent_id);
(...skipping 47 matching lines...) Expand 10 before | Expand all | Expand 10 after
990 class PropertyTreeTestFlatteningWhenDestinationHasOnlyFlatAncestors 1014 class PropertyTreeTestFlatteningWhenDestinationHasOnlyFlatAncestors
991 : public PropertyTreeTest { 1015 : public PropertyTreeTest {
992 protected: 1016 protected:
993 void StartTest() override { 1017 void StartTest() override {
994 // This tests that flattening is performed correctly when 1018 // This tests that flattening is performed correctly when
995 // destination and its ancestors are flat, but there are 3d transforms 1019 // destination and its ancestors are flat, but there are 3d transforms
996 // and flattening between the source and destination. 1020 // and flattening between the source and destination.
997 PropertyTrees property_trees; 1021 PropertyTrees property_trees;
998 TransformTree& tree = property_trees.transform_tree; 1022 TransformTree& tree = property_trees.transform_tree;
999 1023
1000 int parent = tree.Insert(TransformNode(), 0); 1024 int parent = tree.Insert(TransformNode(), TransformTree::kDeviceNodeId);
1001 tree.SetContentTargetId(parent, parent); 1025 tree.SetContentTargetId(parent, parent);
1002 tree.SetTargetId(parent, parent); 1026 tree.SetTargetId(parent, parent);
1003 tree.Node(parent)->data.source_node_id = 0; 1027 tree.Node(parent)->data.source_node_id = TransformTree::kDeviceNodeId;
1004 tree.Node(parent)->data.local.Translate(2, 2); 1028 tree.Node(parent)->data.local.Translate(2, 2);
1005 1029
1006 gfx::Transform rotation_about_x; 1030 gfx::Transform rotation_about_x;
1007 rotation_about_x.RotateAboutXAxis(15); 1031 rotation_about_x.RotateAboutXAxis(15);
1008 1032
1009 int child = tree.Insert(TransformNode(), parent); 1033 int child = tree.Insert(TransformNode(), parent);
1010 tree.SetContentTargetId(child, child); 1034 tree.SetContentTargetId(child, child);
1011 tree.SetTargetId(child, child); 1035 tree.SetTargetId(child, child);
1012 tree.Node(child)->data.source_node_id = parent; 1036 tree.Node(child)->data.source_node_id = parent;
1013 tree.Node(child)->data.local = rotation_about_x; 1037 tree.Node(child)->data.local = rotation_about_x;
(...skipping 23 matching lines...) Expand all
1037 DIRECT_AND_SERIALIZED_PROPERTY_TREE_TEST_F( 1061 DIRECT_AND_SERIALIZED_PROPERTY_TREE_TEST_F(
1038 PropertyTreeTestFlatteningWhenDestinationHasOnlyFlatAncestors); 1062 PropertyTreeTestFlatteningWhenDestinationHasOnlyFlatAncestors);
1039 1063
1040 class PropertyTreeTestScreenSpaceOpacityUpdateTest : public PropertyTreeTest { 1064 class PropertyTreeTestScreenSpaceOpacityUpdateTest : public PropertyTreeTest {
1041 protected: 1065 protected:
1042 void StartTest() override { 1066 void StartTest() override {
1043 // This tests that screen space opacity is updated for the subtree when 1067 // This tests that screen space opacity is updated for the subtree when
1044 // opacity of a node changes. 1068 // opacity of a node changes.
1045 EffectTree tree; 1069 EffectTree tree;
1046 1070
1047 int parent = tree.Insert(EffectNode(), 0); 1071 int parent = tree.Insert(EffectNode(), EffectTree::kInvalidNodeId);
1048 int child = tree.Insert(EffectNode(), parent); 1072 int child = tree.Insert(EffectNode(), parent);
1049 SetupEffectTreeForTest(&tree); 1073 SetupEffectTreeForTest(&tree);
1050 1074
1051 EXPECT_EQ(tree.Node(child)->data.screen_space_opacity, 1.f); 1075 EXPECT_EQ(tree.Node(child)->data.screen_space_opacity, 1.f);
1052 tree.Node(parent)->data.opacity = 0.5f; 1076 tree.Node(parent)->data.opacity = 0.5f;
1053 tree.set_needs_update(true); 1077 tree.set_needs_update(true);
1054 SetupEffectTreeForTest(&tree); 1078 SetupEffectTreeForTest(&tree);
1055 draw_property_utils::ComputeEffects(&tree); 1079 draw_property_utils::ComputeEffects(&tree);
1056 EXPECT_EQ(tree.Node(child)->data.screen_space_opacity, 0.5f); 1080 EXPECT_EQ(tree.Node(child)->data.screen_space_opacity, 0.5f);
1057 1081
1058 tree.Node(child)->data.opacity = 0.5f; 1082 tree.Node(child)->data.opacity = 0.5f;
1059 tree.set_needs_update(true); 1083 tree.set_needs_update(true);
1060 SetupEffectTreeForTest(&tree); 1084 SetupEffectTreeForTest(&tree);
1061 draw_property_utils::ComputeEffects(&tree); 1085 draw_property_utils::ComputeEffects(&tree);
1062 EXPECT_EQ(tree.Node(child)->data.screen_space_opacity, 0.25f); 1086 EXPECT_EQ(tree.Node(child)->data.screen_space_opacity, 0.25f);
1063 } 1087 }
1064 }; 1088 };
1065 1089
1066 DIRECT_AND_SERIALIZED_PROPERTY_TREE_TEST_F( 1090 DIRECT_AND_SERIALIZED_PROPERTY_TREE_TEST_F(
1067 PropertyTreeTestScreenSpaceOpacityUpdateTest); 1091 PropertyTreeTestScreenSpaceOpacityUpdateTest);
1068 1092
1069 class PropertyTreeTestNonIntegerTranslationTest : public PropertyTreeTest { 1093 class PropertyTreeTestNonIntegerTranslationTest : public PropertyTreeTest {
1070 protected: 1094 protected:
1071 void StartTest() override { 1095 void StartTest() override {
1072 // This tests that when a node has non-integer translation, the information 1096 // This tests that when a node has non-integer translation, the information
1073 // is propagated to the subtree. 1097 // is propagated to the subtree.
1074 PropertyTrees property_trees; 1098 PropertyTrees property_trees;
1075 TransformTree& tree = property_trees.transform_tree; 1099 TransformTree& tree = property_trees.transform_tree;
1076 1100
1077 int parent = tree.Insert(TransformNode(), 0); 1101 int parent = tree.Insert(TransformNode(), TransformTree::kDeviceNodeId);
1078 tree.SetTargetId(parent, parent); 1102 tree.SetTargetId(parent, parent);
1079 tree.Node(parent)->data.local.Translate(1.5f, 1.5f); 1103 tree.Node(parent)->data.local.Translate(1.5f, 1.5f);
1080 1104
1081 int child = tree.Insert(TransformNode(), parent); 1105 int child = tree.Insert(TransformNode(), parent);
1082 tree.SetTargetId(child, parent); 1106 tree.SetTargetId(child, parent);
1083 tree.Node(child)->data.local.Translate(1, 1); 1107 tree.Node(child)->data.local.Translate(1, 1);
1084 tree.set_needs_update(true); 1108 tree.set_needs_update(true);
1085 SetupTransformTreeForTest(&tree); 1109 SetupTransformTreeForTest(&tree);
1086 draw_property_utils::ComputeTransforms(&tree); 1110 draw_property_utils::ComputeTransforms(&tree);
1087 EXPECT_FALSE(tree.Node(parent) 1111 EXPECT_FALSE(tree.Node(parent)
(...skipping 27 matching lines...) Expand all
1115 PropertyTreeTestNonIntegerTranslationTest); 1139 PropertyTreeTestNonIntegerTranslationTest);
1116 1140
1117 class PropertyTreeTestSingularTransformSnapTest : public PropertyTreeTest { 1141 class PropertyTreeTestSingularTransformSnapTest : public PropertyTreeTest {
1118 protected: 1142 protected:
1119 void StartTest() override { 1143 void StartTest() override {
1120 // This tests that to_target transform is not snapped when it has a singular 1144 // This tests that to_target transform is not snapped when it has a singular
1121 // transform. 1145 // transform.
1122 PropertyTrees property_trees; 1146 PropertyTrees property_trees;
1123 TransformTree& tree = property_trees.transform_tree; 1147 TransformTree& tree = property_trees.transform_tree;
1124 1148
1125 int parent = tree.Insert(TransformNode(), 0); 1149 int parent = tree.Insert(TransformNode(), TransformTree::kDeviceNodeId);
1126 tree.SetTargetId(parent, parent); 1150 tree.SetTargetId(parent, parent);
1127 tree.Node(parent)->data.scrolls = true; 1151 tree.Node(parent)->data.scrolls = true;
1128 1152
1129 int child = tree.Insert(TransformNode(), parent); 1153 int child = tree.Insert(TransformNode(), parent);
1130 TransformNode* child_node = tree.Node(child); 1154 TransformNode* child_node = tree.Node(child);
1131 tree.SetTargetId(child, parent); 1155 tree.SetTargetId(child, parent);
1132 child_node->data.scrolls = true; 1156 child_node->data.scrolls = true;
1133 child_node->data.local.Scale3d(6.0f, 6.0f, 0.0f); 1157 child_node->data.local.Scale3d(6.0f, 6.0f, 0.0f);
1134 child_node->data.local.Translate(1.3f, 1.3f); 1158 child_node->data.local.Translate(1.3f, 1.3f);
1135 tree.set_needs_update(true); 1159 tree.set_needs_update(true);
(...skipping 19 matching lines...) Expand all
1155 1179
1156 DIRECT_AND_SERIALIZED_PROPERTY_TREE_TEST_F( 1180 DIRECT_AND_SERIALIZED_PROPERTY_TREE_TEST_F(
1157 PropertyTreeTestSingularTransformSnapTest); 1181 PropertyTreeTestSingularTransformSnapTest);
1158 1182
1159 #undef DIRECT_AND_SERIALIZED_PROPERTY_TREE_TEST_F 1183 #undef DIRECT_AND_SERIALIZED_PROPERTY_TREE_TEST_F
1160 #undef SERIALIZED_PROPERTY_TREE_TEST_F 1184 #undef SERIALIZED_PROPERTY_TREE_TEST_F
1161 #undef DIRECT_PROPERTY_TREE_TEST_F 1185 #undef DIRECT_PROPERTY_TREE_TEST_F
1162 1186
1163 } // namespace 1187 } // namespace
1164 } // namespace cc 1188 } // namespace cc
OLDNEW
« cc/trees/property_tree.cc ('K') | « cc/trees/property_tree_builder.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698