[webkit-changes] [WebKit/WebKit] 50d7d2: [Mac Catalyst] Disable spellchecking code in non-e...

Wenson Hsieh noreply at github.com
Mon Jun 12 12:59:04 PDT 2023


  Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: 50d7d248178dab94af78bd8a20e2cba1959dcb8a
      https://github.com/WebKit/WebKit/commit/50d7d248178dab94af78bd8a20e2cba1959dcb8a
  Author: Wenson Hsieh <wenson_hsieh at apple.com>
  Date:   2023-06-12 (Mon, 12 Jun 2023)

  Changed paths:
    M Source/WebKit/WebProcess/WebPage/Cocoa/TextCheckingControllerProxy.mm
    M Tools/TestWebKitAPI/Tests/WebKitCocoa/DocumentEditingContext.mm
    M Tools/TestWebKitAPI/cocoa/DragAndDropSimulator.h
    M Tools/TestWebKitAPI/cocoa/DragAndDropSimulator.mm

  Log Message:
  -----------
  [Mac Catalyst] Disable spellchecking code in non-editable contexts
https://bugs.webkit.org/show_bug.cgi?id=257962
rdar://105576086

Reviewed by Aditya Keerthi.

On Mac Catalyst, the platform-driven text checking codepath is currently active even when selecting
non-editable web content (e.g. in the Books app). While this mostly has no observable effect (other
than unnecessarily calling into spellchecking APIs and attempting to fill spellchecking results back
into non-editable elements on the page), it sometimes causes the selection to change from underneath
the user, as we attempt to restore the previous text selection range underneath
`TextCheckingControllerProxy::replaceRelativeToSelection`.

To avoid this altogether, add a couple of editability checks in `TextCheckingControllerProxy`, such
that we return early in the case where the relevant selection or context range is not in editable
content. Since this annotation text is only used for platform spellchecking, there's no need to
extract this text via `TextIterator` upon every selection change.

Test: DocumentEditingContext.RequestAnnotationsForTextChecking

* Source/WebKit/WebProcess/WebPage/Cocoa/TextCheckingControllerProxy.mm:
(WebKit::TextCheckingControllerProxy::replaceRelativeToSelection):
(WebKit::TextCheckingControllerProxy::annotatedSubstringBetweenPositions):
* Tools/TestWebKitAPI/Tests/WebKitCocoa/DocumentEditingContext.mm:
* Tools/TestWebKitAPI/cocoa/DragAndDropSimulator.h:
* Tools/TestWebKitAPI/cocoa/DragAndDropSimulator.mm:

Additionally fix the TestWebKitAPI build on Catalyst. The build was failing with a linker error
because the main `@implementation` of `DragAndDropSimulator` is guarded by `!PLATFORM(MACCATALYST)`,
but the `DOMElementDrag` category is not. For now, we address this by adding `!PLATFORM(MACCATALYST)`
checks for consistency with the main iOS-specific implementation, but in the future, we should
refactor `DragAndDropSimulator` to work properly on Catalyst.

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




More information about the webkit-changes mailing list