[webkit-changes] [WebKit/WebKit] b02b49: [scroll-anchoring] Implement suppression triggers

Nikos Mouchtaris noreply at github.com
Thu Nov 9 09:17:45 PST 2023


  Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: b02b493840f0ce869e34fcd65a027245d392bc91
      https://github.com/WebKit/WebKit/commit/b02b493840f0ce869e34fcd65a027245d392bc91
  Author: Nikolaos Mouchtaris <nmouchtaris at apple.com>
  Date:   2023-11-09 (Thu, 09 Nov 2023)

  Changed paths:
    M LayoutTests/imported/w3c/web-platform-tests/css/css-scroll-anchoring/ancestor-change-heuristic-expected.txt
    M LayoutTests/imported/w3c/web-platform-tests/css/css-scroll-anchoring/heuristic-with-offset-update-expected.txt
    M LayoutTests/imported/w3c/web-platform-tests/css/css-scroll-anchoring/opt-out-dynamic-expected.txt
    M LayoutTests/imported/w3c/web-platform-tests/css/css-scroll-anchoring/opt-out-dynamic-scroller-expected.txt
    M LayoutTests/imported/w3c/web-platform-tests/css/css-scroll-anchoring/position-change-heuristic-expected.txt
    M Source/WebCore/page/LocalFrameView.h
    M Source/WebCore/page/scrolling/ScrollAnchoringController.cpp
    M Source/WebCore/page/scrolling/ScrollAnchoringController.h
    M Source/WebCore/rendering/RenderElement.cpp
    M Source/WebCore/rendering/RenderLayerScrollableArea.h
    M Source/WebCore/rendering/RenderObject.cpp
    M Source/WebCore/rendering/RenderObject.h
    M Source/WebCore/rendering/style/RenderStyle.cpp
    M Source/WebCore/rendering/style/RenderStyle.h

  Log Message:
  -----------
  [scroll-anchoring] Implement suppression triggers
https://bugs.webkit.org/show_bug.cgi?id=261719
rdar://115704143

Reviewed by Simon Fraser.

Implement suppression of scroll anchoring adjustments according to the spec
(https://www.w3.org/TR/css-scroll-anchoring-1/#suppression-triggers). This involves suppressing scroll
 anchoring adjustments  when certain “suppression trigger” operations occur when an anchor element has
 been chosen but before a scroll anchoring adjustment has occurred, that would cause the next scroll
anchoring adjustment to be incorrect. These suppression triggers are certain style changes on the anchor
element or any element in the anchor element ancestor chain, up to and including the scrolling element
that owns the scroll anchroing controller, as well as changing to or from being absolutely posititioned,
for any element under the owning scrolling element.

* LayoutTests/imported/w3c/web-platform-tests/css/css-scroll-anchoring/ancestor-change-heuristic-expected.txt:
* LayoutTests/imported/w3c/web-platform-tests/css/css-scroll-anchoring/heuristic-with-offset-update-expected.txt:
* LayoutTests/imported/w3c/web-platform-tests/css/css-scroll-anchoring/opt-out-dynamic-expected.txt:
* LayoutTests/imported/w3c/web-platform-tests/css/css-scroll-anchoring/opt-out-dynamic-scroller-expected.txt:
* LayoutTests/imported/w3c/web-platform-tests/css/css-scroll-anchoring/position-change-heuristic-expected.txt:
* Source/WebCore/page/LocalFrameView.cpp:
(WebCore::LocalFrameView::scheduleResizeEventIfNeeded):
* Source/WebCore/page/scrolling/ScrollAnchoringController.cpp:
(WebCore::elementIsScrollableArea):
(WebCore::setInScrollAnchoringAncestorChain):
(WebCore::ScrollAnchoringController::invalidateAnchorElement):
(WebCore::ScrollAnchoringController::notifyChildHadSuppressingStyleChange):
(WebCore::scrollAnchoringControllerForElement):
(WebCore::ScrollAnchoringController::notifyParentScrollAnchoringControllerHadSuppressingStyleChange):
(WebCore::ScrollAnchoringController::didFindPriorityCandidate):
(WebCore::ScrollAnchoringController::chooseAnchorElement):
(WebCore::ScrollAnchoringController::adjustScrollPositionForAnchoring):
* Source/WebCore/page/scrolling/ScrollAnchoringController.h:
* Source/WebCore/rendering/RenderElement.cpp:
(WebCore::RenderElement::styleDidChange):
* Source/WebCore/rendering/RenderObject.h:
(WebCore::RenderObject::isInScrollAnchoringAncestorChain const):
(WebCore::RenderObject::setIsInScrollAnchoringAncestorChain):
(WebCore::RenderObject::RenderObjectBitfields::RenderObjectBitfields):
* Source/WebCore/rendering/style/RenderStyle.cpp:
(WebCore::RenderStyle::scrollAnchoringSuppressionStyleDidChange const):
(WebCore::RenderStyle::absolutePositionStyleDidChange const):
* Source/WebCore/rendering/style/RenderStyle.h:

Canonical link: https://commits.webkit.org/270455@main




More information about the webkit-changes mailing list