[webkit-changes] [WebKit/WebKit] 5220b6: Re-enable and refresh Overlay Regions

Etienne Segonzac noreply at github.com
Thu Feb 1 00:43:20 PST 2024


  Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: 5220b67a61e25c2737f3a6c1ba155f5cf54f231d
      https://github.com/WebKit/WebKit/commit/5220b67a61e25c2737f3a6c1ba155f5cf54f231d
  Author: Etienne Segonzac <sgz at apple.com>
  Date:   2024-02-01 (Thu, 01 Feb 2024)

  Changed paths:
    M LayoutTests/TestExpectations
    A LayoutTests/overlay-region/fixed-node-updates-expected.txt
    A LayoutTests/overlay-region/fixed-node-updates.html
    A LayoutTests/overlay-region/full-page-dynamic-expected.txt
    A LayoutTests/overlay-region/full-page-dynamic.html
    A LayoutTests/overlay-region/full-page-expected.txt
    A LayoutTests/overlay-region/full-page-horizontal-expected.txt
    A LayoutTests/overlay-region/full-page-horizontal.html
    A LayoutTests/overlay-region/full-page-overflow-expected.txt
    A LayoutTests/overlay-region/full-page-overflow-scrolling-expected.txt
    A LayoutTests/overlay-region/full-page-overflow-scrolling.html
    A LayoutTests/overlay-region/full-page-overflow.html
    A LayoutTests/overlay-region/full-page-scrolling-expected.txt
    A LayoutTests/overlay-region/full-page-scrolling.html
    A LayoutTests/overlay-region/full-page.html
    A LayoutTests/overlay-region/many-candidates-expected.txt
    A LayoutTests/overlay-region/many-candidates.html
    A LayoutTests/overlay-region/map-expected.txt
    A LayoutTests/overlay-region/map-small-expected.txt
    A LayoutTests/overlay-region/map-small.html
    A LayoutTests/overlay-region/map.html
    A LayoutTests/overlay-region/split-scrollers-expected.txt
    A LayoutTests/overlay-region/split-scrollers.html
    M Source/WebKit/Shared/RemoteLayerTree/RemoteLayerTreeTransaction.h
    M Source/WebKit/UIProcess/API/ios/WKWebViewIOS.mm
    M Source/WebKit/UIProcess/API/ios/WKWebViewTestingIOS.mm
    M Source/WebKit/UIProcess/RemoteLayerTree/RemoteLayerTreeDrawingAreaProxy.h
    M Source/WebKit/UIProcess/RemoteLayerTree/RemoteLayerTreeHost.h
    M Source/WebKit/UIProcess/RemoteLayerTree/ios/RemoteScrollingCoordinatorProxyIOS.h
    M Source/WebKit/UIProcess/RemoteLayerTree/ios/RemoteScrollingCoordinatorProxyIOS.mm
    M Source/WebKit/UIProcess/ios/WKBaseScrollView.h
    M Source/WebKit/UIProcess/ios/WKBaseScrollView.mm
    M Source/WebKit/UIProcess/ios/WKScrollView.h
    M Source/WebKit/UIProcess/ios/WKScrollView.mm

  Log Message:
  -----------
  Re-enable and refresh Overlay Regions
https://bugs.webkit.org/show_bug.cgi?id=268112
<rdar://119322854>

Reviewed by Mike Wyrzykowski.

The code for Overlay Regions is re-enabled and refreshed.
It now supports overflow scrolling and focuses on a single "selected"
scroll view.
A sizeable test suite is added to make future modifications easier.

* Source/WebKit/Shared/RemoteLayerTree/RemoteLayerTreeTransaction.h:
Making the LayerPropertiesMap type usable in WKWebViewIOS.
* Source/WebKit/UIProcess/API/ios/WKWebViewIOS.mm:
(addOverlayEventRegions):
Updated, now only responsible to build the overlayRegionsIDs set.
(configureScrollViewWithOverlayRegionsIDs):
New function building a HashSet<IntRect> to pass to the
selected scroll view.
(-[WKWebView _scrollViewCanHaveOverlayRegions:]):
(-[WKWebView _selectOverlayRegionScrollView:]):
This method selects the main scroll view to use for Overlay Regions.
The top level WKScrollView takes priority, otherwise we select the
candidate covering the largest area.
(-[WKWebView _updateOverlayRegions:destroyedLayers:]):
Remove destroyed layers from the scrolling coordinator proxy tracking.
Update the overlayRegionsIDs set.
Select the overlayRegionScrollView and configure it.

