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

Reply via email to