[webkit-changes] [WebKit/WebKit] aa6898: AX: Extremely long textareas/contenteditable field...

Joshua Hoffman noreply at github.com
Wed Nov 1 11:26:31 PDT 2023


  Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: aa6898f2464d872d4e8e64c01b046f8fd04390c0
      https://github.com/WebKit/WebKit/commit/aa6898f2464d872d4e8e64c01b046f8fd04390c0
  Author: Joshua Hoffman <jhoffman23 at apple.com>
  Date:   2023-11-01 (Wed, 01 Nov 2023)

  Changed paths:
    A LayoutTests/accessibility/mac/large-text-area-expected.txt
    A LayoutTests/accessibility/mac/large-text-area.html
    A LayoutTests/accessibility/mac/spellcheck-with-voiceover-expected.txt
    A LayoutTests/accessibility/mac/spellcheck-with-voiceover.html
    M LayoutTests/platform/mac-wk1/TestExpectations
    M Source/WebCore/accessibility/isolatedtree/mac/AXIsolatedObjectMac.mm
    M Source/WebCore/accessibility/mac/AXObjectCacheMac.mm
    M Source/WebCore/editing/Editor.cpp
    M Source/WebCore/editing/TextCheckingHelper.cpp
    M Source/WebCore/editing/TextCheckingHelper.h
    M Tools/WebKitTestRunner/InjectedBundle/AccessibilityController.h
    M Tools/WebKitTestRunner/InjectedBundle/Bindings/AccessibilityController.idl
    M Tools/WebKitTestRunner/InjectedBundle/atspi/AccessibilityControllerAtspi.cpp
    M Tools/WebKitTestRunner/InjectedBundle/ios/AccessibilityControllerIOS.mm
    M Tools/WebKitTestRunner/InjectedBundle/mac/AccessibilityControllerMac.mm
    M Tools/WebKitTestRunner/InjectedBundle/win/AccessibilityControllerWin.cpp

  Log Message:
  -----------
  AX: Extremely long textareas/contenteditable fields are slow with Voiceover
https://bugs.webkit.org/show_bug.cgi?id=263303
rdar://problem/117114220

Reviewed by Tyler Wilcock.

Very long textareas/contenteditable fields can be slow with AT due to two expensive operations in WebKit:
(1) Spellchecking long text & drawing misspellings.
(2) Caching text using rangeForCharacterRange on the isolated tree.

This patch addresses those two causes by:
(1) Not spellchecking on the WebKit side when Voiceover is the AX client.
(2) Only caching textarea/contenteditable values with fewer than 12,500 characters.

There are also two tests included in this patch. The first verifies that not caching input values greater
than 12,500 does not change behavior and the second confirms that we do not spellcheck within WebKit when
VoiceOver is the AX client.

* LayoutTests/accessibility/mac/large-text-area-expected.txt: Added.
* LayoutTests/accessibility/mac/large-text-area.html: Added.
* LayoutTests/accessibility/mac/spellcheck-with-voiceover-expected.txt: Added.
* LayoutTests/accessibility/mac/spellcheck-with-voiceover.html: Added.
* LayoutTests/platform/mac-wk1/TestExpectations:
* Source/WebCore/accessibility/isolatedtree/mac/AXIsolatedObjectMac.mm:
(WebCore::AXIsolatedObject::initializePlatformProperties):
* Source/WebCore/accessibility/mac/AXObjectCacheMac.mm:
(WebCore::AXObjectCache::shouldSpellCheck):
* Source/WebCore/editing/Editor.cpp:
(WebCore::Editor::markMisspellingsAfterTypingToWord):
(WebCore::Editor::markAllMisspellingsAndBadGrammarInRanges):
(WebCore::Editor::markMisspellingsAndBadGrammar):
* Source/WebCore/editing/TextCheckingHelper.cpp:
(WebCore::TextCheckingHelper::findFirstMisspelledWordOrUngrammaticalPhrase const):
(WebCore::TextCheckingHelper::guessesForMisspelledWordOrUngrammaticalPhrase const):
(WebCore::platformOrClientDrivenTextCheckerEnabled):
* Source/WebCore/editing/TextCheckingHelper.h:
* Tools/WebKitTestRunner/InjectedBundle/AccessibilityController.h:
* Tools/WebKitTestRunner/InjectedBundle/Bindings/AccessibilityController.idl:
* Tools/WebKitTestRunner/InjectedBundle/atspi/AccessibilityControllerAtspi.cpp:
(WTR::AccessibilityController::overrideClient):
* Tools/WebKitTestRunner/InjectedBundle/ios/AccessibilityControllerIOS.mm:
(WTR::AccessibilityController::overrideClient):
* Tools/WebKitTestRunner/InjectedBundle/mac/AccessibilityControllerMac.mm:
(WTR::AccessibilityController::overrideClient):
* Tools/WebKitTestRunner/InjectedBundle/win/AccessibilityControllerWin.cpp:
(WTR::AccessibilityController::overrideClient):

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




More information about the webkit-changes mailing list