Branch: refs/heads/main
Home: https://github.com/WebKit/WebKit
Commit: fb771a5f14b71e6ac44d8b879e9085e752685278
https://github.com/WebKit/WebKit/commit/fb771a5f14b71e6ac44d8b879e9085e752685278
Author: Etienne Segonzac <[email protected]>
Date: 2026-02-10 (Tue, 10 Feb 2026)
Changed paths:
M Source/WebCore/page/scrolling/ScrollingTree.h
M Source/WebCore/page/scrolling/cocoa/ScrollingTreeFixedNodeCocoa.h
M Source/WebCore/page/scrolling/cocoa/ScrollingTreeFixedNodeCocoa.mm
M Source/WebCore/page/scrolling/cocoa/ScrollingTreeStickyNodeCocoa.h
M Source/WebCore/page/scrolling/cocoa/ScrollingTreeStickyNodeCocoa.mm
M Source/WebKit/Platform/spi/ios/UIKitSPI.h
M Source/WebKit/Shared/RemoteLayerTree/RemoteLayerTreePropertyApplier.mm
M Source/WebKit/UIProcess/API/ios/WKWebViewTestingIOS.mm
M Source/WebKit/UIProcess/RemoteLayerTree/RemoteLayerTreeNode.h
M Source/WebKit/UIProcess/RemoteLayerTree/RemoteLayerTreeNode.mm
M Source/WebKit/UIProcess/RemoteLayerTree/RemoteScrollingCoordinatorProxy.h
M Source/WebKit/UIProcess/RemoteLayerTree/RemoteScrollingTree.cpp
M Source/WebKit/UIProcess/RemoteLayerTree/RemoteScrollingTree.h
M
Source/WebKit/UIProcess/RemoteLayerTree/ios/RemoteScrollingCoordinatorProxyIOS.h
M
Source/WebKit/UIProcess/RemoteLayerTree/ios/RemoteScrollingCoordinatorProxyIOS.mm
Log Message:
-----------
[visionOS] Add support for RemoteEffects based OverlayRegions
https://bugs.webkit.org/show_bug.cgi?id=307059
<rdar://163353038>
Reviewed by Mike Wyrzykowski.
Add support for new Remote Effect based Overlay Regions behind a compile
time flag.
Instead of doing big tree traversals after each rendering update, this
API let's us use clearer signals:
- EventRegion changes (setEventRegion)
- VisibleRect changes (visibleRectChangedForOverlayRegions)
- RLT hierarchy changes (updateOverlayRegionAfterHierarchyChange)
- Sticky nodes begin/end sticking
(stickyScrollingTreeNodeBeganSticking/EndedSticking)
- Fixed/sticky nodes added/removed (fixedOrStickyScrollingTreeNodeWillBeRemoved)
It also removes the need for doing coordinate space conversions and
clipping on our end!
Tests: LayoutTests/overlay-region/*
* Source/WebCore/page/scrolling/ScrollingTree.h:
(WebCore::ScrollingTree::stickyScrollingTreeNodeEndedSticking):
(WebCore::ScrollingTree::scrollingTreeNodeWillBeRemoved):
* Source/WebCore/page/scrolling/cocoa/ScrollingTreeFixedNodeCocoa.h:
* Source/WebCore/page/scrolling/cocoa/ScrollingTreeFixedNodeCocoa.mm:
(WebCore::ScrollingTreeFixedNodeCocoa::willBeDestroyed):
* Source/WebCore/page/scrolling/cocoa/ScrollingTreeStickyNodeCocoa.h:
* Source/WebCore/page/scrolling/cocoa/ScrollingTreeStickyNodeCocoa.mm:
(WebCore::ScrollingTreeStickyNodeCocoa::willBeDestroyed):
(WebCore::ScrollingTreeStickyNodeCocoa::setIsSticking):
Gather signals on begin sticking, end sticking and node removal to
update the effects.
* Source/WebKit/Platform/spi/ios/UIKitSPI.h:
Complete the SPI header for remote effects.
* Source/WebKit/Shared/RemoteLayerTree/RemoteLayerTreePropertyApplier.mm:
(WebKit::RemoteLayerTreePropertyApplier::applyProperties):
(WebKit::RemoteLayerTreePropertyApplier::applyHierarchyUpdates):
Gather signals on visible rect and hierarchy changes.
* Source/WebKit/UIProcess/API/ios/WKWebViewTestingIOS.mm:
(dumpUIView):
Add testing support for the new RemoteEffect based system.
* Source/WebKit/UIProcess/RemoteLayerTree/RemoteLayerTreeNode.h:
* Source/WebKit/UIProcess/RemoteLayerTree/RemoteLayerTreeNode.mm:
(WebKit::RemoteLayerTreeNode::setEventRegion):
(WebKit::RemoteLayerTreeNode::setIsLookToScrollExclusion):
(WebKit::RemoteLayerTreeNode::updateExclusionRegion):
(WebKit::RemoteLayerTreeNode::updateExclusionRegionAndDescendants):
(WebKit::RemoteLayerTreeNode::visibleRectChangedForOverlayRegions):
(WebKit::RemoteLayerTreeNode::updateOverlayRegionAfterHierarchyChange):
Introduce methods to manage overlay region effects on
RemoteLayerTreeNodes and subtrees.
* Source/WebKit/UIProcess/RemoteLayerTree/RemoteScrollingCoordinatorProxy.h:
(WebKit::RemoteScrollingCoordinatorProxy::stickyScrollingTreeNodeEndedSticking):
(WebKit::RemoteScrollingCoordinatorProxy::scrollingTreeNodeWillBeRemoved):
* Source/WebKit/UIProcess/RemoteLayerTree/RemoteScrollingTree.cpp:
(WebKit::RemoteScrollingTree::stickyScrollingTreeNodeEndedSticking):
(WebKit::RemoteScrollingTree::scrollingTreeNodeWillBeRemoved):
* Source/WebKit/UIProcess/RemoteLayerTree/RemoteScrollingTree.h:
*
Source/WebKit/UIProcess/RemoteLayerTree/ios/RemoteScrollingCoordinatorProxyIOS.h:
*
Source/WebKit/UIProcess/RemoteLayerTree/ios/RemoteScrollingCoordinatorProxyIOS.mm:
(WebKit::RemoteScrollingCoordinatorProxyIOS::updateOverlayRegions):
(WebKit::RemoteScrollingCoordinatorProxyIOS::overlayRegionsEnabledChanged):
(WebKit::RemoteScrollingCoordinatorProxyIOS::selectOverlayRegionScrollViewIfNeeded):
(WebKit::RemoteScrollingCoordinatorProxyIOS::updateOverlayRegionLayers):
(WebKit::RemoteScrollingCoordinatorProxyIOS::updateAllFixedAndStickyOverlayRegions):
(WebKit::RemoteScrollingCoordinatorProxyIOS::updateOverlayRegionForNode):
(WebKit::RemoteScrollingCoordinatorProxyIOS::nodeQualifiesForOverlayRegionExclusions
const):
(WebKit::RemoteScrollingCoordinatorProxyIOS::stickyScrollingTreeNodeBeganSticking):
(WebKit::RemoteScrollingCoordinatorProxyIOS::stickyScrollingTreeNodeEndedSticking):
(WebKit::RemoteScrollingCoordinatorProxyIOS::scrollingTreeNodeWillBeRemoved):
(WebKit::RemoteScrollingCoordinatorProxyIOS::connectStateNodeLayers):
Bifurcate code paths based on ENABLE(OVERLAY_REGIONS_REMOTE_EFFECT).
Canonical link: https://commits.webkit.org/307168@main
To unsubscribe from these emails, change your notification settings at
https://github.com/WebKit/WebKit/settings/notifications