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

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: rebase Created 4 years, 5 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
« no previous file with comments | « 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/clip_node.h" 10 #include "cc/trees/clip_node.h"
(...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after
52 52
53 proto::TreeNode proto; 53 proto::TreeNode proto;
54 original.ToProtobuf(&proto); 54 original.ToProtobuf(&proto);
55 TransformNode result; 55 TransformNode result;
56 result.FromProtobuf(proto); 56 result.FromProtobuf(proto);
57 57
58 EXPECT_EQ(original, result); 58 EXPECT_EQ(original, result);
59 } 59 }
60 60
61 TEST(PropertyTreeSerializationTest, TransformTreeSerialization) { 61 TEST(PropertyTreeSerializationTest, TransformTreeSerialization) {
62 PropertyTrees property_trees; 62 TransformTree original;
63 TransformTree& original = property_trees.transform_tree; 63 TransformNode root;
64 TransformNode& root = *original.Node(0);
65 root.id = 0;
66 root.owner_id = 1; 64 root.owner_id = 1;
67 original.SetTargetId(root.id, 3); 65 root.id = original.Insert(root, TransformTree::kDeviceNodeId);
68 original.SetContentTargetId(root.id, 4); 66 original.SetTargetId(root.id, TransformTree::kDeviceNodeId);
67 original.SetContentTargetId(root.id, TransformTree::kDeviceNodeId);
69 TransformNode second; 68 TransformNode second;
70 second.owner_id = 2; 69 second.owner_id = 2;
71 second.local.Translate3d(2.f, 2.f, 0.f); 70 second.local.Translate3d(2.f, 2.f, 0.f);
72 second.source_node_id = 0; 71 second.source_node_id = root.id;
73 second.id = original.Insert(second, 0); 72 second.id = original.Insert(second, root.id);
74 original.SetTargetId(second.id, 0); 73 original.SetTargetId(second.id, root.id);
75 TransformNode third; 74 TransformNode third;
76 third.owner_id = 3; 75 third.owner_id = 3;
77 third.scrolls = true; 76 third.scrolls = true;
78 third.source_node_id = 1; 77 third.source_node_id = root.id;
79 third.id = original.Insert(third, 1); 78 third.id = original.Insert(third, root.id);
80 original.SetTargetId(third.id, 0); 79 original.SetTargetId(third.id, root.id);
81 80
82 original.set_needs_update(true); 81 original.set_needs_update(true);
83 82
84 original.set_page_scale_factor(0.5f); 83 original.set_page_scale_factor(0.5f);
85 original.set_device_scale_factor(0.6f); 84 original.set_device_scale_factor(0.6f);
86 gfx::Transform transform = 85 gfx::Transform transform =
87 gfx::Transform(1.05f, 2.15f, 3.14f, 4.13f, 5.12f, 6.11f, 7.1f, 8.9f, 9.8f, 86 gfx::Transform(1.05f, 2.15f, 3.14f, 4.13f, 5.12f, 6.11f, 7.1f, 8.9f, 9.8f,
88 10.7f, 11.6f, 12.5f, 13.4f, 14.3f, 15.2f, 16.1f); 87 10.7f, 11.6f, 12.5f, 13.4f, 14.3f, 15.2f, 16.1f);
89 original.SetDeviceTransformScaleFactor(transform); 88 original.SetDeviceTransformScaleFactor(transform);
90 original.AddNodeAffectedByInnerViewportBoundsDelta(0); 89 original.AddNodeAffectedByInnerViewportBoundsDelta(0);
91 original.AddNodeAffectedByOuterViewportBoundsDelta(1); 90 original.AddNodeAffectedByOuterViewportBoundsDelta(1);
92 91
93 proto::PropertyTree proto; 92 proto::PropertyTree proto;
94 original.ToProtobuf(&proto); 93 original.ToProtobuf(&proto);
95 TransformTree result; 94 TransformTree result;
96 std::unordered_map<int, int> transform_id_to_index_map; 95 std::unordered_map<int, int> transform_id_to_index_map;
97 result.FromProtobuf(proto, &transform_id_to_index_map); 96 result.FromProtobuf(proto, &transform_id_to_index_map);
98 97
99 EXPECT_EQ(transform_id_to_index_map[1], 0); 98 EXPECT_EQ(1, transform_id_to_index_map[1]);
100 EXPECT_EQ(transform_id_to_index_map[2], 1); 99 EXPECT_EQ(2, transform_id_to_index_map[2]);
101 EXPECT_EQ(transform_id_to_index_map[3], 2); 100 EXPECT_EQ(3, transform_id_to_index_map[3]);
102 EXPECT_EQ(original, result); 101 EXPECT_EQ(original, result);
103 } 102 }
104 103
105 TEST(PropertyTreeSerializationTest, ClipNodeSerialization) { 104 TEST(PropertyTreeSerializationTest, ClipNodeSerialization) {
106 ClipNode original; 105 ClipNode original;
107 original.id = 3; 106 original.id = 3;
108 original.parent_id = 2; 107 original.parent_id = 2;
109 original.owner_id = 4; 108 original.owner_id = 4;
110 original.clip = gfx::RectF(0.5f, 0.5f); 109 original.clip = gfx::RectF(0.5f, 0.5f);
111 original.combined_clip_in_target_space = gfx::RectF(0.6f, 0.6f); 110 original.combined_clip_in_target_space = gfx::RectF(0.6f, 0.6f);
(...skipping 11 matching lines...) Expand all
123 proto::TreeNode proto; 122 proto::TreeNode proto;
124 original.ToProtobuf(&proto); 123 original.ToProtobuf(&proto);
125 ClipNode result; 124 ClipNode result;
126 result.FromProtobuf(proto); 125 result.FromProtobuf(proto);
127 126
128 EXPECT_EQ(original, result); 127 EXPECT_EQ(original, result);
129 } 128 }
130 129
131 TEST(PropertyTreeSerializationTest, ClipTreeSerialization) { 130 TEST(PropertyTreeSerializationTest, ClipTreeSerialization) {
132 ClipTree original; 131 ClipTree original;
133 ClipNode& root = *original.Node(0); 132 ClipNode root;
134 root.owner_id = 1; 133 root.owner_id = 1;
135 root.transform_id = 2; 134 root.transform_id = 2;
136 root.target_transform_id = 1; 135 root.target_transform_id = 1;
137 root.target_effect_id = 1; 136 root.target_effect_id = 1;
138 ClipNode second; 137 ClipNode second;
139 second.owner_id = 2; 138 second.owner_id = 2;
140 second.transform_id = 4; 139 second.transform_id = 4;
141 second.applies_local_clip = true; 140 second.applies_local_clip = true;
142 ClipNode third; 141 ClipNode third;
143 third.owner_id = 3; 142 third.owner_id = 3;
144 third.target_transform_id = 3; 143 third.target_transform_id = 3;
145 third.target_effect_id = 2; 144 third.target_effect_id = 2;
146 third.target_is_clipped = false; 145 third.target_is_clipped = false;
147 146
147 original.Insert(root, -1);
148 original.Insert(second, 0); 148 original.Insert(second, 0);
149 original.Insert(third, 1); 149 original.Insert(third, 1);
150 original.set_needs_update(true); 150 original.set_needs_update(true);
151 151
152 proto::PropertyTree proto; 152 proto::PropertyTree proto;
153 original.ToProtobuf(&proto); 153 original.ToProtobuf(&proto);
154 ClipTree result; 154 ClipTree result;
155 std::unordered_map<int, int> clip_id_to_index_map; 155 std::unordered_map<int, int> clip_id_to_index_map;
156 result.FromProtobuf(proto, &clip_id_to_index_map); 156 result.FromProtobuf(proto, &clip_id_to_index_map);
157 157
(...skipping 21 matching lines...) Expand all
179 proto::TreeNode proto; 179 proto::TreeNode proto;
180 original.ToProtobuf(&proto); 180 original.ToProtobuf(&proto);
181 EffectNode result; 181 EffectNode result;
182 result.FromProtobuf(proto); 182 result.FromProtobuf(proto);
183 183
184 EXPECT_EQ(original, result); 184 EXPECT_EQ(original, result);
185 } 185 }
186 186
187 TEST(PropertyTreeSerializationTest, EffectTreeSerialization) { 187 TEST(PropertyTreeSerializationTest, EffectTreeSerialization) {
188 EffectTree original; 188 EffectTree original;
189 EffectNode& root = *original.Node(0); 189 EffectNode root;
190 root.owner_id = 5; 190 root.owner_id = 5;
191 root.transform_id = 2; 191 root.transform_id = 2;
192 root.clip_id = 1; 192 root.clip_id = 1;
193 EffectNode second; 193 EffectNode second;
194 second.owner_id = 6; 194 second.owner_id = 6;
195 second.transform_id = 4; 195 second.transform_id = 4;
196 second.opacity = true; 196 second.opacity = true;
197 second.mask_layer_id = 32; 197 second.mask_layer_id = 32;
198 EffectNode third; 198 EffectNode third;
199 third.owner_id = 7; 199 third.owner_id = 7;
200 third.clip_id = 3; 200 third.clip_id = 3;
201 third.replica_layer_id = 44; 201 third.replica_layer_id = 44;
202 third.replica_mask_layer_id = 45; 202 third.replica_mask_layer_id = 45;
203 third.has_render_surface = false; 203 third.has_render_surface = false;
204 204
205 original.Insert(root, -1);
205 original.Insert(second, 0); 206 original.Insert(second, 0);
206 original.Insert(third, 1); 207 original.Insert(third, 1);
207 original.AddMaskOrReplicaLayerId(32); 208 original.AddMaskOrReplicaLayerId(32);
208 original.AddMaskOrReplicaLayerId(44); 209 original.AddMaskOrReplicaLayerId(44);
209 original.AddMaskOrReplicaLayerId(45); 210 original.AddMaskOrReplicaLayerId(45);
210 original.set_needs_update(true); 211 original.set_needs_update(true);
211 212
212 proto::PropertyTree proto; 213 proto::PropertyTree proto;
213 original.ToProtobuf(&proto); 214 original.ToProtobuf(&proto);
214 EffectTree result; 215 EffectTree result;
(...skipping 26 matching lines...) Expand all
241 ScrollNode result; 242 ScrollNode result;
242 result.FromProtobuf(proto); 243 result.FromProtobuf(proto);
243 244
244 EXPECT_EQ(original, result); 245 EXPECT_EQ(original, result);
245 } 246 }
246 247
247 TEST(PropertyTreeSerializationTest, ScrollTreeSerialization) { 248 TEST(PropertyTreeSerializationTest, ScrollTreeSerialization) {
248 PropertyTrees property_trees; 249 PropertyTrees property_trees;
249 property_trees.is_main_thread = true; 250 property_trees.is_main_thread = true;
250 ScrollTree& original = property_trees.scroll_tree; 251 ScrollTree& original = property_trees.scroll_tree;
252 ScrollNode root;
253 original.Insert(root, -1);
251 ScrollNode second; 254 ScrollNode second;
252 second.owner_id = 10; 255 second.owner_id = 10;
253 second.scrollable = true; 256 second.scrollable = true;
254 second.bounds = gfx::Size(15, 15); 257 second.bounds = gfx::Size(15, 15);
255 ScrollNode third; 258 ScrollNode third;
256 third.owner_id = 20; 259 third.owner_id = 20;
257 third.contains_non_fast_scrollable_region = true; 260 third.contains_non_fast_scrollable_region = true;
258 261
259 original.Insert(second, 0); 262 original.Insert(second, 0);
260 original.Insert(third, 1); 263 original.Insert(third, 1);
261 264
262 original.set_currently_scrolling_node(1); 265 original.set_currently_scrolling_node(1);
263 original.SetScrollOffset(1, gfx::ScrollOffset(1, 2)); 266 original.SetScrollOffset(1, gfx::ScrollOffset(1, 2));
264 267
265 proto::PropertyTree proto; 268 proto::PropertyTree proto;
266 original.ToProtobuf(&proto); 269 original.ToProtobuf(&proto);
267 ScrollTree result; 270 ScrollTree result;
268 std::unordered_map<int, int> scroll_id_to_index_map; 271 std::unordered_map<int, int> scroll_id_to_index_map;
269 result.FromProtobuf(proto, &scroll_id_to_index_map); 272 result.FromProtobuf(proto, &scroll_id_to_index_map);
270 273
271 EXPECT_EQ(original, result); 274 EXPECT_EQ(original, result);
272 EXPECT_EQ(scroll_id_to_index_map[10], 1); 275 EXPECT_EQ(scroll_id_to_index_map[10], 1);
273 EXPECT_EQ(scroll_id_to_index_map[20], 2); 276 EXPECT_EQ(scroll_id_to_index_map[20], 2);
274 277
275 original.clear(); 278 original.clear();
279 ScrollNode root2;
280 original.Insert(root, -1);
276 original.set_currently_scrolling_node(0); 281 original.set_currently_scrolling_node(0);
277 original.SetScrollOffset(2, gfx::ScrollOffset(1, 2)); 282 original.SetScrollOffset(2, gfx::ScrollOffset(1, 2));
278 283
279 proto::PropertyTree proto2; 284 proto::PropertyTree proto2;
280 original.ToProtobuf(&proto2); 285 original.ToProtobuf(&proto2);
281 result = ScrollTree(); 286 result = ScrollTree();
282 scroll_id_to_index_map.clear(); 287 scroll_id_to_index_map.clear();
283 result.FromProtobuf(proto2, &scroll_id_to_index_map); 288 result.FromProtobuf(proto2, &scroll_id_to_index_map);
284 289
285 EXPECT_EQ(original, result); 290 EXPECT_EQ(original, result);
286 } 291 }
287 292
288 TEST(PropertyTreeSerializationTest, PropertyTrees) { 293 TEST(PropertyTreeSerializationTest, PropertyTrees) {
289 PropertyTrees original; 294 PropertyTrees original;
290 TransformNode transform_node1 = TransformNode(); 295 TransformNode transform_node1 = TransformNode();
291 transform_node1.owner_id = 10; 296 transform_node1.owner_id = 10;
292 transform_node1.id = original.transform_tree.Insert(transform_node1, 0); 297 transform_node1.id = original.transform_tree.Insert(
298 transform_node1, TransformTree::kDeviceNodeId);
293 TransformNode transform_node2 = TransformNode(); 299 TransformNode transform_node2 = TransformNode();
294 transform_node2.owner_id = 20; 300 transform_node2.owner_id = 20;
295 transform_node2.id = original.transform_tree.Insert(transform_node2, 1); 301 transform_node2.id =
296 original.transform_id_to_index_map[10] = 1; 302 original.transform_tree.Insert(transform_node2, transform_node1.id);
297 original.transform_id_to_index_map[20] = 2; 303 original.transform_id_to_index_map[10] = transform_node1.id;
304 original.transform_id_to_index_map[20] = transform_node2.id;
298 305
299 ClipNode clip_node1 = ClipNode(); 306 ClipNode clip_node1 = ClipNode();
300 clip_node1.owner_id = 10; 307 clip_node1.owner_id = 10;
301 clip_node1.id = original.clip_tree.Insert(clip_node1, 0); 308 clip_node1.id =
309 original.clip_tree.Insert(clip_node1, ClipTree::kInvalidNodeId);
302 ClipNode clip_node2 = ClipNode(); 310 ClipNode clip_node2 = ClipNode();
303 clip_node2.owner_id = 22; 311 clip_node2.owner_id = 22;
304 clip_node2.id = original.clip_tree.Insert(clip_node2, 1); 312 clip_node2.id = original.clip_tree.Insert(clip_node2, clip_node1.id);
305 original.clip_id_to_index_map[10] = 1; 313 original.clip_id_to_index_map[10] = clip_node1.id;
306 original.clip_id_to_index_map[22] = 2; 314 original.clip_id_to_index_map[22] = clip_node2.id;
307 315
308 EffectNode effect_node1 = EffectNode(); 316 EffectNode effect_node1 = EffectNode();
309 effect_node1.owner_id = 11; 317 effect_node1.owner_id = 11;
310 effect_node1.id = original.effect_tree.Insert(effect_node1, 0); 318 effect_node1.id =
319 original.effect_tree.Insert(effect_node1, EffectTree::kInvalidNodeId);
311 EffectNode effect_node2 = EffectNode(); 320 EffectNode effect_node2 = EffectNode();
312 effect_node2.owner_id = 23; 321 effect_node2.owner_id = 23;
313 effect_node2.id = original.effect_tree.Insert(effect_node2, 1); 322 effect_node2.id = original.effect_tree.Insert(effect_node2, effect_node1.id);
314 original.effect_id_to_index_map[11] = 1; 323 original.effect_id_to_index_map[11] = effect_node1.id;
315 original.effect_id_to_index_map[23] = 2; 324 original.effect_id_to_index_map[23] = effect_node2.id;
316 325
317 ScrollNode scroll_node1 = ScrollNode(); 326 ScrollNode scroll_node1 = ScrollNode();
318 scroll_node1.owner_id = 10; 327 scroll_node1.owner_id = 10;
319 scroll_node1.id = original.scroll_tree.Insert(scroll_node1, 0); 328 scroll_node1.id =
329 original.scroll_tree.Insert(scroll_node1, ScrollTree::kInvalidNodeId);
320 ScrollNode scroll_node2 = ScrollNode(); 330 ScrollNode scroll_node2 = ScrollNode();
321 scroll_node2.owner_id = 20; 331 scroll_node2.owner_id = 20;
322 scroll_node2.id = original.scroll_tree.Insert(scroll_node2, 1); 332 scroll_node2.id = original.scroll_tree.Insert(scroll_node2, scroll_node1.id);
323 original.scroll_id_to_index_map[10] = 1; 333 original.scroll_id_to_index_map[10] = scroll_node1.id;
324 original.scroll_id_to_index_map[20] = 2; 334 original.scroll_id_to_index_map[20] = scroll_node2.id;
325 335
326 original.needs_rebuild = false; 336 original.needs_rebuild = false;
327 original.non_root_surfaces_enabled = false; 337 original.non_root_surfaces_enabled = false;
328 original.sequence_number = 3; 338 original.sequence_number = 3;
329 339
330 proto::PropertyTrees proto; 340 proto::PropertyTrees proto;
331 original.ToProtobuf(&proto); 341 original.ToProtobuf(&proto);
332 PropertyTrees result; 342 PropertyTrees result;
333 result.FromProtobuf(proto); 343 result.FromProtobuf(proto);
334 344
(...skipping 54 matching lines...) Expand 10 before | Expand all | Expand 10 after
389 399
390 #define DIRECT_AND_SERIALIZED_PROPERTY_TREE_TEST_F(TEST_FIXTURE_NAME) \ 400 #define DIRECT_AND_SERIALIZED_PROPERTY_TREE_TEST_F(TEST_FIXTURE_NAME) \
391 DIRECT_PROPERTY_TREE_TEST_F(TEST_FIXTURE_NAME); \ 401 DIRECT_PROPERTY_TREE_TEST_F(TEST_FIXTURE_NAME); \
392 SERIALIZED_PROPERTY_TREE_TEST_F(TEST_FIXTURE_NAME) 402 SERIALIZED_PROPERTY_TREE_TEST_F(TEST_FIXTURE_NAME)
393 403
394 class PropertyTreeTestComputeTransformRoot : public PropertyTreeTest { 404 class PropertyTreeTestComputeTransformRoot : public PropertyTreeTest {
395 protected: 405 protected:
396 void StartTest() override { 406 void StartTest() override {
397 PropertyTrees property_trees; 407 PropertyTrees property_trees;
398 TransformTree& tree = property_trees.transform_tree; 408 TransformTree& tree = property_trees.transform_tree;
399 TransformNode& root = *tree.Node(0); 409 TransformNode root;
400 root.id = 0;
401 root.local.Translate(2, 2); 410 root.local.Translate(2, 2);
402 tree.SetTargetId(root.id, 0); 411 root.id = tree.Insert(root, TransformTree::kDeviceNodeId);
412 tree.SetTargetId(root.id, TransformTree::kDeviceNodeId);
403 SetupTransformTreeForTest(&tree); 413 SetupTransformTreeForTest(&tree);
404 tree.UpdateTransforms(0); 414 tree.UpdateTransforms(root.id);
405 415
406 gfx::Transform expected; 416 gfx::Transform expected;
407 gfx::Transform transform; 417 gfx::Transform transform;
408 bool success = tree.ComputeTransform(0, 0, &transform); 418 bool success = tree.ComputeTransform(root.id, root.id, &transform);
409 EXPECT_TRUE(success); 419 EXPECT_TRUE(success);
410 EXPECT_TRANSFORMATION_MATRIX_EQ(expected, transform); 420 EXPECT_TRANSFORMATION_MATRIX_EQ(expected, transform);
411 421
412 transform.MakeIdentity(); 422 transform.MakeIdentity();
413 expected.Translate(2, 2); 423 expected.Translate(2, 2);
414 success = tree.ComputeTransform(0, -1, &transform); 424 success = tree.ComputeTransform(root.id, TransformTree::kDeviceNodeId,
425 &transform);
415 EXPECT_TRUE(success); 426 EXPECT_TRUE(success);
416 EXPECT_TRANSFORMATION_MATRIX_EQ(expected, transform); 427 EXPECT_TRANSFORMATION_MATRIX_EQ(expected, transform);
417 428
418 transform.MakeIdentity(); 429 transform.MakeIdentity();
419 expected.MakeIdentity(); 430 expected.MakeIdentity();
420 expected.Translate(-2, -2); 431 expected.Translate(-2, -2);
421 success = tree.ComputeTransform(-1, 0, &transform); 432 success = tree.ComputeTransform(TransformTree::kDeviceNodeId, root.id,
433 &transform);
422 EXPECT_TRUE(success); 434 EXPECT_TRUE(success);
423 EXPECT_TRANSFORMATION_MATRIX_EQ(expected, transform); 435 EXPECT_TRANSFORMATION_MATRIX_EQ(expected, transform);
424 } 436 }
425 }; 437 };
426 438
427 DIRECT_AND_SERIALIZED_PROPERTY_TREE_TEST_F( 439 DIRECT_AND_SERIALIZED_PROPERTY_TREE_TEST_F(
428 PropertyTreeTestComputeTransformRoot); 440 PropertyTreeTestComputeTransformRoot);
429 441
430 class PropertyTreeTestComputeTransformChild : public PropertyTreeTest { 442 class PropertyTreeTestComputeTransformChild : public PropertyTreeTest {
431 protected: 443 protected:
432 void StartTest() override { 444 void StartTest() override {
433 PropertyTrees property_trees; 445 PropertyTrees property_trees;
434 TransformTree& tree = property_trees.transform_tree; 446 TransformTree& tree = property_trees.transform_tree;
435 TransformNode& root = *tree.Node(0); 447 TransformNode root;
436 root.local.Translate(2, 2); 448 root.local.Translate(2, 2);
437 tree.SetTargetId(root.id, 0); 449 root.id = tree.Insert(root, TransformTree::kDeviceNodeId);
438 tree.UpdateTransforms(0); 450 tree.SetTargetId(root.id, TransformTree::kDeviceNodeId);
451 tree.UpdateTransforms(root.id);
439 452
440 TransformNode child; 453 TransformNode child;
441 child.local.Translate(3, 3); 454 child.local.Translate(3, 3);
442 child.source_node_id = 0; 455 child.source_node_id = root.id;
443 child.id = tree.Insert(child, 0); 456 child.id = tree.Insert(child, root.id);
444 tree.SetTargetId(child.id, 0); 457 tree.SetTargetId(child.id, root.id);
445 458
446 SetupTransformTreeForTest(&tree); 459 SetupTransformTreeForTest(&tree);
447 tree.UpdateTransforms(1); 460 tree.UpdateTransforms(child.id);
448 461
449 gfx::Transform expected; 462 gfx::Transform expected;
450 gfx::Transform transform; 463 gfx::Transform transform;
451 464
452 expected.Translate(3, 3); 465 expected.Translate(3, 3);
453 bool success = tree.ComputeTransform(1, 0, &transform); 466 bool success = tree.ComputeTransform(child.id, root.id, &transform);
454 EXPECT_TRUE(success); 467 EXPECT_TRUE(success);
455 EXPECT_TRANSFORMATION_MATRIX_EQ(expected, transform); 468 EXPECT_TRANSFORMATION_MATRIX_EQ(expected, transform);
456 469
457 transform.MakeIdentity(); 470 transform.MakeIdentity();
458 expected.MakeIdentity(); 471 expected.MakeIdentity();
459 expected.Translate(-3, -3); 472 expected.Translate(-3, -3);
460 success = tree.ComputeTransform(0, 1, &transform); 473 success = tree.ComputeTransform(root.id, child.id, &transform);
461 EXPECT_TRUE(success); 474 EXPECT_TRUE(success);
462 EXPECT_TRANSFORMATION_MATRIX_EQ(expected, transform); 475 EXPECT_TRANSFORMATION_MATRIX_EQ(expected, transform);
463 476
464 transform.MakeIdentity(); 477 transform.MakeIdentity();
465 expected.MakeIdentity(); 478 expected.MakeIdentity();
466 expected.Translate(5, 5); 479 expected.Translate(5, 5);
467 success = tree.ComputeTransform(1, -1, &transform); 480 success = tree.ComputeTransform(child.id, TransformTree::kDeviceNodeId,
481 &transform);
468 EXPECT_TRUE(success); 482 EXPECT_TRUE(success);
469 EXPECT_TRANSFORMATION_MATRIX_EQ(expected, transform); 483 EXPECT_TRANSFORMATION_MATRIX_EQ(expected, transform);
470 484
471 transform.MakeIdentity(); 485 transform.MakeIdentity();
472 expected.MakeIdentity(); 486 expected.MakeIdentity();
473 expected.Translate(-5, -5); 487 expected.Translate(-5, -5);
474 success = tree.ComputeTransform(-1, 1, &transform); 488 success = tree.ComputeTransform(TransformTree::kDeviceNodeId, child.id,
489 &transform);
475 EXPECT_TRUE(success); 490 EXPECT_TRUE(success);
476 EXPECT_TRANSFORMATION_MATRIX_EQ(expected, transform); 491 EXPECT_TRANSFORMATION_MATRIX_EQ(expected, transform);
477 } 492 }
478 }; 493 };
479 494
480 DIRECT_AND_SERIALIZED_PROPERTY_TREE_TEST_F( 495 DIRECT_AND_SERIALIZED_PROPERTY_TREE_TEST_F(
481 PropertyTreeTestComputeTransformChild); 496 PropertyTreeTestComputeTransformChild);
482 497
483 class PropertyTreeTestComputeTransformSibling : public PropertyTreeTest { 498 class PropertyTreeTestComputeTransformSibling : public PropertyTreeTest {
484 protected: 499 protected:
485 void StartTest() override { 500 void StartTest() override {
486 PropertyTrees property_trees; 501 PropertyTrees property_trees;
487 TransformTree& tree = property_trees.transform_tree; 502 TransformTree& tree = property_trees.transform_tree;
488 TransformNode& root = *tree.Node(0); 503 TransformNode root;
489 root.local.Translate(2, 2); 504 root.local.Translate(2, 2);
490 tree.SetTargetId(root.id, 0); 505 root.id = tree.Insert(root, TransformTree::kDeviceNodeId);
491 tree.UpdateTransforms(0); 506 tree.SetTargetId(root.id, TransformTree::kDeviceNodeId);
507 tree.UpdateTransforms(root.id);
492 508
493 TransformNode child; 509 TransformNode child;
494 child.local.Translate(3, 3); 510 child.local.Translate(3, 3);
495 child.source_node_id = 0; 511 child.source_node_id = root.id;
496 child.id = tree.Insert(child, 0); 512 child.id = tree.Insert(child, root.id);
497 tree.SetTargetId(child.id, 0); 513 tree.SetTargetId(child.id, root.id);
498 514
499 TransformNode sibling; 515 TransformNode sibling;
500 sibling.local.Translate(7, 7); 516 sibling.local.Translate(7, 7);
501 sibling.source_node_id = 0; 517 sibling.source_node_id = root.id;
502 sibling.id = tree.Insert(sibling, 0); 518 sibling.id = tree.Insert(sibling, root.id);
503 tree.SetTargetId(sibling.id, 0); 519 tree.SetTargetId(sibling.id, root.id);
504 520
505 SetupTransformTreeForTest(&tree); 521 SetupTransformTreeForTest(&tree);
506 522
507 tree.UpdateTransforms(1); 523 tree.UpdateTransforms(child.id);
508 tree.UpdateTransforms(2); 524 tree.UpdateTransforms(sibling.id);
509 525
510 gfx::Transform expected; 526 gfx::Transform expected;
511 gfx::Transform transform; 527 gfx::Transform transform;
512 528
513 expected.Translate(4, 4); 529 expected.Translate(4, 4);
514 bool success = tree.ComputeTransform(2, 1, &transform); 530 bool success = tree.ComputeTransform(sibling.id, child.id, &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 transform.MakeIdentity(); 534 transform.MakeIdentity();
519 expected.MakeIdentity(); 535 expected.MakeIdentity();
520 expected.Translate(-4, -4); 536 expected.Translate(-4, -4);
521 success = tree.ComputeTransform(1, 2, &transform); 537 success = tree.ComputeTransform(child.id, sibling.id, &transform);
522 EXPECT_TRUE(success); 538 EXPECT_TRUE(success);
523 EXPECT_TRANSFORMATION_MATRIX_EQ(expected, transform); 539 EXPECT_TRANSFORMATION_MATRIX_EQ(expected, transform);
524 } 540 }
525 }; 541 };
526 542
527 DIRECT_AND_SERIALIZED_PROPERTY_TREE_TEST_F( 543 DIRECT_AND_SERIALIZED_PROPERTY_TREE_TEST_F(
528 PropertyTreeTestComputeTransformSibling); 544 PropertyTreeTestComputeTransformSibling);
529 545
530 class PropertyTreeTestComputeTransformSiblingSingularAncestor 546 class PropertyTreeTestComputeTransformSiblingSingularAncestor
531 : public PropertyTreeTest { 547 : public PropertyTreeTest {
532 protected: 548 protected:
533 void StartTest() override { 549 void StartTest() override {
534 // In this test, we have the following tree: 550 // In this test, we have the following tree:
535 // root 551 // root
536 // + singular 552 // + singular
537 // + child 553 // + child
538 // + sibling 554 // + sibling
539 // Since the lowest common ancestor of |child| and |sibling| has a singular 555 // Since the lowest common ancestor of |child| and |sibling| has a singular
540 // transform, we cannot use screen space transforms to compute change of 556 // transform, we cannot use screen space transforms to compute change of
541 // basis 557 // basis
542 // transforms between these nodes. 558 // transforms between these nodes.
543 PropertyTrees property_trees; 559 PropertyTrees property_trees;
544 TransformTree& tree = property_trees.transform_tree; 560 TransformTree& tree = property_trees.transform_tree;
545 TransformNode& root = *tree.Node(0); 561 TransformNode root;
546 root.local.Translate(2, 2); 562 root.local.Translate(2, 2);
547 tree.SetTargetId(root.id, 0); 563 root.id = tree.Insert(root, TransformTree::kDeviceNodeId);
548 tree.UpdateTransforms(0); 564 tree.SetTargetId(root.id, root.id);
565 tree.UpdateTransforms(root.id);
549 566
550 TransformNode singular; 567 TransformNode singular;
551 singular.local.matrix().set(2, 2, 0.0); 568 singular.local.matrix().set(2, 2, 0.0);
552 singular.source_node_id = 0; 569 singular.source_node_id = root.id;
553 singular.id = tree.Insert(singular, 0); 570 singular.id = tree.Insert(singular, root.id);
554 tree.SetTargetId(singular.id, 0); 571 tree.SetTargetId(singular.id, root.id);
555 572
556 TransformNode child; 573 TransformNode child;
557 child.local.Translate(3, 3); 574 child.local.Translate(3, 3);
558 child.source_node_id = 1; 575 child.source_node_id = singular.id;
559 child.id = tree.Insert(child, 1); 576 child.id = tree.Insert(child, singular.id);
560 tree.SetTargetId(child.id, 0); 577 tree.SetTargetId(child.id, root.id);
561 578
562 TransformNode sibling; 579 TransformNode sibling;
563 sibling.local.Translate(7, 7); 580 sibling.local.Translate(7, 7);
564 sibling.source_node_id = 1; 581 sibling.source_node_id = singular.id;
565 sibling.id = tree.Insert(sibling, 1); 582 sibling.id = tree.Insert(sibling, singular.id);
566 tree.SetTargetId(sibling.id, 0); 583 tree.SetTargetId(sibling.id, root.id);
567 584
568 SetupTransformTreeForTest(&tree); 585 SetupTransformTreeForTest(&tree);
569 586
570 tree.UpdateTransforms(1); 587 tree.UpdateTransforms(singular.id);
571 tree.UpdateTransforms(2); 588 tree.UpdateTransforms(child.id);
572 tree.UpdateTransforms(3); 589 tree.UpdateTransforms(sibling.id);
573 590
574 gfx::Transform expected; 591 gfx::Transform expected;
575 gfx::Transform transform; 592 gfx::Transform transform;
576 593
577 expected.Translate(4, 4); 594 expected.Translate(4, 4);
578 bool success = tree.ComputeTransform(3, 2, &transform); 595 bool success = tree.ComputeTransform(sibling.id, child.id, &transform);
579 EXPECT_TRUE(success); 596 EXPECT_TRUE(success);
580 EXPECT_TRANSFORMATION_MATRIX_EQ(expected, transform); 597 EXPECT_TRANSFORMATION_MATRIX_EQ(expected, transform);
581 598
582 transform.MakeIdentity(); 599 transform.MakeIdentity();
583 expected.MakeIdentity(); 600 expected.MakeIdentity();
584 expected.Translate(-4, -4); 601 expected.Translate(-4, -4);
585 success = tree.ComputeTransform(2, 3, &transform); 602 success = tree.ComputeTransform(child.id, sibling.id, &transform);
586 EXPECT_TRUE(success); 603 EXPECT_TRUE(success);
587 EXPECT_TRANSFORMATION_MATRIX_EQ(expected, transform); 604 EXPECT_TRANSFORMATION_MATRIX_EQ(expected, transform);
588 } 605 }
589 }; 606 };
590 607
591 DIRECT_AND_SERIALIZED_PROPERTY_TREE_TEST_F( 608 DIRECT_AND_SERIALIZED_PROPERTY_TREE_TEST_F(
592 PropertyTreeTestComputeTransformSiblingSingularAncestor); 609 PropertyTreeTestComputeTransformSiblingSingularAncestor);
593 610
594 class PropertyTreeTestTransformsWithFlattening : public PropertyTreeTest { 611 class PropertyTreeTestTransformsWithFlattening : public PropertyTreeTest {
595 protected: 612 protected:
596 void StartTest() override { 613 void StartTest() override {
597 PropertyTrees property_trees; 614 PropertyTrees property_trees;
598 TransformTree& tree = property_trees.transform_tree; 615 TransformTree& tree = property_trees.transform_tree;
599 616
600 int grand_parent = tree.Insert(TransformNode(), 0); 617 int grand_parent =
618 tree.Insert(TransformNode(), TransformTree::kDeviceNodeId);
601 tree.SetContentTargetId(grand_parent, grand_parent); 619 tree.SetContentTargetId(grand_parent, grand_parent);
602 tree.SetTargetId(grand_parent, grand_parent); 620 tree.SetTargetId(grand_parent, grand_parent);
603 tree.Node(grand_parent)->source_node_id = 0; 621 tree.Node(grand_parent)->source_node_id = TransformTree::kDeviceNodeId;
604 622
605 gfx::Transform rotation_about_x; 623 gfx::Transform rotation_about_x;
606 rotation_about_x.RotateAboutXAxis(15); 624 rotation_about_x.RotateAboutXAxis(15);
607 625
608 int parent = tree.Insert(TransformNode(), grand_parent); 626 int parent = tree.Insert(TransformNode(), grand_parent);
609 tree.Node(parent)->needs_sublayer_scale = true; 627 tree.Node(parent)->needs_sublayer_scale = true;
610 tree.SetTargetId(parent, grand_parent); 628 tree.SetTargetId(parent, grand_parent);
611 tree.SetContentTargetId(parent, parent); 629 tree.SetContentTargetId(parent, parent);
612 tree.Node(parent)->source_node_id = grand_parent; 630 tree.Node(parent)->source_node_id = grand_parent;
613 tree.Node(parent)->local = rotation_about_x; 631 tree.Node(parent)->local = rotation_about_x;
(...skipping 59 matching lines...) Expand 10 before | Expand all | Expand 10 after
673 }; 691 };
674 692
675 DIRECT_AND_SERIALIZED_PROPERTY_TREE_TEST_F( 693 DIRECT_AND_SERIALIZED_PROPERTY_TREE_TEST_F(
676 PropertyTreeTestTransformsWithFlattening); 694 PropertyTreeTestTransformsWithFlattening);
677 695
678 class PropertyTreeTestMultiplicationOrder : public PropertyTreeTest { 696 class PropertyTreeTestMultiplicationOrder : public PropertyTreeTest {
679 protected: 697 protected:
680 void StartTest() override { 698 void StartTest() override {
681 PropertyTrees property_trees; 699 PropertyTrees property_trees;
682 TransformTree& tree = property_trees.transform_tree; 700 TransformTree& tree = property_trees.transform_tree;
683 TransformNode& root = *tree.Node(0); 701 TransformNode root;
684 root.local.Translate(2, 2); 702 root.local.Translate(2, 2);
685 tree.SetTargetId(root.id, 0); 703 root.id = tree.Insert(root, TransformTree::kDeviceNodeId);
686 tree.UpdateTransforms(0); 704 tree.SetTargetId(root.id, TransformTree::kDeviceNodeId);
705 tree.UpdateTransforms(root.id);
687 706
688 TransformNode child; 707 TransformNode child;
689 child.local.Scale(2, 2); 708 child.local.Scale(2, 2);
690 child.source_node_id = 0; 709 child.source_node_id = root.id;
691 child.id = tree.Insert(child, 0); 710 child.id = tree.Insert(child, root.id);
692 tree.SetTargetId(child.id, 0); 711 tree.SetTargetId(child.id, root.id);
693 712
694 SetupTransformTreeForTest(&tree); 713 SetupTransformTreeForTest(&tree);
695 tree.UpdateTransforms(1); 714 tree.UpdateTransforms(child.id);
696 715
697 gfx::Transform expected; 716 gfx::Transform expected;
698 expected.Translate(2, 2); 717 expected.Translate(2, 2);
699 expected.Scale(2, 2); 718 expected.Scale(2, 2);
700 719
701 gfx::Transform transform; 720 gfx::Transform transform;
702 gfx::Transform inverse; 721 gfx::Transform inverse;
703 722
704 bool success = tree.ComputeTransform(1, -1, &transform); 723 bool success = tree.ComputeTransform(child.id, TransformTree::kDeviceNodeId,
724 &transform);
705 EXPECT_TRUE(success); 725 EXPECT_TRUE(success);
706 EXPECT_TRANSFORMATION_MATRIX_EQ(expected, transform); 726 EXPECT_TRANSFORMATION_MATRIX_EQ(expected, transform);
707 727
708 success = tree.ComputeTransform(-1, 1, &inverse); 728 success =
729 tree.ComputeTransform(TransformTree::kDeviceNodeId, child.id, &inverse);
709 EXPECT_TRUE(success); 730 EXPECT_TRUE(success);
710 731
711 transform = transform * inverse; 732 transform = transform * inverse;
712 expected.MakeIdentity(); 733 expected.MakeIdentity();
713 EXPECT_TRANSFORMATION_MATRIX_EQ(expected, transform); 734 EXPECT_TRANSFORMATION_MATRIX_EQ(expected, transform);
714 } 735 }
715 }; 736 };
716 737
717 DIRECT_AND_SERIALIZED_PROPERTY_TREE_TEST_F(PropertyTreeTestMultiplicationOrder); 738 DIRECT_AND_SERIALIZED_PROPERTY_TREE_TEST_F(PropertyTreeTestMultiplicationOrder);
718 739
719 class PropertyTreeTestComputeTransformWithUninvertibleTransform 740 class PropertyTreeTestComputeTransformWithUninvertibleTransform
720 : public PropertyTreeTest { 741 : public PropertyTreeTest {
721 protected: 742 protected:
722 void StartTest() override { 743 void StartTest() override {
723 PropertyTrees property_trees; 744 PropertyTrees property_trees;
724 TransformTree& tree = property_trees.transform_tree; 745 TransformTree& tree = property_trees.transform_tree;
725 TransformNode& root = *tree.Node(0); 746 TransformNode root;
726 tree.SetTargetId(root.id, 0); 747 root.id = tree.Insert(root, TransformTree::kDeviceNodeId);
727 tree.UpdateTransforms(0); 748 tree.SetTargetId(root.id, TransformTree::kDeviceNodeId);
749 tree.UpdateTransforms(root.id);
728 750
729 TransformNode child; 751 TransformNode child;
730 child.local.Scale(0, 0); 752 child.local.Scale(0, 0);
731 child.source_node_id = 0; 753 child.source_node_id = root.id;
732 child.id = tree.Insert(child, 0); 754 child.id = tree.Insert(child, root.id);
733 tree.SetTargetId(child.id, 0); 755 tree.SetTargetId(child.id, root.id);
734 756
735 SetupTransformTreeForTest(&tree); 757 SetupTransformTreeForTest(&tree);
736 tree.UpdateTransforms(1); 758 tree.UpdateTransforms(child.id);
737 759
738 gfx::Transform expected; 760 gfx::Transform expected;
739 expected.Scale(0, 0); 761 expected.Scale(0, 0);
740 762
741 gfx::Transform transform; 763 gfx::Transform transform;
742 gfx::Transform inverse; 764 gfx::Transform inverse;
743 765
744 bool success = tree.ComputeTransform(1, 0, &transform); 766 bool success = tree.ComputeTransform(child.id, root.id, &transform);
745 EXPECT_TRUE(success); 767 EXPECT_TRUE(success);
746 EXPECT_TRANSFORMATION_MATRIX_EQ(expected, transform); 768 EXPECT_TRANSFORMATION_MATRIX_EQ(expected, transform);
747 769
748 // To compute this would require inverting the 0 matrix, so we cannot 770 // To compute this would require inverting the 0 matrix, so we cannot
749 // succeed. 771 // succeed.
750 success = tree.ComputeTransform(0, 1, &inverse); 772 success = tree.ComputeTransform(root.id, child.id, &inverse);
751 EXPECT_FALSE(success); 773 EXPECT_FALSE(success);
752 } 774 }
753 }; 775 };
754 776
755 DIRECT_AND_SERIALIZED_PROPERTY_TREE_TEST_F( 777 DIRECT_AND_SERIALIZED_PROPERTY_TREE_TEST_F(
756 PropertyTreeTestComputeTransformWithUninvertibleTransform); 778 PropertyTreeTestComputeTransformWithUninvertibleTransform);
757 779
758 class PropertyTreeTestComputeTransformWithSublayerScale 780 class PropertyTreeTestComputeTransformWithSublayerScale
759 : public PropertyTreeTest { 781 : public PropertyTreeTest {
760 protected: 782 protected:
761 void StartTest() override { 783 void StartTest() override {
762 PropertyTrees property_trees; 784 PropertyTrees property_trees;
763 TransformTree& tree = property_trees.transform_tree; 785 TransformTree& tree = property_trees.transform_tree;
764 TransformNode& root = *tree.Node(0); 786 TransformNode root;
765 root.id = 0; 787 root.id = tree.Insert(root, TransformTree::kDeviceNodeId);
766 tree.SetTargetId(root.id, 0); 788 tree.SetTargetId(root.id, TransformTree::kDeviceNodeId);
767 tree.UpdateTransforms(0); 789 tree.UpdateTransforms(root.id);
768 790
769 TransformNode grand_parent; 791 TransformNode grand_parent;
770 grand_parent.local.Scale(2.f, 2.f); 792 grand_parent.local.Scale(2.f, 2.f);
771 grand_parent.source_node_id = 0; 793 grand_parent.source_node_id = root.id;
772 grand_parent.needs_sublayer_scale = true; 794 grand_parent.needs_sublayer_scale = true;
773 int grand_parent_id = tree.Insert(grand_parent, 0); 795 int grand_parent_id = tree.Insert(grand_parent, root.id);
774 tree.SetTargetId(grand_parent_id, 0); 796 tree.SetTargetId(grand_parent_id, root.id);
775 tree.UpdateTransforms(grand_parent_id); 797 tree.UpdateTransforms(grand_parent_id);
776 798
777 TransformNode parent; 799 TransformNode parent;
778 parent.local.Translate(15.f, 15.f); 800 parent.local.Translate(15.f, 15.f);
779 parent.source_node_id = grand_parent_id; 801 parent.source_node_id = grand_parent_id;
780 int parent_id = tree.Insert(parent, grand_parent_id); 802 int parent_id = tree.Insert(parent, grand_parent_id);
781 tree.SetTargetId(parent_id, grand_parent_id); 803 tree.SetTargetId(parent_id, grand_parent_id);
782 tree.UpdateTransforms(parent_id); 804 tree.UpdateTransforms(parent_id);
783 805
784 TransformNode child; 806 TransformNode child;
(...skipping 88 matching lines...) Expand 10 before | Expand all | Expand 10 after
873 895
874 DIRECT_AND_SERIALIZED_PROPERTY_TREE_TEST_F( 896 DIRECT_AND_SERIALIZED_PROPERTY_TREE_TEST_F(
875 PropertyTreeTestComputeTransformWithSublayerScale); 897 PropertyTreeTestComputeTransformWithSublayerScale);
876 898
877 class PropertyTreeTestComputeTransformToTargetWithZeroSublayerScale 899 class PropertyTreeTestComputeTransformToTargetWithZeroSublayerScale
878 : public PropertyTreeTest { 900 : public PropertyTreeTest {
879 protected: 901 protected:
880 void StartTest() override { 902 void StartTest() override {
881 PropertyTrees property_trees; 903 PropertyTrees property_trees;
882 TransformTree& tree = property_trees.transform_tree; 904 TransformTree& tree = property_trees.transform_tree;
883 TransformNode& root = *tree.Node(0); 905 TransformNode root;
884 tree.SetTargetId(root.id, 0); 906 root.id = tree.Insert(root, TransformTree::kDeviceNodeId);
885 tree.UpdateTransforms(0); 907 tree.SetTargetId(root.id, TransformTree::kDeviceNodeId);
908 tree.UpdateTransforms(root.id);
886 909
887 TransformNode grand_parent; 910 TransformNode grand_parent;
888 grand_parent.local.Scale(2.f, 0.f); 911 grand_parent.local.Scale(2.f, 0.f);
889 grand_parent.source_node_id = 0; 912 grand_parent.source_node_id = root.id;
890 grand_parent.needs_sublayer_scale = true; 913 grand_parent.needs_sublayer_scale = true;
891 int grand_parent_id = tree.Insert(grand_parent, 0); 914 int grand_parent_id = tree.Insert(grand_parent, root.id);
892 tree.SetTargetId(grand_parent_id, 0); 915 tree.SetTargetId(grand_parent_id, root.id);
893 tree.SetContentTargetId(grand_parent_id, grand_parent_id); 916 tree.SetContentTargetId(grand_parent_id, grand_parent_id);
894 tree.UpdateTransforms(grand_parent_id); 917 tree.UpdateTransforms(grand_parent_id);
895 918
896 TransformNode parent; 919 TransformNode parent;
897 parent.local.Translate(1.f, 1.f); 920 parent.local.Translate(1.f, 1.f);
898 parent.source_node_id = grand_parent_id; 921 parent.source_node_id = grand_parent_id;
899 int parent_id = tree.Insert(parent, grand_parent_id); 922 int parent_id = tree.Insert(parent, grand_parent_id);
900 tree.SetTargetId(parent_id, grand_parent_id); 923 tree.SetTargetId(parent_id, grand_parent_id);
901 tree.SetContentTargetId(parent_id, grand_parent_id); 924 tree.SetContentTargetId(parent_id, grand_parent_id);
902 tree.UpdateTransforms(parent_id); 925 tree.UpdateTransforms(parent_id);
(...skipping 47 matching lines...) Expand 10 before | Expand all | Expand 10 after
950 class PropertyTreeTestFlatteningWhenDestinationHasOnlyFlatAncestors 973 class PropertyTreeTestFlatteningWhenDestinationHasOnlyFlatAncestors
951 : public PropertyTreeTest { 974 : public PropertyTreeTest {
952 protected: 975 protected:
953 void StartTest() override { 976 void StartTest() override {
954 // This tests that flattening is performed correctly when 977 // This tests that flattening is performed correctly when
955 // destination and its ancestors are flat, but there are 3d transforms 978 // destination and its ancestors are flat, but there are 3d transforms
956 // and flattening between the source and destination. 979 // and flattening between the source and destination.
957 PropertyTrees property_trees; 980 PropertyTrees property_trees;
958 TransformTree& tree = property_trees.transform_tree; 981 TransformTree& tree = property_trees.transform_tree;
959 982
960 int parent = tree.Insert(TransformNode(), 0); 983 int parent = tree.Insert(TransformNode(), TransformTree::kDeviceNodeId);
961 tree.SetContentTargetId(parent, parent); 984 tree.SetContentTargetId(parent, parent);
962 tree.SetTargetId(parent, parent); 985 tree.SetTargetId(parent, parent);
963 tree.Node(parent)->source_node_id = 0; 986 tree.Node(parent)->source_node_id = TransformTree::kDeviceNodeId;
964 tree.Node(parent)->local.Translate(2, 2); 987 tree.Node(parent)->local.Translate(2, 2);
965 988
966 gfx::Transform rotation_about_x; 989 gfx::Transform rotation_about_x;
967 rotation_about_x.RotateAboutXAxis(15); 990 rotation_about_x.RotateAboutXAxis(15);
968 991
969 int child = tree.Insert(TransformNode(), parent); 992 int child = tree.Insert(TransformNode(), parent);
970 tree.SetContentTargetId(child, child); 993 tree.SetContentTargetId(child, child);
971 tree.SetTargetId(child, child); 994 tree.SetTargetId(child, child);
972 tree.Node(child)->source_node_id = parent; 995 tree.Node(child)->source_node_id = parent;
973 tree.Node(child)->local = rotation_about_x; 996 tree.Node(child)->local = rotation_about_x;
(...skipping 23 matching lines...) Expand all
997 DIRECT_AND_SERIALIZED_PROPERTY_TREE_TEST_F( 1020 DIRECT_AND_SERIALIZED_PROPERTY_TREE_TEST_F(
998 PropertyTreeTestFlatteningWhenDestinationHasOnlyFlatAncestors); 1021 PropertyTreeTestFlatteningWhenDestinationHasOnlyFlatAncestors);
999 1022
1000 class PropertyTreeTestScreenSpaceOpacityUpdateTest : public PropertyTreeTest { 1023 class PropertyTreeTestScreenSpaceOpacityUpdateTest : public PropertyTreeTest {
1001 protected: 1024 protected:
1002 void StartTest() override { 1025 void StartTest() override {
1003 // This tests that screen space opacity is updated for the subtree when 1026 // This tests that screen space opacity is updated for the subtree when
1004 // opacity of a node changes. 1027 // opacity of a node changes.
1005 EffectTree tree; 1028 EffectTree tree;
1006 1029
1007 int parent = tree.Insert(EffectNode(), 0); 1030 int parent = tree.Insert(EffectNode(), EffectTree::kInvalidNodeId);
1008 int child = tree.Insert(EffectNode(), parent); 1031 int child = tree.Insert(EffectNode(), parent);
1009 SetupEffectTreeForTest(&tree); 1032 SetupEffectTreeForTest(&tree);
1010 1033
1011 EXPECT_EQ(tree.Node(child)->screen_space_opacity, 1.f); 1034 EXPECT_EQ(tree.Node(child)->screen_space_opacity, 1.f);
1012 tree.Node(parent)->opacity = 0.5f; 1035 tree.Node(parent)->opacity = 0.5f;
1013 tree.set_needs_update(true); 1036 tree.set_needs_update(true);
1014 SetupEffectTreeForTest(&tree); 1037 SetupEffectTreeForTest(&tree);
1015 draw_property_utils::ComputeEffects(&tree); 1038 draw_property_utils::ComputeEffects(&tree);
1016 EXPECT_EQ(tree.Node(child)->screen_space_opacity, 0.5f); 1039 EXPECT_EQ(tree.Node(child)->screen_space_opacity, 0.5f);
1017 1040
1018 tree.Node(child)->opacity = 0.5f; 1041 tree.Node(child)->opacity = 0.5f;
1019 tree.set_needs_update(true); 1042 tree.set_needs_update(true);
1020 SetupEffectTreeForTest(&tree); 1043 SetupEffectTreeForTest(&tree);
1021 draw_property_utils::ComputeEffects(&tree); 1044 draw_property_utils::ComputeEffects(&tree);
1022 EXPECT_EQ(tree.Node(child)->screen_space_opacity, 0.25f); 1045 EXPECT_EQ(tree.Node(child)->screen_space_opacity, 0.25f);
1023 } 1046 }
1024 }; 1047 };
1025 1048
1026 DIRECT_AND_SERIALIZED_PROPERTY_TREE_TEST_F( 1049 DIRECT_AND_SERIALIZED_PROPERTY_TREE_TEST_F(
1027 PropertyTreeTestScreenSpaceOpacityUpdateTest); 1050 PropertyTreeTestScreenSpaceOpacityUpdateTest);
1028 1051
1029 class PropertyTreeTestNonIntegerTranslationTest : public PropertyTreeTest { 1052 class PropertyTreeTestNonIntegerTranslationTest : public PropertyTreeTest {
1030 protected: 1053 protected:
1031 void StartTest() override { 1054 void StartTest() override {
1032 // This tests that when a node has non-integer translation, the information 1055 // This tests that when a node has non-integer translation, the information
1033 // is propagated to the subtree. 1056 // is propagated to the subtree.
1034 PropertyTrees property_trees; 1057 PropertyTrees property_trees;
1035 TransformTree& tree = property_trees.transform_tree; 1058 TransformTree& tree = property_trees.transform_tree;
1036 1059
1037 int parent = tree.Insert(TransformNode(), 0); 1060 int parent = tree.Insert(TransformNode(), TransformTree::kDeviceNodeId);
1038 tree.SetTargetId(parent, parent); 1061 tree.SetTargetId(parent, parent);
1039 tree.Node(parent)->local.Translate(1.5f, 1.5f); 1062 tree.Node(parent)->local.Translate(1.5f, 1.5f);
1040 1063
1041 int child = tree.Insert(TransformNode(), parent); 1064 int child = tree.Insert(TransformNode(), parent);
1042 tree.SetTargetId(child, parent); 1065 tree.SetTargetId(child, parent);
1043 tree.Node(child)->local.Translate(1, 1); 1066 tree.Node(child)->local.Translate(1, 1);
1044 tree.set_needs_update(true); 1067 tree.set_needs_update(true);
1045 SetupTransformTreeForTest(&tree); 1068 SetupTransformTreeForTest(&tree);
1046 draw_property_utils::ComputeTransforms(&tree); 1069 draw_property_utils::ComputeTransforms(&tree);
1047 EXPECT_FALSE( 1070 EXPECT_FALSE(
(...skipping 27 matching lines...) Expand all
1075 PropertyTreeTestNonIntegerTranslationTest); 1098 PropertyTreeTestNonIntegerTranslationTest);
1076 1099
1077 class PropertyTreeTestSingularTransformSnapTest : public PropertyTreeTest { 1100 class PropertyTreeTestSingularTransformSnapTest : public PropertyTreeTest {
1078 protected: 1101 protected:
1079 void StartTest() override { 1102 void StartTest() override {
1080 // This tests that to_target transform is not snapped when it has a singular 1103 // This tests that to_target transform is not snapped when it has a singular
1081 // transform. 1104 // transform.
1082 PropertyTrees property_trees; 1105 PropertyTrees property_trees;
1083 TransformTree& tree = property_trees.transform_tree; 1106 TransformTree& tree = property_trees.transform_tree;
1084 1107
1085 int parent = tree.Insert(TransformNode(), 0); 1108 int parent = tree.Insert(TransformNode(), TransformTree::kDeviceNodeId);
1086 tree.SetTargetId(parent, parent); 1109 tree.SetTargetId(parent, parent);
1087 tree.Node(parent)->scrolls = true; 1110 tree.Node(parent)->scrolls = true;
1088 1111
1089 int child = tree.Insert(TransformNode(), parent); 1112 int child = tree.Insert(TransformNode(), parent);
1090 TransformNode* child_node = tree.Node(child); 1113 TransformNode* child_node = tree.Node(child);
1091 tree.SetTargetId(child, parent); 1114 tree.SetTargetId(child, parent);
1092 child_node->scrolls = true; 1115 child_node->scrolls = true;
1093 child_node->local.Scale3d(6.0f, 6.0f, 0.0f); 1116 child_node->local.Scale3d(6.0f, 6.0f, 0.0f);
1094 child_node->local.Translate(1.3f, 1.3f); 1117 child_node->local.Translate(1.3f, 1.3f);
1095 tree.set_needs_update(true); 1118 tree.set_needs_update(true);
(...skipping 19 matching lines...) Expand all
1115 1138
1116 DIRECT_AND_SERIALIZED_PROPERTY_TREE_TEST_F( 1139 DIRECT_AND_SERIALIZED_PROPERTY_TREE_TEST_F(
1117 PropertyTreeTestSingularTransformSnapTest); 1140 PropertyTreeTestSingularTransformSnapTest);
1118 1141
1119 #undef DIRECT_AND_SERIALIZED_PROPERTY_TREE_TEST_F 1142 #undef DIRECT_AND_SERIALIZED_PROPERTY_TREE_TEST_F
1120 #undef SERIALIZED_PROPERTY_TREE_TEST_F 1143 #undef SERIALIZED_PROPERTY_TREE_TEST_F
1121 #undef DIRECT_PROPERTY_TREE_TEST_F 1144 #undef DIRECT_PROPERTY_TREE_TEST_F
1122 1145
1123 } // namespace 1146 } // namespace
1124 } // namespace cc 1147 } // namespace cc
OLDNEW
« no previous file with comments | « cc/trees/property_tree_builder.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698