Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(696)

Unified Diff: third_party/WebKit/Source/core/page/scrolling/ScrollingCoordinator.cpp

Issue 1308273010: Adapt and reland old position sticky implementation (Closed) Base URL: https://chromium.googlesource.com/chromium/blink.git@master
Patch Set: WIP - fix on release, still hits CHECK in LayoutGeometryMap.cpp:156 Created 4 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: third_party/WebKit/Source/core/page/scrolling/ScrollingCoordinator.cpp
diff --git a/third_party/WebKit/Source/core/page/scrolling/ScrollingCoordinator.cpp b/third_party/WebKit/Source/core/page/scrolling/ScrollingCoordinator.cpp
index dcdb913ed6f3de401feb3c1694b0a6a6a8998cbf..f8b21db8d135f737405039e4a3f7ce22f496b32d 100644
--- a/third_party/WebKit/Source/core/page/scrolling/ScrollingCoordinator.cpp
+++ b/third_party/WebKit/Source/core/page/scrolling/ScrollingCoordinator.cpp
@@ -957,7 +957,8 @@ bool ScrollingCoordinator::hasVisibleSlowRepaintViewportConstrainedObjects(Frame
for (const LayoutObject* layoutObject : *viewportConstrainedObjects) {
ASSERT(layoutObject->isBoxModelObject() && layoutObject->hasLayer());
- ASSERT(layoutObject->style()->position() == FixedPosition);
+ ASSERT(layoutObject->style()->position() == FixedPosition
+ || layoutObject->style()->position() == StickyPosition);
PaintLayer* layer = toLayoutBoxModelObject(layoutObject)->layer();
// Whether the Layer scrolls with the viewport is a tree-depenent
@@ -1006,6 +1007,8 @@ MainThreadScrollingReasons ScrollingCoordinator::mainThreadScrollingReasons() co
if (frameView->hasBackgroundAttachmentFixedObjects())
reasons |= MainThreadScrollingReason::kHasBackgroundAttachmentFixedObjects;
+ if (frameView->hasStickyPositionObjects())
+ reasons |= MainThreadScrollingReason::kHasStickyPositionObjects;
FrameView::ScrollingReasons scrollingReasons = frameView->scrollingReasons();
const bool mayBeScrolledByInput = (scrollingReasons == FrameView::Scrollable);
const bool mayBeScrolledByScript = mayBeScrolledByInput || (scrollingReasons ==
@@ -1031,6 +1034,8 @@ String ScrollingCoordinator::mainThreadScrollingReasonsAsText(MainThreadScrollin
stringBuilder.appendLiteral("Has background-attachment:fixed, ");
if (reasons & MainThreadScrollingReason::kHasNonLayerViewportConstrainedObjects)
stringBuilder.appendLiteral("Has non-layer viewport-constrained objects, ");
+ if (reasons & MainThreadScrollingReason::kHasStickyPositionObjects)
+ stringBuilder.appendLiteral("Has sticky position objects, ");
if (reasons & MainThreadScrollingReason::kThreadedScrollingDisabled)
stringBuilder.appendLiteral("Threaded scrolling is disabled, ");

Powered by Google App Engine
This is Rietveld 408576698