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

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

Issue 1975623002: cc : Add LayerToPropertyTreeIndices map to PropertyTrees (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 4 years, 7 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/draw_property_utils.h" 10 #include "cc/trees/draw_property_utils.h"
(...skipping 61 matching lines...) Expand 10 before | Expand all | Expand 10 after
72 original.ToProtobuf(&proto); 72 original.ToProtobuf(&proto);
73 TransformNode result; 73 TransformNode result;
74 result.FromProtobuf(proto); 74 result.FromProtobuf(proto);
75 75
76 EXPECT_EQ(original, result); 76 EXPECT_EQ(original, result);
77 } 77 }
78 78
79 TEST(PropertyTreeSerializationTest, TransformTreeSerialization) { 79 TEST(PropertyTreeSerializationTest, TransformTreeSerialization) {
80 TransformTree original; 80 TransformTree original;
81 TransformNode& root = *original.Node(0); 81 TransformNode& root = *original.Node(0);
82 root.owner_id = 1;
82 root.data.target_id = 3; 83 root.data.target_id = 3;
83 root.data.content_target_id = 4; 84 root.data.content_target_id = 4;
84 TransformNode second; 85 TransformNode second;
86 second.owner_id = 2;
85 second.data.local.Translate3d(2.f, 2.f, 0.f); 87 second.data.local.Translate3d(2.f, 2.f, 0.f);
86 second.data.source_node_id = 0; 88 second.data.source_node_id = 0;
87 second.data.target_id = 0; 89 second.data.target_id = 0;
88 TransformNode third; 90 TransformNode third;
91 third.owner_id = 3;
89 third.data.scrolls = true; 92 third.data.scrolls = true;
90 third.data.source_node_id = 1; 93 third.data.source_node_id = 1;
91 third.data.target_id = 0; 94 third.data.target_id = 0;
92 95
93 original.Insert(second, 0); 96 original.Insert(second, 0);
94 original.Insert(third, 1); 97 original.Insert(third, 1);
95 original.set_needs_update(true); 98 original.set_needs_update(true);
96 99
97 original.set_page_scale_factor(0.5f); 100 original.set_page_scale_factor(0.5f);
98 original.set_device_scale_factor(0.6f); 101 original.set_device_scale_factor(0.6f);
99 gfx::Transform transform = 102 gfx::Transform transform =
100 gfx::Transform(1.05f, 2.15f, 3.14f, 4.13f, 5.12f, 6.11f, 7.1f, 8.9f, 9.8f, 103 gfx::Transform(1.05f, 2.15f, 3.14f, 4.13f, 5.12f, 6.11f, 7.1f, 8.9f, 9.8f,
101 10.7f, 11.6f, 12.5f, 13.4f, 14.3f, 15.2f, 16.1f); 104 10.7f, 11.6f, 12.5f, 13.4f, 14.3f, 15.2f, 16.1f);
102 original.SetDeviceTransformScaleFactor(transform); 105 original.SetDeviceTransformScaleFactor(transform);
103 original.AddNodeAffectedByInnerViewportBoundsDelta(0); 106 original.AddNodeAffectedByInnerViewportBoundsDelta(0);
104 original.AddNodeAffectedByOuterViewportBoundsDelta(1); 107 original.AddNodeAffectedByOuterViewportBoundsDelta(1);
105 108
106 proto::PropertyTree proto; 109 proto::PropertyTree proto;
107 original.ToProtobuf(&proto); 110 original.ToProtobuf(&proto);
108 TransformTree result; 111 TransformTree result;
109 result.FromProtobuf(proto); 112 std::unordered_map<int, int> transform_id_to_index_map;
113 result.FromProtobuf(proto, &transform_id_to_index_map);
110 114
115 EXPECT_EQ(transform_id_to_index_map[1], 0);
116 EXPECT_EQ(transform_id_to_index_map[2], 1);
117 EXPECT_EQ(transform_id_to_index_map[3], 2);
111 EXPECT_EQ(original, result); 118 EXPECT_EQ(original, result);
112 } 119 }
113 120
114 TEST(PropertyTreeSerializationTest, ClipNodeDataSerialization) { 121 TEST(PropertyTreeSerializationTest, ClipNodeDataSerialization) {
115 ClipNodeData original; 122 ClipNodeData original;
116 original.clip = gfx::RectF(0.5f, 0.5f); 123 original.clip = gfx::RectF(0.5f, 0.5f);
117 original.combined_clip_in_target_space = gfx::RectF(0.6f, 0.6f); 124 original.combined_clip_in_target_space = gfx::RectF(0.6f, 0.6f);
118 original.clip_in_target_space = gfx::RectF(0.7f, 0.7f); 125 original.clip_in_target_space = gfx::RectF(0.7f, 0.7f);
119 original.transform_id = 2; 126 original.transform_id = 2;
120 original.target_id = 3; 127 original.target_id = 3;
(...skipping 22 matching lines...) Expand all
143 original.ToProtobuf(&proto); 150 original.ToProtobuf(&proto);
144 ClipNode result; 151 ClipNode result;
145 result.FromProtobuf(proto); 152 result.FromProtobuf(proto);
146 153
147 EXPECT_EQ(original, result); 154 EXPECT_EQ(original, result);
148 } 155 }
149 156
150 TEST(PropertyTreeSerializationTest, ClipTreeSerialization) { 157 TEST(PropertyTreeSerializationTest, ClipTreeSerialization) {
151 ClipTree original; 158 ClipTree original;
152 ClipNode& root = *original.Node(0); 159 ClipNode& root = *original.Node(0);
160 root.owner_id = 1;
153 root.data.transform_id = 2; 161 root.data.transform_id = 2;
154 root.data.target_id = 1; 162 root.data.target_id = 1;
155 ClipNode second; 163 ClipNode second;
164 second.owner_id = 2;
156 second.data.transform_id = 4; 165 second.data.transform_id = 4;
157 second.data.applies_local_clip = true; 166 second.data.applies_local_clip = true;
158 ClipNode third; 167 ClipNode third;
168 third.owner_id = 3;
159 third.data.target_id = 3; 169 third.data.target_id = 3;
160 third.data.target_is_clipped = false; 170 third.data.target_is_clipped = false;
161 171
162 original.Insert(second, 0); 172 original.Insert(second, 0);
163 original.Insert(third, 1); 173 original.Insert(third, 1);
164 original.set_needs_update(true); 174 original.set_needs_update(true);
165 175
166 proto::PropertyTree proto; 176 proto::PropertyTree proto;
167 original.ToProtobuf(&proto); 177 original.ToProtobuf(&proto);
168 ClipTree result; 178 ClipTree result;
169 result.FromProtobuf(proto); 179 std::unordered_map<int, int> clip_id_to_index_map;
180 result.FromProtobuf(proto, &clip_id_to_index_map);
170 181
182 EXPECT_EQ(clip_id_to_index_map[1], 0);
183 EXPECT_EQ(clip_id_to_index_map[2], 1);
184 EXPECT_EQ(clip_id_to_index_map[3], 2);
171 EXPECT_EQ(original, result); 185 EXPECT_EQ(original, result);
172 } 186 }
173 187
174 TEST(PropertyTreeSerializationTest, EffectNodeDataSerialization) { 188 TEST(PropertyTreeSerializationTest, EffectNodeDataSerialization) {
175 EffectNodeData original; 189 EffectNodeData original;
176 original.opacity = 0.5f; 190 original.opacity = 0.5f;
177 original.screen_space_opacity = 0.6f; 191 original.screen_space_opacity = 0.6f;
178 original.has_render_surface = false; 192 original.has_render_surface = false;
179 original.transform_id = 2; 193 original.transform_id = 2;
180 original.clip_id = 3; 194 original.clip_id = 3;
(...skipping 16 matching lines...) Expand all
197 original.ToProtobuf(&proto); 211 original.ToProtobuf(&proto);
198 EffectNode result; 212 EffectNode result;
199 result.FromProtobuf(proto); 213 result.FromProtobuf(proto);
200 214
201 EXPECT_EQ(original, result); 215 EXPECT_EQ(original, result);
202 } 216 }
203 217
204 TEST(PropertyTreeSerializationTest, EffectTreeSerialization) { 218 TEST(PropertyTreeSerializationTest, EffectTreeSerialization) {
205 EffectTree original; 219 EffectTree original;
206 EffectNode& root = *original.Node(0); 220 EffectNode& root = *original.Node(0);
221 root.owner_id = 5;
207 root.data.transform_id = 2; 222 root.data.transform_id = 2;
208 root.data.clip_id = 1; 223 root.data.clip_id = 1;
209 EffectNode second; 224 EffectNode second;
225 second.owner_id = 6;
210 second.data.transform_id = 4; 226 second.data.transform_id = 4;
211 second.data.opacity = true; 227 second.data.opacity = true;
212 EffectNode third; 228 EffectNode third;
229 third.owner_id = 7;
213 third.data.clip_id = 3; 230 third.data.clip_id = 3;
214 third.data.has_render_surface = false; 231 third.data.has_render_surface = false;
215 232
216 original.Insert(second, 0); 233 original.Insert(second, 0);
217 original.Insert(third, 1); 234 original.Insert(third, 1);
218 original.set_needs_update(true); 235 original.set_needs_update(true);
219 236
220 proto::PropertyTree proto; 237 proto::PropertyTree proto;
221 original.ToProtobuf(&proto); 238 original.ToProtobuf(&proto);
222 EffectTree result; 239 EffectTree result;
223 result.FromProtobuf(proto); 240 std::unordered_map<int, int> effect_id_to_index_map;
241 result.FromProtobuf(proto, &effect_id_to_index_map);
224 242
243 EXPECT_EQ(effect_id_to_index_map[5], 0);
244 EXPECT_EQ(effect_id_to_index_map[6], 1);
245 EXPECT_EQ(effect_id_to_index_map[7], 2);
225 EXPECT_EQ(original, result); 246 EXPECT_EQ(original, result);
226 } 247 }
227 248
228 TEST(PropertyTreeSerializationTest, ScrollNodeDataSerialization) { 249 TEST(PropertyTreeSerializationTest, ScrollNodeDataSerialization) {
229 ScrollNodeData original; 250 ScrollNodeData original;
230 original.scrollable = true; 251 original.scrollable = true;
231 original.main_thread_scrolling_reasons = 252 original.main_thread_scrolling_reasons =
232 MainThreadScrollingReason::kScrollbarScrolling; 253 MainThreadScrollingReason::kScrollbarScrolling;
233 original.contains_non_fast_scrollable_region = false; 254 original.contains_non_fast_scrollable_region = false;
234 original.scroll_clip_layer_bounds = gfx::Size(10, 10); 255 original.scroll_clip_layer_bounds = gfx::Size(10, 10);
(...skipping 22 matching lines...) Expand all
257 result.FromProtobuf(proto); 278 result.FromProtobuf(proto);
258 279
259 EXPECT_EQ(original, result); 280 EXPECT_EQ(original, result);
260 } 281 }
261 282
262 TEST(PropertyTreeSerializationTest, ScrollTreeSerialization) { 283 TEST(PropertyTreeSerializationTest, ScrollTreeSerialization) {
263 PropertyTrees property_trees; 284 PropertyTrees property_trees;
264 property_trees.is_main_thread = true; 285 property_trees.is_main_thread = true;
265 ScrollTree& original = property_trees.scroll_tree; 286 ScrollTree& original = property_trees.scroll_tree;
266 ScrollNode second; 287 ScrollNode second;
288 second.owner_id = 10;
267 second.data.scrollable = true; 289 second.data.scrollable = true;
268 second.data.bounds = gfx::Size(15, 15); 290 second.data.bounds = gfx::Size(15, 15);
269 ScrollNode third; 291 ScrollNode third;
292 third.owner_id = 20;
270 third.data.contains_non_fast_scrollable_region = true; 293 third.data.contains_non_fast_scrollable_region = true;
271 294
272 original.Insert(second, 0); 295 original.Insert(second, 0);
273 original.Insert(third, 1); 296 original.Insert(third, 1);
274 297
275 original.set_currently_scrolling_node(1); 298 original.set_currently_scrolling_node(1);
276 original.SetScrollOffset(1, gfx::ScrollOffset(1, 2)); 299 original.SetScrollOffset(1, gfx::ScrollOffset(1, 2));
277 300
278 proto::PropertyTree proto; 301 proto::PropertyTree proto;
279 original.ToProtobuf(&proto); 302 original.ToProtobuf(&proto);
280 ScrollTree result; 303 ScrollTree result;
281 result.FromProtobuf(proto); 304 std::unordered_map<int, int> scroll_id_to_index_map;
305 result.FromProtobuf(proto, &scroll_id_to_index_map);
282 306
283 EXPECT_EQ(original, result); 307 EXPECT_EQ(original, result);
308 EXPECT_EQ(scroll_id_to_index_map[10], 1);
309 EXPECT_EQ(scroll_id_to_index_map[20], 2);
284 310
285 original.clear(); 311 original.clear();
286 original.set_currently_scrolling_node(0); 312 original.set_currently_scrolling_node(0);
287 original.SetScrollOffset(2, gfx::ScrollOffset(1, 2)); 313 original.SetScrollOffset(2, gfx::ScrollOffset(1, 2));
288 314
289 proto::PropertyTree proto2; 315 proto::PropertyTree proto2;
290 original.ToProtobuf(&proto2); 316 original.ToProtobuf(&proto2);
291 result = ScrollTree(); 317 result = ScrollTree();
292 result.FromProtobuf(proto2); 318 scroll_id_to_index_map.clear();
319 result.FromProtobuf(proto2, &scroll_id_to_index_map);
293 320
294 EXPECT_EQ(original, result); 321 EXPECT_EQ(original, result);
295 } 322 }
296 323
297 TEST(PropertyTreeSerializationTest, PropertyTrees) { 324 TEST(PropertyTreeSerializationTest, PropertyTrees) {
298 PropertyTrees original; 325 PropertyTrees original;
299 original.transform_tree.Insert(TransformNode(), 0); 326 TransformNode transform_node1 = TransformNode();
300 original.transform_tree.Insert(TransformNode(), 1); 327 transform_node1.owner_id = 10;
301 original.clip_tree.Insert(ClipNode(), 0); 328 original.transform_tree.Insert(transform_node1, 0);
302 original.clip_tree.Insert(ClipNode(), 1); 329 TransformNode transform_node2 = TransformNode();
303 original.effect_tree.Insert(EffectNode(), 0); 330 transform_node2.owner_id = 20;
304 original.effect_tree.Insert(EffectNode(), 1); 331 original.transform_tree.Insert(transform_node2, 1);
305 original.scroll_tree.Insert(ScrollNode(), 0); 332 original.transform_id_to_index_map[10] = 1;
306 original.scroll_tree.Insert(ScrollNode(), 1); 333 original.transform_id_to_index_map[20] = 2;
334
335 ClipNode clip_node1 = ClipNode();
336 clip_node1.owner_id = 10;
337 original.clip_tree.Insert(clip_node1, 0);
338 ClipNode clip_node2 = ClipNode();
339 clip_node2.owner_id = 22;
340 original.clip_tree.Insert(clip_node2, 1);
341 original.clip_id_to_index_map[10] = 1;
342 original.clip_id_to_index_map[22] = 2;
343
344 EffectNode effect_node1 = EffectNode();
345 effect_node1.owner_id = 11;
346 original.effect_tree.Insert(effect_node1, 0);
347 EffectNode effect_node2 = EffectNode();
348 effect_node2.owner_id = 23;
349 original.effect_tree.Insert(effect_node2, 1);
350 original.effect_id_to_index_map[11] = 1;
351 original.effect_id_to_index_map[23] = 2;
352
353 ScrollNode scroll_node1 = ScrollNode();
354 scroll_node1.owner_id = 10;
355 original.scroll_tree.Insert(scroll_node1, 0);
356 ScrollNode scroll_node2 = ScrollNode();
357 scroll_node2.owner_id = 20;
358 original.scroll_tree.Insert(scroll_node2, 1);
359 original.scroll_id_to_index_map[10] = 1;
360 original.scroll_id_to_index_map[20] = 2;
361
307 original.needs_rebuild = false; 362 original.needs_rebuild = false;
308 original.non_root_surfaces_enabled = false; 363 original.non_root_surfaces_enabled = false;
309 original.sequence_number = 3; 364 original.sequence_number = 3;
310 365
311 proto::PropertyTrees proto; 366 proto::PropertyTrees proto;
312 original.ToProtobuf(&proto); 367 original.ToProtobuf(&proto);
313 PropertyTrees result; 368 PropertyTrees result;
314 result.FromProtobuf(proto); 369 result.FromProtobuf(proto);
315 370
316 EXPECT_EQ(original, result); 371 EXPECT_EQ(original, result);
(...skipping 11 matching lines...) Expand all
328 383
329 virtual void StartTest() = 0; 384 virtual void StartTest() = 0;
330 385
331 TransformTree TransformTreeForTest(const TransformTree& transform_tree) { 386 TransformTree TransformTreeForTest(const TransformTree& transform_tree) {
332 if (!test_serialization_) { 387 if (!test_serialization_) {
333 return transform_tree; 388 return transform_tree;
334 } 389 }
335 TransformTree new_tree; 390 TransformTree new_tree;
336 proto::PropertyTree proto; 391 proto::PropertyTree proto;
337 transform_tree.ToProtobuf(&proto); 392 transform_tree.ToProtobuf(&proto);
338 new_tree.FromProtobuf(proto); 393 std::unordered_map<int, int> transform_id_to_index_map;
394 new_tree.FromProtobuf(proto, &transform_id_to_index_map);
339 395
340 new_tree.SetPropertyTrees(transform_tree.property_trees()); 396 new_tree.SetPropertyTrees(transform_tree.property_trees());
341 397
342 EXPECT_EQ(transform_tree, new_tree); 398 EXPECT_EQ(transform_tree, new_tree);
343 return new_tree; 399 return new_tree;
344 } 400 }
345 401
346 EffectTree EffectTreeForTest(const EffectTree& effect_tree) { 402 EffectTree EffectTreeForTest(const EffectTree& effect_tree) {
347 if (!test_serialization_) { 403 if (!test_serialization_) {
348 return effect_tree; 404 return effect_tree;
349 } 405 }
350 EffectTree new_tree; 406 EffectTree new_tree;
351 proto::PropertyTree proto; 407 proto::PropertyTree proto;
352 effect_tree.ToProtobuf(&proto); 408 effect_tree.ToProtobuf(&proto);
353 new_tree.FromProtobuf(proto); 409 std::unordered_map<int, int> effect_id_to_index_map;
410 new_tree.FromProtobuf(proto, &effect_id_to_index_map);
354 411
355 EXPECT_EQ(effect_tree, new_tree); 412 EXPECT_EQ(effect_tree, new_tree);
356 return new_tree; 413 return new_tree;
357 } 414 }
358 415
359 private: 416 private:
360 bool test_serialization_; 417 bool test_serialization_;
361 }; 418 };
362 419
363 #define DIRECT_PROPERTY_TREE_TEST_F(TEST_FIXTURE_NAME) \ 420 #define DIRECT_PROPERTY_TREE_TEST_F(TEST_FIXTURE_NAME) \
(...skipping 732 matching lines...) Expand 10 before | Expand all | Expand 10 after
1096 1153
1097 DIRECT_AND_SERIALIZED_PROPERTY_TREE_TEST_F( 1154 DIRECT_AND_SERIALIZED_PROPERTY_TREE_TEST_F(
1098 PropertyTreeTestSingularTransformSnapTest); 1155 PropertyTreeTestSingularTransformSnapTest);
1099 1156
1100 #undef DIRECT_AND_SERIALIZED_PROPERTY_TREE_TEST_F 1157 #undef DIRECT_AND_SERIALIZED_PROPERTY_TREE_TEST_F
1101 #undef SERIALIZED_PROPERTY_TREE_TEST_F 1158 #undef SERIALIZED_PROPERTY_TREE_TEST_F
1102 #undef DIRECT_PROPERTY_TREE_TEST_F 1159 #undef DIRECT_PROPERTY_TREE_TEST_F
1103 1160
1104 } // namespace 1161 } // namespace
1105 } // namespace cc 1162 } // 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