Index: cc/trees/property_tree_builder.cc |
diff --git a/cc/trees/property_tree_builder.cc b/cc/trees/property_tree_builder.cc |
index 52446225fe31f7038eac81d410904455de7c65e3..cb6bb99080d96af6b1071082693d5f15ebd1a2dd 100644 |
--- a/cc/trees/property_tree_builder.cc |
+++ b/cc/trees/property_tree_builder.cc |
@@ -76,6 +76,14 @@ static LayerStickyPositionConstraint StickyPositionConstraint( |
return layer->test_properties()->sticky_position_constraint; |
} |
+static gfx::Size StickyMainThreadOffset(Layer* layer) { |
+ return layer->sticky_main_thread_offset(); |
+} |
+ |
+static gfx::Size StickyMainThreadOffset(LayerImpl* layer) { |
+ return layer->test_properties()->sticky_main_thread_offset; |
+} |
+ |
static LayerImplList& Children(LayerImpl* layer) { |
return layer->test_properties()->children; |
} |
@@ -540,14 +548,6 @@ bool AddTransformNodeIfNeeded( |
.AddNodeAffectedByOuterViewportBoundsDelta(node->id); |
} |
} |
- // TODO(smcgruer): Pass main thread sticky-shifting offsets of |
- // non-promoted ancestors, or promote all ancestor sticky elements. |
- // See http://crbug.com/702229 |
- sticky_data->main_thread_offset = |
- layer->position().OffsetFromOrigin() - |
- sticky_data->constraints.parent_relative_sticky_box_offset |
- .OffsetFromOrigin(); |
- |
// Copy the ancestor nodes for later use. These layers are guaranteed to |
// have transform nodes at this point because they are our ancestors (so |
// have already been processed) and are sticky (so have transform nodes). |
@@ -570,6 +570,9 @@ bool AddTransformNodeIfNeeded( |
DCHECK(sticky_data->nearest_node_shifting_containing_block != |
TransformTree::kInvalidNodeId); |
} |
+ node->sticky_main_thread_offset = |
+ gfx::Vector2dF(StickyMainThreadOffset(layer).width(), |
+ StickyMainThreadOffset(layer).height()); |
} |
node->needs_local_transform_update = true; |