Index: third_party/WebKit/Source/core/paint/PaintLayerScrollableArea.h |
diff --git a/third_party/WebKit/Source/core/paint/PaintLayerScrollableArea.h b/third_party/WebKit/Source/core/paint/PaintLayerScrollableArea.h |
index ba390ad058bb2ddf57f8714fc8fcc9e1a3c2e85d..8ae8e334a72c82bac1210656b4b101859267bbcf 100644 |
--- a/third_party/WebKit/Source/core/paint/PaintLayerScrollableArea.h |
+++ b/third_party/WebKit/Source/core/paint/PaintLayerScrollableArea.h |
@@ -63,6 +63,17 @@ class LayoutBox; |
class PaintLayer; |
class LayoutScrollbarPart; |
+typedef WTF::HashMap<PaintLayer*, StickyPositionScrollingConstraints> StickyConstraintsMap; |
+ |
+struct PaintLayerScrollableAreaRareData { |
+ WTF_MAKE_NONCOPYABLE(PaintLayerScrollableAreaRareData); |
+ USING_FAST_MALLOC(PaintLayerScrollableAreaRareData); |
+public: |
+ PaintLayerScrollableAreaRareData() {} |
+ |
+ StickyConstraintsMap m_stickyConstraintsMap; |
+}; |
+ |
// PaintLayerScrollableArea represents the scrollable area of a LayoutBox. |
// |
// To be scrollable, an element requires ‘overflow’ != visible. Note that this |
@@ -340,6 +351,10 @@ public: |
bool shouldRebuildVerticalScrollbarLayer() const { return m_rebuildVerticalScrollbarLayer; } |
void resetRebuildScrollbarLayerFlags(); |
+ StickyConstraintsMap& stickyConstraintsMap() { return ensureRareData().m_stickyConstraintsMap; } |
+ void invalidateAllStickyConstraints(); |
+ void invalidateStickyConstraintsFor(PaintLayer*, bool needsCompositingUpdate = true); |
+ |
DECLARE_VIRTUAL_TRACE(); |
private: |
@@ -375,6 +390,18 @@ private: |
void updateCompositingLayersAfterScroll(); |
+ PaintLayerScrollableAreaRareData* rareData() |
+ { |
+ return m_rareData.get(); |
+ } |
+ |
+ PaintLayerScrollableAreaRareData& ensureRareData() |
+ { |
+ if (!m_rareData) |
+ m_rareData = adoptPtr(new PaintLayerScrollableAreaRareData()); |
+ return *m_rareData.get(); |
+ } |
+ |
// PaintInvalidationCapableScrollableArea |
LayoutBox& boxForScrollControlPaintInvalidation() const { return box(); } |
@@ -421,6 +448,8 @@ private: |
ScrollAnchor m_scrollAnchor; |
+ OwnPtr<PaintLayerScrollableAreaRareData> m_rareData; |
+ |
#if ENABLE(ASSERT) |
bool m_hasBeenDisposed; |
#endif |