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

Unified 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 side-by-side diff with in-line comments
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 »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: cc/trees/property_tree.cc
diff --git a/cc/trees/property_tree.cc b/cc/trees/property_tree.cc
index ac8b60bb2b9184761af6a0461fbb4afffb5b3256..a22961ce12839a229c6cba2e63c2eda3b53b3995 100644
--- a/cc/trees/property_tree.cc
+++ b/cc/trees/property_tree.cc
@@ -479,7 +479,9 @@ ScrollNodeData::ScrollNodeData()
contains_non_fast_scrollable_region(false),
max_scroll_offset_affected_by_page_scale(false),
is_inner_viewport_scroll_layer(false),
- is_outer_viewport_scroll_layer(false) {}
+ is_outer_viewport_scroll_layer(false),
+ should_flatten(false),
+ transform_id(0) {}
bool ScrollNodeData::operator==(const ScrollNodeData& other) const {
return scrollable == other.scrollable &&
@@ -492,7 +494,11 @@ bool ScrollNodeData::operator==(const ScrollNodeData& other) const {
other.max_scroll_offset_affected_by_page_scale &&
is_inner_viewport_scroll_layer ==
other.is_inner_viewport_scroll_layer &&
- is_outer_viewport_scroll_layer == other.is_outer_viewport_scroll_layer;
+ is_outer_viewport_scroll_layer ==
+ other.is_outer_viewport_scroll_layer &&
+ offset_to_transform_parent == other.offset_to_transform_parent &&
+ should_flatten == other.should_flatten &&
+ transform_id == other.transform_id;
}
void ScrollNodeData::ToProtobuf(proto::TreeNode* proto) const {
@@ -509,6 +515,10 @@ void ScrollNodeData::ToProtobuf(proto::TreeNode* proto) const {
max_scroll_offset_affected_by_page_scale);
data->set_is_inner_viewport_scroll_layer(is_inner_viewport_scroll_layer);
data->set_is_outer_viewport_scroll_layer(is_outer_viewport_scroll_layer);
+ Vector2dFToProto(offset_to_transform_parent,
+ data->mutable_offset_to_transform_parent());
+ data->set_should_flatten(should_flatten);
+ data->set_transform_id(transform_id);
}
void ScrollNodeData::FromProtobuf(const proto::TreeNode& proto) {
@@ -525,6 +535,10 @@ void ScrollNodeData::FromProtobuf(const proto::TreeNode& proto) {
data.max_scroll_offset_affected_by_page_scale();
is_inner_viewport_scroll_layer = data.is_inner_viewport_scroll_layer();
is_outer_viewport_scroll_layer = data.is_outer_viewport_scroll_layer();
+ offset_to_transform_parent =
+ ProtoToVector2dF(data.offset_to_transform_parent());
+ should_flatten = data.should_flatten();
+ transform_id = data.transform_id();
}
void TransformTree::clear() {
@@ -1278,6 +1292,19 @@ gfx::ScrollOffset ScrollTree::MaxScrollOffset(int scroll_node_id) const {
return max_offset;
}
+gfx::Transform ScrollTree::ScreenSpaceTransform(int scroll_node_id) const {
+ const ScrollNode* scroll_node = Node(scroll_node_id);
+ const TransformNode* transform_node =
+ property_trees()->transform_tree.Node(scroll_node->data.transform_id);
+ gfx::Transform screen_space_transform(
+ 1, 0, 0, 1, scroll_node->data.offset_to_transform_parent.x(),
+ scroll_node->data.offset_to_transform_parent.y());
+ screen_space_transform.ConcatTransform(transform_node->data.to_screen);
+ if (scroll_node->data.should_flatten)
+ screen_space_transform.FlattenTo2d();
+ return screen_space_transform;
+}
+
PropertyTrees::PropertyTrees()
: needs_rebuild(true), non_root_surfaces_enabled(true), sequence_number(0) {
transform_tree.SetPropertyTrees(this);
« 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