[webkit-changes] [WebKit/WebKit] bce5c3: [UnifiedPDF] [iOS] REGRESSION (288149 at main): Text ...

Wenson Hsieh noreply at github.com
Fri Dec 20 17:01:56 PST 2024


  Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: bce5c33463ffcb67f5e49eb045078745e8ce25f3
      https://github.com/WebKit/WebKit/commit/bce5c33463ffcb67f5e49eb045078745e8ce25f3
  Author: Wenson Hsieh <wenson_hsieh at apple.com>
  Date:   2024-12-20 (Fri, 20 Dec 2024)

  Changed paths:
    M Source/WebKit/WebProcess/Plugins/PluginView.h
    M Source/WebKit/WebProcess/WebPage/WebPage.h
    M Source/WebKit/WebProcess/WebPage/ios/WebPageIOS.mm
    M Tools/TestWebKitAPI/Tests/WebKitCocoa/UnifiedPDFTests.mm
    M Tools/TestWebKitAPI/cocoa/TestWKWebView.h
    M Tools/TestWebKitAPI/cocoa/TestWKWebView.mm

  Log Message:
  -----------
  [UnifiedPDF] [iOS] REGRESSION (288149 at main): Text isn't selected in a PDF document until after the first tap or click
https://bugs.webkit.org/show_bug.cgi?id=285041
rdar://141841951

Reviewed by Abrar Rahman Protyasha and Tim Horton.

After the changes in 288149 at main, we only surface editor states derived from the selection state in
PDF documents, if the plugin element (`embed`) has focus. However, if the user only tries to select
text by long pressing in a PDF document (and hasn't tapped or clicked in the document beforehand),
nothing ensures that the PDF plugin element has focus, so we end up not selecting any text in the
PDF.

Fix this by focusing the plugin element, in the case where we're long pressing (or otherwise moving
the selection) into the PDF plugin.

* Source/WebKit/WebProcess/Plugins/PluginView.h:
* Source/WebKit/WebProcess/WebPage/WebPage.h:
* Source/WebKit/WebProcess/WebPage/ios/WebPageIOS.mm:
(WebKit::WebPage::selectWithGesture):
(WebKit::WebPage::selectPositionAtPoint):
(WebKit::WebPage::updateFocusBeforeSelectingTextAtLocation):

Rename `setFocusedFrameBeforeSelectingTextAtLocation` to `updateFocusBeforeSelectingTextAtLocation`,
to better reflect its new purpose in the case where the user is selecting text inside of a PDF.

(WebKit::WebPage::setSelectionRange):
(WebKit::WebPage::setFocusedFrameBeforeSelectingTextAtLocation): Deleted.
* Tools/TestWebKitAPI/Tests/WebKitCocoa/UnifiedPDFTests.mm:
(TestWebKitAPI::UNIFIED_PDF_TEST):

Add an API test, `UnifiedPDF.CopySelectedText`, that exercises this bug by simulating text selection
in a PDF, programmatically triggering a `-copy:`, and verifying that the selected word ("Test") is
written to the pasteboard.

* Tools/TestWebKitAPI/cocoa/TestWKWebView.h:
* Tools/TestWebKitAPI/cocoa/TestWKWebView.mm:
(-[WKWebView selectTextInGranularity:atPoint:]):

Add a testing helper that calls into `-selectTextInGranularity:atPoint:completionHandler:` (i.e. the
same method that's invoked when long pressing in a web view).

Canonical link: https://commits.webkit.org/288201@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