Index: cc/trees/property_tree_builder.cc |
diff --git a/cc/trees/property_tree_builder.cc b/cc/trees/property_tree_builder.cc |
index c5f683c46b371488808de6fb096b551d7b09754f..dd1642bcf04813bb87bab838f272e5a58c3ae99a 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 OffsetForStickyPositionFromMainThread(Layer* layer) { |
+ return layer->offset_for_sticky_position_from_main_thread(); |
+} |
+ |
+static gfx::Size OffsetForStickyPositionFromMainThread(LayerImpl* layer) { |
+ return layer->test_properties()->offset_for_sticky_position_from_main_thread; |
+} |
+ |
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->offset_for_sticky_position_from_main_thread = |
+ gfx::Vector2dF(OffsetForStickyPositionFromMainThread(layer).width(), |
+ OffsetForStickyPositionFromMainThread(layer).height()); |
} |
node->needs_local_transform_update = true; |