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

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

Issue 1689293002: cc: Move TryScroll from LayerImpl to LayerTreeHostImpl (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Merge with master and fix unit test failures. Created 4 years, 10 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.h ('k') | cc/trees/property_tree_builder.cc » ('j') | 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 <stddef.h> 5 #include <stddef.h>
6 6
7 #include <set> 7 #include <set>
8 #include <vector> 8 #include <vector>
9 9
10 #include "base/logging.h" 10 #include "base/logging.h"
(...skipping 461 matching lines...) Expand 10 before | Expand all | Expand 10 after
472 clip_id = data.clip_id(); 472 clip_id = data.clip_id();
473 } 473 }
474 474
475 ScrollNodeData::ScrollNodeData() 475 ScrollNodeData::ScrollNodeData()
476 : scrollable(false), 476 : scrollable(false),
477 main_thread_scrolling_reasons( 477 main_thread_scrolling_reasons(
478 MainThreadScrollingReason::kNotScrollingOnMain), 478 MainThreadScrollingReason::kNotScrollingOnMain),
479 contains_non_fast_scrollable_region(false), 479 contains_non_fast_scrollable_region(false),
480 max_scroll_offset_affected_by_page_scale(false), 480 max_scroll_offset_affected_by_page_scale(false),
481 is_inner_viewport_scroll_layer(false), 481 is_inner_viewport_scroll_layer(false),
482 is_outer_viewport_scroll_layer(false) {} 482 is_outer_viewport_scroll_layer(false),
483 should_flatten(false),
484 transform_id(0) {}
483 485
484 bool ScrollNodeData::operator==(const ScrollNodeData& other) const { 486 bool ScrollNodeData::operator==(const ScrollNodeData& other) const {
485 return scrollable == other.scrollable && 487 return scrollable == other.scrollable &&
486 main_thread_scrolling_reasons == other.main_thread_scrolling_reasons && 488 main_thread_scrolling_reasons == other.main_thread_scrolling_reasons &&
487 contains_non_fast_scrollable_region == 489 contains_non_fast_scrollable_region ==
488 other.contains_non_fast_scrollable_region && 490 other.contains_non_fast_scrollable_region &&
489 scroll_clip_layer_bounds == other.scroll_clip_layer_bounds && 491 scroll_clip_layer_bounds == other.scroll_clip_layer_bounds &&
490 bounds == other.bounds && 492 bounds == other.bounds &&
491 max_scroll_offset_affected_by_page_scale == 493 max_scroll_offset_affected_by_page_scale ==
492 other.max_scroll_offset_affected_by_page_scale && 494 other.max_scroll_offset_affected_by_page_scale &&
493 is_inner_viewport_scroll_layer == 495 is_inner_viewport_scroll_layer ==
494 other.is_inner_viewport_scroll_layer && 496 other.is_inner_viewport_scroll_layer &&
495 is_outer_viewport_scroll_layer == other.is_outer_viewport_scroll_layer; 497 is_outer_viewport_scroll_layer ==
498 other.is_outer_viewport_scroll_layer &&
499 offset_to_transform_parent == other.offset_to_transform_parent &&
500 should_flatten == other.should_flatten &&
501 transform_id == other.transform_id;
496 } 502 }
497 503
498 void ScrollNodeData::ToProtobuf(proto::TreeNode* proto) const { 504 void ScrollNodeData::ToProtobuf(proto::TreeNode* proto) const {
499 DCHECK(!proto->has_scroll_node_data()); 505 DCHECK(!proto->has_scroll_node_data());
500 proto::ScrollNodeData* data = proto->mutable_scroll_node_data(); 506 proto::ScrollNodeData* data = proto->mutable_scroll_node_data();
501 data->set_scrollable(scrollable); 507 data->set_scrollable(scrollable);
502 data->set_main_thread_scrolling_reasons(main_thread_scrolling_reasons); 508 data->set_main_thread_scrolling_reasons(main_thread_scrolling_reasons);
503 data->set_contains_non_fast_scrollable_region( 509 data->set_contains_non_fast_scrollable_region(
504 contains_non_fast_scrollable_region); 510 contains_non_fast_scrollable_region);
505 SizeToProto(scroll_clip_layer_bounds, 511 SizeToProto(scroll_clip_layer_bounds,
506 data->mutable_scroll_clip_layer_bounds()); 512 data->mutable_scroll_clip_layer_bounds());
507 SizeToProto(bounds, data->mutable_bounds()); 513 SizeToProto(bounds, data->mutable_bounds());
508 data->set_max_scroll_offset_affected_by_page_scale( 514 data->set_max_scroll_offset_affected_by_page_scale(
509 max_scroll_offset_affected_by_page_scale); 515 max_scroll_offset_affected_by_page_scale);
510 data->set_is_inner_viewport_scroll_layer(is_inner_viewport_scroll_layer); 516 data->set_is_inner_viewport_scroll_layer(is_inner_viewport_scroll_layer);
511 data->set_is_outer_viewport_scroll_layer(is_outer_viewport_scroll_layer); 517 data->set_is_outer_viewport_scroll_layer(is_outer_viewport_scroll_layer);
518 Vector2dFToProto(offset_to_transform_parent,
519 data->mutable_offset_to_transform_parent());
520 data->set_should_flatten(should_flatten);
521 data->set_transform_id(transform_id);
512 } 522 }
513 523
514 void ScrollNodeData::FromProtobuf(const proto::TreeNode& proto) { 524 void ScrollNodeData::FromProtobuf(const proto::TreeNode& proto) {
515 DCHECK(proto.has_scroll_node_data()); 525 DCHECK(proto.has_scroll_node_data());
516 const proto::ScrollNodeData& data = proto.scroll_node_data(); 526 const proto::ScrollNodeData& data = proto.scroll_node_data();
517 527
518 scrollable = data.scrollable(); 528 scrollable = data.scrollable();
519 main_thread_scrolling_reasons = data.main_thread_scrolling_reasons(); 529 main_thread_scrolling_reasons = data.main_thread_scrolling_reasons();
520 contains_non_fast_scrollable_region = 530 contains_non_fast_scrollable_region =
521 data.contains_non_fast_scrollable_region(); 531 data.contains_non_fast_scrollable_region();
522 scroll_clip_layer_bounds = ProtoToSize(data.scroll_clip_layer_bounds()); 532 scroll_clip_layer_bounds = ProtoToSize(data.scroll_clip_layer_bounds());
523 bounds = ProtoToSize(data.bounds()); 533 bounds = ProtoToSize(data.bounds());
524 max_scroll_offset_affected_by_page_scale = 534 max_scroll_offset_affected_by_page_scale =
525 data.max_scroll_offset_affected_by_page_scale(); 535 data.max_scroll_offset_affected_by_page_scale();
526 is_inner_viewport_scroll_layer = data.is_inner_viewport_scroll_layer(); 536 is_inner_viewport_scroll_layer = data.is_inner_viewport_scroll_layer();
527 is_outer_viewport_scroll_layer = data.is_outer_viewport_scroll_layer(); 537 is_outer_viewport_scroll_layer = data.is_outer_viewport_scroll_layer();
538 offset_to_transform_parent =
539 ProtoToVector2dF(data.offset_to_transform_parent());
540 should_flatten = data.should_flatten();
541 transform_id = data.transform_id();
528 } 542 }
529 543
530 void TransformTree::clear() { 544 void TransformTree::clear() {
531 PropertyTree<TransformNode>::clear(); 545 PropertyTree<TransformNode>::clear();
532 546
533 nodes_affected_by_inner_viewport_bounds_delta_.clear(); 547 nodes_affected_by_inner_viewport_bounds_delta_.clear();
534 nodes_affected_by_outer_viewport_bounds_delta_.clear(); 548 nodes_affected_by_outer_viewport_bounds_delta_.clear();
535 } 549 }
536 550
537 bool TransformTree::ComputeTransform(int source_id, 551 bool TransformTree::ComputeTransform(int source_id,
(...skipping 733 matching lines...) Expand 10 before | Expand all | Expand 10 after
1271 1285
1272 gfx::ScrollOffset max_offset( 1286 gfx::ScrollOffset max_offset(
1273 scaled_scroll_bounds.width() - scroll_clip_layer_bounds.width(), 1287 scaled_scroll_bounds.width() - scroll_clip_layer_bounds.width(),
1274 scaled_scroll_bounds.height() - scroll_clip_layer_bounds.height()); 1288 scaled_scroll_bounds.height() - scroll_clip_layer_bounds.height());
1275 1289
1276 max_offset.Scale(1 / scale_factor); 1290 max_offset.Scale(1 / scale_factor);
1277 max_offset.SetToMax(gfx::ScrollOffset()); 1291 max_offset.SetToMax(gfx::ScrollOffset());
1278 return max_offset; 1292 return max_offset;
1279 } 1293 }
1280 1294
1295 gfx::Transform ScrollTree::ScreenSpaceTransform(int scroll_node_id) const {
1296 const ScrollNode* scroll_node = Node(scroll_node_id);
1297 const TransformNode* transform_node =
1298 property_trees()->transform_tree.Node(scroll_node->data.transform_id);
1299 gfx::Transform screen_space_transform(
1300 1, 0, 0, 1, scroll_node->data.offset_to_transform_parent.x(),
1301 scroll_node->data.offset_to_transform_parent.y());
1302 screen_space_transform.ConcatTransform(transform_node->data.to_screen);
1303 if (scroll_node->data.should_flatten)
1304 screen_space_transform.FlattenTo2d();
1305 return screen_space_transform;
1306 }
1307
1281 PropertyTrees::PropertyTrees() 1308 PropertyTrees::PropertyTrees()
1282 : needs_rebuild(true), non_root_surfaces_enabled(true), sequence_number(0) { 1309 : needs_rebuild(true), non_root_surfaces_enabled(true), sequence_number(0) {
1283 transform_tree.SetPropertyTrees(this); 1310 transform_tree.SetPropertyTrees(this);
1284 effect_tree.SetPropertyTrees(this); 1311 effect_tree.SetPropertyTrees(this);
1285 clip_tree.SetPropertyTrees(this); 1312 clip_tree.SetPropertyTrees(this);
1286 scroll_tree.SetPropertyTrees(this); 1313 scroll_tree.SetPropertyTrees(this);
1287 } 1314 }
1288 1315
1289 PropertyTrees::~PropertyTrees() {} 1316 PropertyTrees::~PropertyTrees() {}
1290 1317
(...skipping 76 matching lines...) Expand 10 before | Expand all | Expand 10 after
1367 outer_viewport_container_bounds_delta_ = bounds_delta; 1394 outer_viewport_container_bounds_delta_ = bounds_delta;
1368 transform_tree.UpdateOuterViewportContainerBoundsDelta(); 1395 transform_tree.UpdateOuterViewportContainerBoundsDelta();
1369 } 1396 }
1370 1397
1371 void PropertyTrees::SetInnerViewportScrollBoundsDelta( 1398 void PropertyTrees::SetInnerViewportScrollBoundsDelta(
1372 gfx::Vector2dF bounds_delta) { 1399 gfx::Vector2dF bounds_delta) {
1373 inner_viewport_scroll_bounds_delta_ = bounds_delta; 1400 inner_viewport_scroll_bounds_delta_ = bounds_delta;
1374 } 1401 }
1375 1402
1376 } // namespace cc 1403 } // namespace cc
OLDNEW
« no previous file with comments | « cc/trees/property_tree.h ('k') | cc/trees/property_tree_builder.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698