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

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: Make sticky vertical ref tests expectations not dependent on font size. 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 ab2d5509de0af71a189d0bf07b7ddfd6f36b6bb3..368922a09211bc031a9a7bc77ec50d0edbdc4d9e 100644
--- a/third_party/WebKit/Source/core/page/scrolling/ScrollingCoordinator.cpp
+++ b/third_party/WebKit/Source/core/page/scrolling/ScrollingCoordinator.cpp
@@ -936,7 +936,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
@@ -985,6 +986,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 ==
@@ -1010,6 +1013,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