Index: third_party/WebKit/Source/core/layout/LayoutBoxModelObject.h |
diff --git a/third_party/WebKit/Source/core/layout/LayoutBoxModelObject.h b/third_party/WebKit/Source/core/layout/LayoutBoxModelObject.h |
index 4eb861390945b560eef81cecbd34962362a71cf0..7e1d0e96d97c820972880f796c11883969010be5 100644 |
--- a/third_party/WebKit/Source/core/layout/LayoutBoxModelObject.h |
+++ b/third_party/WebKit/Source/core/layout/LayoutBoxModelObject.h |
@@ -62,6 +62,7 @@ enum ContentChangeType { |
}; |
class InlineFlowBox; |
+class StickyPositionViewportConstraints; |
// This class is the base class for all CSS objects. |
// |
@@ -140,6 +141,12 @@ public: |
LayoutSize relativePositionOffset() const; |
LayoutSize relativePositionLogicalOffset() const { return style()->isHorizontalWritingMode() ? relativePositionOffset() : relativePositionOffset().transposedSize(); } |
+ // Populates StickyPositionConstraints, setting the sticky box rect, containing block rect and updating |
+ // the constraint offsets according to the available space. |
+ void computeStickyPositionConstraints(StickyPositionViewportConstraints&, const LayoutRect& constrainingRect) const; |
+ LayoutRect computeStickyConstrainingRect() const; |
+ LayoutSize stickyPositionOffset() const; |
+ |
LayoutSize offsetForInFlowPosition() const; |
// IE extensions. Used to calculate offsetWidth/Height. Overridden by inlines (LayoutFlow) |
@@ -350,6 +357,10 @@ private: |
LayoutUnit computedCSSPadding(const Length&) const; |
bool isBoxModelObject() const final { return true; } |
+ // Returns the bounding rectangle to be used when determining sticky positioning offset. This is the frame rect |
+ // for box objects and the lines bounding box for inline objects. |
+ virtual LayoutRect frameRectForStickyPositioning() const = 0; |
+ |
// The PaintLayer associated with this object. |
// |m_layer| can be nullptr depending on the return value of layerTypeRequired(). |
OwnPtr<PaintLayer> m_layer; |