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

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

Issue 1870663002: Reland main thread position sticky implementation. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Only descend into children which have an ancestor overflow layer. Created 4 years, 8 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 35e37d352f62e6a14573bc7edb311234b1c016d6..7e5ceb89d6cfdb1e56302f0f3b27fe566fcc0ea9 100644
--- a/third_party/WebKit/Source/core/page/scrolling/ScrollingCoordinator.cpp
+++ b/third_party/WebKit/Source/core/page/scrolling/ScrollingCoordinator.cpp
@@ -937,7 +937,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
@@ -986,6 +987,8 @@ MainThreadScrollingReasons ScrollingCoordinator::mainThreadScrollingReasons() co
if (frameView->hasBackgroundAttachmentFixedObjects())
reasons |= MainThreadScrollingReason::kHasBackgroundAttachmentFixedObjects;
+ if (frameView->hasStickyPositionObjects())
+ reasons |= MainThreadScrollingReason::kHasStickyPositionObjects;
FrameView::ScrollingReasons scrollingReasons = frameView->getScrollingReasons();
const bool mayBeScrolledByInput = (scrollingReasons == FrameView::Scrollable);
const bool mayBeScrolledByScript = mayBeScrolledByInput || (scrollingReasons ==
@@ -1011,6 +1014,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, ");
if (reasons & MainThreadScrollingReason::kAnimatingScrollOnMainThread)

Powered by Google App Engine
This is Rietveld 408576698