OLD | NEW |
1 // Copyright 2014 The Chromium Authors. All rights reserved. | 1 // Copyright 2014 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include "cc/trees/property_tree.h" | 5 #include "cc/trees/property_tree.h" |
6 | 6 |
7 #include "cc/input/main_thread_scrolling_reason.h" | 7 #include "cc/input/main_thread_scrolling_reason.h" |
8 #include "cc/proto/property_tree.pb.h" | 8 #include "cc/proto/property_tree.pb.h" |
9 #include "cc/test/geometry_test_utils.h" | 9 #include "cc/test/geometry_test_utils.h" |
10 #include "cc/trees/draw_property_utils.h" | 10 #include "cc/trees/draw_property_utils.h" |
(...skipping 54 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
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 Loading... |
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 Loading... |
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 Loading... |
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 Loading... |
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 Loading... |
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 Loading... |
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 Loading... |
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 Loading... |
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 Loading... |
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 Loading... |
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 |
OLD | NEW |