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

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 branch 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
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 transform_id(0) {}
483 484
484 bool ScrollNodeData::operator==(const ScrollNodeData& other) const { 485 bool ScrollNodeData::operator==(const ScrollNodeData& other) const {
485 return scrollable == other.scrollable && 486 return scrollable == other.scrollable &&
486 main_thread_scrolling_reasons == other.main_thread_scrolling_reasons && 487 main_thread_scrolling_reasons == other.main_thread_scrolling_reasons &&
487 contains_non_fast_scrollable_region == 488 contains_non_fast_scrollable_region ==
488 other.contains_non_fast_scrollable_region && 489 other.contains_non_fast_scrollable_region &&
489 scroll_clip_layer_bounds == other.scroll_clip_layer_bounds && 490 scroll_clip_layer_bounds == other.scroll_clip_layer_bounds &&
490 bounds == other.bounds && 491 bounds == other.bounds &&
491 max_scroll_offset_affected_by_page_scale == 492 max_scroll_offset_affected_by_page_scale ==
492 other.max_scroll_offset_affected_by_page_scale && 493 other.max_scroll_offset_affected_by_page_scale &&
493 is_inner_viewport_scroll_layer == 494 is_inner_viewport_scroll_layer ==
494 other.is_inner_viewport_scroll_layer && 495 other.is_inner_viewport_scroll_layer &&
495 is_outer_viewport_scroll_layer == other.is_outer_viewport_scroll_layer; 496 is_outer_viewport_scroll_layer ==
497 other.is_outer_viewport_scroll_layer &&
498 transform_id == other.transform_id;
496 } 499 }
497 500
498 void ScrollNodeData::ToProtobuf(proto::TreeNode* proto) const { 501 void ScrollNodeData::ToProtobuf(proto::TreeNode* proto) const {
499 DCHECK(!proto->has_scroll_node_data()); 502 DCHECK(!proto->has_scroll_node_data());
500 proto::ScrollNodeData* data = proto->mutable_scroll_node_data(); 503 proto::ScrollNodeData* data = proto->mutable_scroll_node_data();
501 data->set_scrollable(scrollable); 504 data->set_scrollable(scrollable);
502 data->set_main_thread_scrolling_reasons(main_thread_scrolling_reasons); 505 data->set_main_thread_scrolling_reasons(main_thread_scrolling_reasons);
503 data->set_contains_non_fast_scrollable_region( 506 data->set_contains_non_fast_scrollable_region(
504 contains_non_fast_scrollable_region); 507 contains_non_fast_scrollable_region);
505 SizeToProto(scroll_clip_layer_bounds, 508 SizeToProto(scroll_clip_layer_bounds,
506 data->mutable_scroll_clip_layer_bounds()); 509 data->mutable_scroll_clip_layer_bounds());
507 SizeToProto(bounds, data->mutable_bounds()); 510 SizeToProto(bounds, data->mutable_bounds());
508 data->set_max_scroll_offset_affected_by_page_scale( 511 data->set_max_scroll_offset_affected_by_page_scale(
509 max_scroll_offset_affected_by_page_scale); 512 max_scroll_offset_affected_by_page_scale);
510 data->set_is_inner_viewport_scroll_layer(is_inner_viewport_scroll_layer); 513 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); 514 data->set_is_outer_viewport_scroll_layer(is_outer_viewport_scroll_layer);
515 data->set_transform_id(transform_id);
512 } 516 }
513 517
514 void ScrollNodeData::FromProtobuf(const proto::TreeNode& proto) { 518 void ScrollNodeData::FromProtobuf(const proto::TreeNode& proto) {
515 DCHECK(proto.has_scroll_node_data()); 519 DCHECK(proto.has_scroll_node_data());
516 const proto::ScrollNodeData& data = proto.scroll_node_data(); 520 const proto::ScrollNodeData& data = proto.scroll_node_data();
517 521
518 scrollable = data.scrollable(); 522 scrollable = data.scrollable();
519 main_thread_scrolling_reasons = data.main_thread_scrolling_reasons(); 523 main_thread_scrolling_reasons = data.main_thread_scrolling_reasons();
520 contains_non_fast_scrollable_region = 524 contains_non_fast_scrollable_region =
521 data.contains_non_fast_scrollable_region(); 525 data.contains_non_fast_scrollable_region();
522 scroll_clip_layer_bounds = ProtoToSize(data.scroll_clip_layer_bounds()); 526 scroll_clip_layer_bounds = ProtoToSize(data.scroll_clip_layer_bounds());
523 bounds = ProtoToSize(data.bounds()); 527 bounds = ProtoToSize(data.bounds());
524 max_scroll_offset_affected_by_page_scale = 528 max_scroll_offset_affected_by_page_scale =
525 data.max_scroll_offset_affected_by_page_scale(); 529 data.max_scroll_offset_affected_by_page_scale();
526 is_inner_viewport_scroll_layer = data.is_inner_viewport_scroll_layer(); 530 is_inner_viewport_scroll_layer = data.is_inner_viewport_scroll_layer();
527 is_outer_viewport_scroll_layer = data.is_outer_viewport_scroll_layer(); 531 is_outer_viewport_scroll_layer = data.is_outer_viewport_scroll_layer();
532 transform_id = data.transform_id();
528 } 533 }
529 534
530 void TransformTree::clear() { 535 void TransformTree::clear() {
531 PropertyTree<TransformNode>::clear(); 536 PropertyTree<TransformNode>::clear();
532 537
533 nodes_affected_by_inner_viewport_bounds_delta_.clear(); 538 nodes_affected_by_inner_viewport_bounds_delta_.clear();
534 nodes_affected_by_outer_viewport_bounds_delta_.clear(); 539 nodes_affected_by_outer_viewport_bounds_delta_.clear();
535 } 540 }
536 541
537 bool TransformTree::ComputeTransform(int source_id, 542 bool TransformTree::ComputeTransform(int source_id,
(...skipping 733 matching lines...) Expand 10 before | Expand all | Expand 10 after
1271 1276
1272 gfx::ScrollOffset max_offset( 1277 gfx::ScrollOffset max_offset(
1273 scaled_scroll_bounds.width() - scroll_clip_layer_bounds.width(), 1278 scaled_scroll_bounds.width() - scroll_clip_layer_bounds.width(),
1274 scaled_scroll_bounds.height() - scroll_clip_layer_bounds.height()); 1279 scaled_scroll_bounds.height() - scroll_clip_layer_bounds.height());
1275 1280
1276 max_offset.Scale(1 / scale_factor); 1281 max_offset.Scale(1 / scale_factor);
1277 max_offset.SetToMax(gfx::ScrollOffset()); 1282 max_offset.SetToMax(gfx::ScrollOffset());
1278 return max_offset; 1283 return max_offset;
1279 } 1284 }
1280 1285
1286 gfx::Transform ScrollTree::ScreenSpaceTransform(int scroll_node_id) const {
jaydasika 2016/02/11 23:38:56 Question : Is Scroll Node creation reasons a subse
sunxd 2016/02/12 15:33:30 So we are only interested with ScreenSpaceTransfor
ajuma 2016/02/12 17:03:01 For TryScroll we might be ok, but I'm not sure if
1287 const ScrollNode* scroll_node = Node(scroll_node_id);
1288 const TransformNode* transform_node =
1289 property_trees()->transform_tree.Node(scroll_node->data.transform_id);
1290 gfx::Transform screen_space_transform = transform_node->data.to_screen;
1291 if (transform_node->data.flattens_inherited_transform)
1292 screen_space_transform.FlattenTo2d();
ajuma 2016/02/12 17:03:01 I believe this already happens when to_screen is c
1293 return screen_space_transform;
1294 }
1295
1281 PropertyTrees::PropertyTrees() 1296 PropertyTrees::PropertyTrees()
1282 : needs_rebuild(true), non_root_surfaces_enabled(true), sequence_number(0) { 1297 : needs_rebuild(true), non_root_surfaces_enabled(true), sequence_number(0) {
1283 transform_tree.SetPropertyTrees(this); 1298 transform_tree.SetPropertyTrees(this);
1284 effect_tree.SetPropertyTrees(this); 1299 effect_tree.SetPropertyTrees(this);
1285 clip_tree.SetPropertyTrees(this); 1300 clip_tree.SetPropertyTrees(this);
1286 scroll_tree.SetPropertyTrees(this); 1301 scroll_tree.SetPropertyTrees(this);
1287 } 1302 }
1288 1303
1289 PropertyTrees::~PropertyTrees() {} 1304 PropertyTrees::~PropertyTrees() {}
1290 1305
(...skipping 76 matching lines...) Expand 10 before | Expand all | Expand 10 after
1367 outer_viewport_container_bounds_delta_ = bounds_delta; 1382 outer_viewport_container_bounds_delta_ = bounds_delta;
1368 transform_tree.UpdateOuterViewportContainerBoundsDelta(); 1383 transform_tree.UpdateOuterViewportContainerBoundsDelta();
1369 } 1384 }
1370 1385
1371 void PropertyTrees::SetInnerViewportScrollBoundsDelta( 1386 void PropertyTrees::SetInnerViewportScrollBoundsDelta(
1372 gfx::Vector2dF bounds_delta) { 1387 gfx::Vector2dF bounds_delta) {
1373 inner_viewport_scroll_bounds_delta_ = bounds_delta; 1388 inner_viewport_scroll_bounds_delta_ = bounds_delta;
1374 } 1389 }
1375 1390
1376 } // namespace cc 1391 } // namespace cc
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698