Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: 9cce2afd2b8d404682d457ca8b6eb5b519520101
      
https://github.com/WebKit/WebKit/commit/9cce2afd2b8d404682d457ca8b6eb5b519520101
  Author: Wenson Hsieh <[email protected]>
  Date:   2024-12-16 (Mon, 16 Dec 2024)

  Changed paths:
    M Source/WebKit/Shared/ios/InteractionInformationAtPosition.h
    M Source/WebKit/Shared/ios/InteractionInformationAtPosition.serialization.in
    M Source/WebKit/UIProcess/ios/WKContentViewInteraction.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/ios/WebPageIOS.mm

  Log Message:
  -----------
  [UnifiedPDF] [iOS] Support context menu when long pressing on links
https://bugs.webkit.org/show_bug.cgi?id=284760
rdar://141555318

Reviewed by Abrar Rahman Protyasha.

Add support for long-pressing on links in PDFs on iOS, when unified PDF is 
enabled. See below for
more details.

* Source/WebKit/Shared/ios/InteractionInformationAtPosition.h:
* Source/WebKit/Shared/ios/InteractionInformationAtPosition.serialization.in:

Add an `isInPlugin` flag to position information, so that we can bail early if 
the user selects
"Copy Link" and handle the interaction without round-tripping back to the web 
process.

* Source/WebKit/UIProcess/ios/WKContentViewInteraction.mm:
(-[WKContentView actionSheetAssistant:performAction:]):
(-[WKContentView _tryToCopyLinkURLFromPlugin]):

Handle the Copy action immediately, in the case where the long-pressed 
"element" is a link
annotation inside a PDF plugin.

* Source/WebKit/WebProcess/Plugins/PDF/PDFPluginBase.h:
(WebKit::PDFPluginBase::linkURLAndBoundsAtPoint const):
* Source/WebKit/WebProcess/Plugins/PDF/UnifiedPDF/UnifiedPDFPlugin.h:
* Source/WebKit/WebProcess/Plugins/PDF/UnifiedPDF/UnifiedPDFPlugin.mm:
(WebKit::UnifiedPDFPlugin::linkURLAndBoundsAtPoint const):

Add a new method to retrieve the link URL and bounds at the given point in root 
view coordinates;
reimplement `highlightRectForTapAtPoint` on top of `linkURLAndBoundsAtPoint`. 
Note that I opted to
keep this separate method instead of removing it and just using 
`linkURLAndBoundsAtPoint` when
getting rects for the tap highlight, since we'll probably want to support other 
kinds of tappable
annotations (for which we want to show the tap highlight) in the future.

(WebKit::UnifiedPDFPlugin::highlightRectForTapAtPoint const):
(WebKit::UnifiedPDFPlugin::handleSyntheticClick):

Drive-by fix: allow shift-tap on links with an active selection to trigger 
navigation.

* Source/WebKit/WebProcess/Plugins/PluginView.cpp:
(WebKit::PluginView::linkURLAndBoundsAtPoint const):
* Source/WebKit/WebProcess/Plugins/PluginView.h:
* Source/WebKit/WebProcess/WebPage/ios/WebPageIOS.mm:
(WebKit::WebPage::positionInformation):

Populate `isLink`, `url`, `bounds`, and `isInPlugin` when long-pressing a link 
in a PDF.

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



To unsubscribe from these emails, change your notification settings at 
https://github.com/WebKit/WebKit/settings/notifications
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to