Index: third_party/WebKit/Source/core/frame/FrameView.cpp |
diff --git a/third_party/WebKit/Source/core/frame/FrameView.cpp b/third_party/WebKit/Source/core/frame/FrameView.cpp |
index ac7978e78fec30f3f694024d68cc30ae2103d1bd..d37c506630a9dfdfef1d643462d78d2143eec193 100644 |
--- a/third_party/WebKit/Source/core/frame/FrameView.cpp |
+++ b/third_party/WebKit/Source/core/frame/FrameView.cpp |
@@ -136,6 +136,7 @@ FrameView::FrameView(LocalFrame* frame) |
, m_safeToPropagateScrollToParent(true) |
, m_isTrackingPaintInvalidations(false) |
, m_scrollCorner(nullptr) |
+ , m_stickyPositionObjectCount(0) |
, m_inputEventsScaleFactorForEmulation(1) |
, m_layoutSizeFixedToFrameSize(true) |
, m_didScrollTimer(this, &FrameView::didScrollTimerFired) |
@@ -1601,6 +1602,14 @@ void FrameView::updateLayersAndCompositingAfterScrollIfNeeded() |
if (!hasViewportConstrainedObjects()) |
return; |
+ // Update sticky position objects which are stuck to the viewport. |
+ for (const auto& viewportConstrainedObject : *m_viewportConstrainedObjects) { |
+ LayoutObject* layoutObject = viewportConstrainedObject; |
+ PaintLayer* layer = toLayoutBoxModelObject(layoutObject)->layer(); |
+ if (layoutObject->style()->position() == StickyPosition) |
+ layer->updateLayerPosition(); |
+ } |
+ |
// If there fixed position elements, scrolling may cause compositing layers to change. |
// Update widget and layer positions after scrolling, but only if we're not inside of |
// layout. |