| 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 61 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 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 Loading... |
| 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 Loading... |
| 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 Loading... |
| 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 Loading... |
| 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 Loading... |
| 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 |
| OLD | NEW |