[webkit-changes] [WebKit/WebKit] 4e3c07: [UnifiedPDF] [iOS] Double-tap to zoom has no effect

Abrar Rahman Protyasha noreply at github.com
Wed Feb 12 17:12:42 PST 2025


  Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: 4e3c0732e9874fe1c9cc27eb52635b4297fe9ea4
      https://github.com/WebKit/WebKit/commit/4e3c0732e9874fe1c9cc27eb52635b4297fe9ea4
  Author: Abrar Rahman Protyasha <a_protyasha at apple.com>
  Date:   2025-02-12 (Wed, 12 Feb 2025)

  Changed paths:
    M Source/WebKit/Platform/spi/Cocoa/PDFKitSPI.h
    M Source/WebKit/UIProcess/PageClient.h
    M Source/WebKit/UIProcess/WebPageProxy.h
    M Source/WebKit/UIProcess/WebPageProxy.messages.in
    M Source/WebKit/UIProcess/ios/PageClientImplIOS.h
    M Source/WebKit/UIProcess/ios/PageClientImplIOS.mm
    M Source/WebKit/UIProcess/ios/WKContentViewInteraction.h
    M Source/WebKit/UIProcess/ios/WKContentViewInteraction.mm
    M Source/WebKit/UIProcess/ios/WebPageProxyIOS.mm
    M Source/WebKit/WebProcess/Plugins/PDF/PDFPluginBase.h
    M Source/WebKit/WebProcess/Plugins/PDF/UnifiedPDF/UnifiedPDFPlugin.h
    M Source/WebKit/WebProcess/Plugins/PDF/UnifiedPDF/UnifiedPDFPlugin.mm
    M Source/WebKit/WebProcess/Plugins/PluginView.cpp
    M Source/WebKit/WebProcess/Plugins/PluginView.h
    M Source/WebKit/WebProcess/WebPage/ViewGestureGeometryCollector.cpp
    M Source/WebKit/WebProcess/WebPage/ios/WebPageIOS.mm

  Log Message:
  -----------
  [UnifiedPDF] [iOS] Double-tap to zoom has no effect
https://bugs.webkit.org/show_bug.cgi?id=287515
rdar://120425634

Reviewed by Tim Horton and Wenson Hsieh.

This patch teaches ViewGestureController to compute zoom information for
the main frame plugin element. We achieve this by computing the root
view bounding rect for the plugin at a tap location. In the spirit of
"smart" magnification, this bounding rect corresponds to the column
frame for text under the tap location in the document. However, we
return an empty rect when there is no available text, which makes us
fall back to our backup double-tap-to-zoom heuristics for web content.

Manually tested. Could not add an automated test because we don't really
have infrastructure in place to trigger UIKit double tap gestures in
TestWebKitAPI.

* Source/WebKit/Platform/spi/Cocoa/PDFKitSPI.h:

Declare the -[PDFPage columnFrameAtPoint:] SPI for open source builds.

* Source/WebKit/UIProcess/PageClient.h:
* Source/WebKit/UIProcess/WebPageProxy.h:
* Source/WebKit/UIProcess/WebPageProxy.messages.in:
* Source/WebKit/UIProcess/ios/PageClientImplIOS.h:
* Source/WebKit/UIProcess/ios/PageClientImplIOS.mm:
(WebKit::PageClientImpl::handleSmartMagnificationInformationForPotentialTap):
* Source/WebKit/UIProcess/ios/WKContentViewInteraction.h:
* Source/WebKit/UIProcess/ios/WKContentViewInteraction.mm:
(-[WKContentView _handleSmartMagnificationInformationForPotentialTap:renderRect:fitEntireRect:viewportMinimumScale:viewportMaximumScale:nodeIsRootLevel:nodeIsPluginElement:]):
(-[WKContentView _handleSmartMagnificationInformationForPotentialTap:renderRect:fitEntireRect:viewportMinimumScale:viewportMaximumScale:nodeIsRootLevel:]): Deleted.

Add a new argument `nodeIsPluginElement`, which we can consult to blast
through the "faster clicks over double tap" preference if the tapped
node is a plugin element.

* Source/WebKit/UIProcess/ios/WebPageProxyIOS.mm:
(WebKit::WebPageProxy::handleSmartMagnificationInformationForPotentialTap):
* Source/WebKit/WebProcess/Plugins/PDF/PDFPluginBase.h:
(WebKit::PDFPluginBase::absoluteBoundingRectForSmartMagnificationAtPoint const):
* Source/WebKit/WebProcess/Plugins/PDF/UnifiedPDF/UnifiedPDFPlugin.h:
* Source/WebKit/WebProcess/Plugins/PDF/UnifiedPDF/UnifiedPDFPlugin.mm:
(WebKit::UnifiedPDFPlugin::absoluteBoundingRectForSmartMagnificationAtPoint const):
* Source/WebKit/WebProcess/Plugins/PluginView.cpp:
(WebKit::PluginView::absoluteBoundingRectForSmartMagnificationAtPoint const):
* Source/WebKit/WebProcess/Plugins/PluginView.h:
* Source/WebKit/WebProcess/WebPage/ViewGestureGeometryCollector.cpp:
(WebKit::ViewGestureGeometryCollector::computeZoomInformationForNode):
* Source/WebKit/WebProcess/WebPage/ios/WebPageIOS.mm:
(WebKit::WebPage::potentialTapAtPosition):

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



To unsubscribe from these emails, change your notification settings at https://github.com/WebKit/WebKit/settings/notifications


More information about the webkit-changes mailing list