[webkit-changes] [WebKit/WebKit] b63bf1: Implement basic pinch-zooming for macOS ui-side co...

Simon Fraser noreply at github.com
Mon Dec 26 23:38:41 PST 2022


  Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: b63bf15f23dce56ba4ccab0dc228b92b8d8f4b45
      https://github.com/WebKit/WebKit/commit/b63bf15f23dce56ba4ccab0dc228b92b8d8f4b45
  Author: Simon Fraser <simon.fraser at apple.com>
  Date:   2022-12-26 (Mon, 26 Dec 2022)

  Changed paths:
    M Source/WebCore/page/Page.cpp
    M Source/WebKit/Shared/RemoteLayerTree/RemoteLayerTreeTransaction.h
    M Source/WebKit/Shared/RemoteLayerTree/RemoteLayerTreeTransaction.mm
    M Source/WebKit/UIProcess/RemoteLayerTree/RemoteLayerTreeDrawingAreaProxy.h
    M Source/WebKit/UIProcess/RemoteLayerTree/RemoteLayerTreeDrawingAreaProxy.mm
    M Source/WebKit/UIProcess/RemoteLayerTree/mac/RemoteLayerTreeDrawingAreaProxyMac.h
    M Source/WebKit/UIProcess/RemoteLayerTree/mac/RemoteLayerTreeDrawingAreaProxyMac.mm
    M Source/WebKit/WebProcess/WebPage/RemoteLayerTree/RemoteLayerTreeDrawingArea.h
    M Source/WebKit/WebProcess/WebPage/RemoteLayerTree/RemoteLayerTreeDrawingArea.mm
    M Source/WebKit/WebProcess/WebPage/mac/RemoteLayerTreeDrawingAreaMac.h
    M Source/WebKit/WebProcess/WebPage/mac/RemoteLayerTreeDrawingAreaMac.mm

  Log Message:
  -----------
  Implement basic pinch-zooming for macOS ui-side compositing
https://bugs.webkit.org/show_bug.cgi?id=247106
rdar://101617575

Reviewed by Tim Horton.

Implement basic pinch-zoom support by hooking up adjustTransientZoom()
and commitTransientZoom() in RemoteLayerTreeDrawingAreaProxyMac, using the
same geometry computations that TiledCoreAnimationDrawingArea does.

To support responsive zooming even when the web process is busy, update
the scale transform to a layer in the UI process by overriding the transform
via a CAAnimation, which is removed when the gesture ends. In order to identify
the correct layer to apply this animation to, include in the transaction
the layerID of the RenderView's layer (which is where page scale is applied).

* Source/WebCore/page/Page.cpp:
(WebCore::Page::setPageScaleFactor):
* Source/WebCore/rendering/RenderLayerBacking.cpp:
(WebCore::RenderLayerBacking::updateChildrenTransformAndAnchorPoint):
* Source/WebKit/Shared/RemoteLayerTree/RemoteLayerTreeTransaction.h:
(WebKit::RemoteLayerTreeTransaction::pageScalingLayerID const):
(WebKit::RemoteLayerTreeTransaction::setPageScalingLayerID):
* Source/WebKit/Shared/RemoteLayerTree/RemoteLayerTreeTransaction.mm:
(WebKit::RemoteLayerTreeTransaction::encode const):
(WebKit::RemoteLayerTreeTransaction::decode):
(WebKit::RemoteLayerTreeTransaction::description const):
* Source/WebKit/UIProcess/RemoteLayerTree/RemoteLayerTreeDrawingAreaProxy.h:
(WebKit::RemoteLayerTreeDrawingAreaProxy::didCommitLayerTree):
* Source/WebKit/UIProcess/RemoteLayerTree/RemoteLayerTreeDrawingAreaProxy.mm:
(WebKit::RemoteLayerTreeDrawingAreaProxy::commitLayerTree):
* Source/WebKit/UIProcess/RemoteLayerTree/mac/RemoteLayerTreeDrawingAreaProxyMac.h:
* Source/WebKit/UIProcess/RemoteLayerTree/mac/RemoteLayerTreeDrawingAreaProxyMac.mm:
(WebKit::RemoteLayerTreeDrawingAreaProxyMac::didCommitLayerTree):
(WebKit::transientZoomTransformOverrideAnimation):
(WebKit::RemoteLayerTreeDrawingAreaProxyMac::applyTransientZoomToLayer):
(WebKit::RemoteLayerTreeDrawingAreaProxyMac::removeTransientZoomFromLayer):
(WebKit::RemoteLayerTreeDrawingAreaProxyMac::adjustTransientZoom):
(WebKit::RemoteLayerTreeDrawingAreaProxyMac::commitTransientZoom):
* Source/WebKit/WebProcess/WebPage/RemoteLayerTree/RemoteLayerTreeDrawingArea.h:
(WebKit::RemoteLayerTreeDrawingArea::willCommitLayerTree):
* Source/WebKit/WebProcess/WebPage/RemoteLayerTree/RemoteLayerTreeDrawingArea.mm:
(WebKit::RemoteLayerTreeDrawingArea::updateRendering):
* Source/WebKit/WebProcess/WebPage/mac/RemoteLayerTreeDrawingAreaMac.h:
* Source/WebKit/WebProcess/WebPage/mac/RemoteLayerTreeDrawingAreaMac.mm:
(WebKit::RemoteLayerTreeDrawingAreaMac::mainFrameTiledBacking const):
(WebKit::RemoteLayerTreeDrawingAreaMac::applyTransientZoomToPage):
(WebKit::RemoteLayerTreeDrawingAreaMac::adjustTransientZoom):
(WebKit::RemoteLayerTreeDrawingAreaMac::commitTransientZoom):
(WebKit::RemoteLayerTreeDrawingAreaMac::willCommitLayerTree):

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




More information about the webkit-changes mailing list