| 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 8609f9b8a1421185ab7c0c486e1c8db92fc9829b..f686b6257209764313e33d507a606c471448acd0 100644
|
| --- a/third_party/WebKit/Source/core/layout/LayoutBoxModelObject.h
|
| +++ b/third_party/WebKit/Source/core/layout/LayoutBoxModelObject.h
|
| @@ -26,6 +26,7 @@
|
|
|
| #include "core/CoreExport.h"
|
| #include "core/layout/LayoutObject.h"
|
| +#include "core/page/scrolling/StickyPositionScrollingConstraints.h"
|
| #include "core/style/ShadowData.h"
|
| #include "platform/geometry/LayoutRect.h"
|
|
|
| @@ -64,6 +65,15 @@ enum ContentChangeType {
|
|
|
| class InlineFlowBox;
|
|
|
| +struct LayoutBoxModelObjectRareData {
|
| + WTF_MAKE_NONCOPYABLE(LayoutBoxModelObjectRareData);
|
| + USING_FAST_MALLOC(LayoutBoxModelObjectRareData);
|
| +public:
|
| + LayoutBoxModelObjectRareData() {}
|
| +
|
| + StickyPositionScrollingConstraints m_stickyPositionScrollingConstraints;
|
| +};
|
| +
|
| // This class is the base class for all CSS objects.
|
| //
|
| // All CSS objects follow the box model object. See THE BOX MODEL section in
|
| @@ -141,6 +151,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.
|
| + FloatRect computeStickyConstrainingRect() const;
|
| + void updateStickyPositionConstraints() const;
|
| + LayoutSize stickyPositionOffset() const;
|
| +
|
| LayoutSize offsetForInFlowPosition() const;
|
|
|
| // IE extensions. Used to calculate offsetWidth/Height. Overridden by inlines (LayoutFlow)
|
| @@ -328,6 +344,8 @@ protected:
|
| void styleWillChange(StyleDifference, const ComputedStyle& newStyle) override;
|
| void styleDidChange(StyleDifference, const ComputedStyle* oldStyle) override;
|
|
|
| + void invalidateStickyConstraints();
|
| +
|
| public:
|
| // These functions are only used internally to manipulate the layout tree structure via remove/insert/appendChildNode.
|
| // Since they are typically called only to move objects around within anonymous blocks (which only have layers in
|
| @@ -359,9 +377,18 @@ private:
|
| LayoutUnit computedCSSPadding(const Length&) const;
|
| bool isBoxModelObject() const final { return true; }
|
|
|
| + LayoutBoxModelObjectRareData& ensureRareData()
|
| + {
|
| + if (!m_rareData)
|
| + m_rareData = adoptPtr(new LayoutBoxModelObjectRareData());
|
| + return *m_rareData.get();
|
| + }
|
| +
|
| // The PaintLayer associated with this object.
|
| // |m_layer| can be nullptr depending on the return value of layerTypeRequired().
|
| OwnPtr<PaintLayer> m_layer;
|
| +
|
| + OwnPtr<LayoutBoxModelObjectRareData> m_rareData;
|
| };
|
|
|
| DEFINE_LAYOUT_OBJECT_TYPE_CASTS(LayoutBoxModelObject, isBoxModelObject());
|
|
|