Index: cc/layers/layer_sticky_position_constraint.cc |
diff --git a/cc/layers/layer_sticky_position_constraint.cc b/cc/layers/layer_sticky_position_constraint.cc |
index 79414d6a8775daeb4d3a0a67a9b4717cdb61432e..7168e26169cc3401918b193e1655fd7dfe317be7 100644 |
--- a/cc/layers/layer_sticky_position_constraint.cc |
+++ b/cc/layers/layer_sticky_position_constraint.cc |
@@ -4,6 +4,8 @@ |
#include "cc/layers/layer_sticky_position_constraint.h" |
+#include "cc/layers/layer.h" |
+ |
namespace cc { |
LayerStickyPositionConstraint::LayerStickyPositionConstraint() |
@@ -15,7 +17,9 @@ LayerStickyPositionConstraint::LayerStickyPositionConstraint() |
left_offset(0.f), |
right_offset(0.f), |
top_offset(0.f), |
- bottom_offset(0.f) {} |
+ bottom_offset(0.f), |
+ nearest_layer_shifting_sticky_box(Layer::INVALID_ID), |
+ nearest_layer_shifting_containing_block(Layer::INVALID_ID) {} |
LayerStickyPositionConstraint::LayerStickyPositionConstraint( |
const LayerStickyPositionConstraint& other) |
@@ -33,7 +37,11 @@ LayerStickyPositionConstraint::LayerStickyPositionConstraint( |
scroll_container_relative_sticky_box_rect( |
other.scroll_container_relative_sticky_box_rect), |
scroll_container_relative_containing_block_rect( |
- other.scroll_container_relative_containing_block_rect) {} |
+ other.scroll_container_relative_containing_block_rect), |
+ nearest_layer_shifting_sticky_box( |
+ other.nearest_layer_shifting_sticky_box), |
+ nearest_layer_shifting_containing_block( |
+ other.nearest_layer_shifting_containing_block) {} |
bool LayerStickyPositionConstraint::operator==( |
const LayerStickyPositionConstraint& other) const { |
@@ -52,7 +60,11 @@ bool LayerStickyPositionConstraint::operator==( |
scroll_container_relative_sticky_box_rect == |
other.scroll_container_relative_sticky_box_rect && |
scroll_container_relative_containing_block_rect == |
- other.scroll_container_relative_containing_block_rect; |
+ other.scroll_container_relative_containing_block_rect && |
+ nearest_layer_shifting_sticky_box == |
+ other.nearest_layer_shifting_sticky_box && |
+ nearest_layer_shifting_containing_block == |
+ other.nearest_layer_shifting_containing_block; |
} |
bool LayerStickyPositionConstraint::operator!=( |
@@ -60,4 +72,10 @@ bool LayerStickyPositionConstraint::operator!=( |
return !(*this == other); |
} |
+int LayerStickyPositionConstraint::NearestStickyAncestor() { |
+ return (nearest_layer_shifting_sticky_box != Layer::INVALID_ID) |
+ ? nearest_layer_shifting_sticky_box |
+ : nearest_layer_shifting_containing_block; |
+} |
+ |
} // namespace cc |