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

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: Store ancestor overflow layer on PaintLayer to compute before other dependent compositing inputs. Created 4 years, 9 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 64b593007bef03305bc46751b998475215d6141b..ae026764b5c8ebad21c1826b695aa86b603f8230 100644
--- a/third_party/WebKit/Source/core/page/scrolling/ScrollingCoordinator.cpp
+++ b/third_party/WebKit/Source/core/page/scrolling/ScrollingCoordinator.cpp
@@ -962,7 +962,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
@@ -1011,6 +1012,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 ==
@@ -1036,6 +1039,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