* Source/WebKit/UIProcess/RemoteLayerTree/ios/RemoteScrollingCoordinatorProxyIOS.h:
* Source/WebKit/UIProcess/RemoteLayerTree/ios/RemoteScrollingCoordinatorProxyIOS.mm:
(WebKit::RemoteScrollingCoordinatorProxyIOS::removeDestroyedLayerIDs):
(WebKit::RemoteScrollingCoordinatorProxyIOS::removeFixedScrollingNodeLayerIDs): Deleted.
Renamed. Now removes destroyed layers from all tracking properties.
(WebKit::RemoteScrollingCoordinatorProxyIOS::connectStateNodeLayers):
Now keeps track of:
- fixed and sticky nodes
- scrolling node (by PlatformLayerIdentifier so we can remove the
  destroyed layers)
(WebKit:: const):
Generates a list of scroll view candidates for Overlay Regions, based on
the scrolling node tracking.

* Source/WebKit/UIProcess/ios/WKBaseScrollView.h:
* Source/WebKit/UIProcess/ios/WKBaseScrollView.mm:
(-[WKBaseScrollView _updateOverlayRegionRects:]):
(-[WKBaseScrollView _updateOverlayRegionsBehavior:]):
New API/Addition for Overlay Regions.

* Source/WebKit/UIProcess/RemoteLayerTree/RemoteLayerTreeDrawingAreaProxy.h:
(WebKit::RemoteLayerTreeDrawingAreaProxy::updateOverlayRegionIDs): Deleted.
* Source/WebKit/UIProcess/RemoteLayerTree/RemoteLayerTreeHost.h:
(WebKit::RemoteLayerTreeHost::overlayRegionIDs const): Deleted.
(WebKit::RemoteLayerTreeHost::updateOverlayRegionIDs): Deleted.
Remove dead code.

* Source/WebKit/UIProcess/ios/WKScrollView.h:
* Source/WebKit/UIProcess/ios/WKScrollView.mm:
(addDebugOverlays): Deleted.
(-[WKScrollView _updateOverlayRegions:]): Deleted.
(-[WKScrollView overlayRegions]): Deleted.
Remove dead code.

* Source/WebKit/UIProcess/API/ios/WKWebViewTestingIOS.mm:
(dumpUIView):
Fix a typo in `rectToString`.
Add extra properties to the UIView dump for Overlay Regions.

* LayoutTests/TestExpectations:
* LayoutTests/overlay-region/fixed-node-updates-expected.txt: Added.
* LayoutTests/overlay-region/fixed-node-updates.html: Added.
* LayoutTests/overlay-region/full-page-dynamic-expected.txt: Added.
* LayoutTests/overlay-region/full-page-dynamic.html: Added.
* LayoutTests/overlay-region/full-page-expected.txt: Added.
* LayoutTests/overlay-region/full-page-horizontal-expected.txt: Added.
* LayoutTests/overlay-region/full-page-horizontal.html: Added.
* LayoutTests/overlay-region/full-page-overflow-expected.txt: Added.
* LayoutTests/overlay-region/full-page-overflow-scrolling-expected.txt: Added.
* LayoutTests/overlay-region/full-page-overflow-scrolling.html: Added.
* LayoutTests/overlay-region/full-page-overflow.html: Added.
* LayoutTests/overlay-region/full-page-scrolling-expected.txt: Added.
* LayoutTests/overlay-region/full-page-scrolling.html: Added.
* LayoutTests/overlay-region/full-page.html: Added.
* LayoutTests/overlay-region/many-candidates-expected.txt: Added.
* LayoutTests/overlay-region/many-candidates.html: Added.
* LayoutTests/overlay-region/map-expected.txt: Added.
* LayoutTests/overlay-region/map-small-expected.txt: Added.
* LayoutTests/overlay-region/map-small.html: Added.
* LayoutTests/overlay-region/map.html: Added.
* LayoutTests/overlay-region/split-scrollers-expected.txt: Added.
* LayoutTests/overlay-region/split-scrollers.html: Added.
Add a new test suite for the feature, skipping in the current runners.

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




More information about the webkit-changes mailing list