| 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 a6304a708559976dd77b0674c4d684c51db6b62f..2704201e74133f122617f9a9fe6dc8d0366e7419 100644
|
| --- a/third_party/WebKit/Source/core/frame/FrameView.cpp
|
| +++ b/third_party/WebKit/Source/core/frame/FrameView.cpp
|
| @@ -131,6 +131,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)
|
| @@ -1605,6 +1606,14 @@ void FrameView::updateLayersAndCompositingAfterScrollIfNeeded()
|
|
|
| RefPtrWillBeRawPtr<FrameView> protect(this);
|
|
|
| + // 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.
|
|
|