[webkit-changes] [WebKit/WebKit] 4d7674: AX: Expose accessibility attributes for inline tex...

Joshua Hoffman noreply at github.com
Thu Sep 14 09:29:09 PDT 2023


  Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: 4d7674e3b99d52397632cd994afb20b7e7da5371
      https://github.com/WebKit/WebKit/commit/4d7674e3b99d52397632cd994afb20b7e7da5371
  Author: Joshua Hoffman <jhoffman23 at apple.com>
  Date:   2023-09-14 (Thu, 14 Sep 2023)

  Changed paths:
    A LayoutTests/accessibility/ios-simulator/inline-prediction-attributed-string-expected.txt
    A LayoutTests/accessibility/ios-simulator/inline-prediction-attributed-string.html
    M LayoutTests/platform/ios-16/TestExpectations
    M Source/WebCore/accessibility/AXObjectCache.cpp
    M Source/WebCore/accessibility/AXObjectCache.h
    M Source/WebCore/accessibility/AccessibilityObject.h
    M Source/WebCore/accessibility/AccessibilityObjectInterface.h
    M Source/WebCore/accessibility/ios/AccessibilityObjectIOS.mm
    M Source/WebCore/accessibility/ios/WebAccessibilityObjectWrapperIOS.h
    M Source/WebCore/editing/Editor.cpp

  Log Message:
  -----------
  AX: Expose accessibility attributes for inline text predictions
https://bugs.webkit.org/show_bug.cgi?id=261056
rdar://114844079

Reviewed by Andres Gonzalez.

At present, WebKit does not expose inline predictions to AX clients on iOS. This patch addresses that by adding the attributes
UIAccessibilityInlineTextCompletion and UIAccessibilityAcceptedInlineTextCompletion to the attributed string provided to ATs.

This is accomplished through two new member variables in accessibility objects, which are updated in
AccessibilityObject::setLastPresentedTextPrediction (iOS only):
- m_lastPresentedTextPrediction: the "rest" of the word being predicted. For example, if the text "opportun" had been typed, and
"ity" was presented as a prediction, we would store "ity".
- m_lastPresentedTextPredictionComplete: the whole word being predicted. Using the previous example, we would store the whole word,
"opportunity".

In both cases, we store the string value and the position, offset to the start of the editor. LastPresentedTextPrediction is reset
once a prediction is "accepted", and m_lastPresentedTextPredictionComplete is reset once we start a new composition.

In the iOS accessibility wrapper, we access these values and apply them to the resulting attributed string, if applicable. The
attributedStringSetCompositionAttributes method handles this work, and checks the location and range of the values to ensure
that they are valid.

This patch also includes a new test that simulates inline predictions and checks that the correct attributes are exposed.

* LayoutTests/accessibility/ios-simulator/inline-prediction-attributed-string-expected.txt: Added.
* LayoutTests/accessibility/ios-simulator/inline-prediction-attributed-string.html: Added.
* LayoutTests/platform/ios-16/TestExpectations:
* Source/WebCore/accessibility/AXObjectCache.cpp:
(WebCore::AXObjectCache::onTextCompositionChange):
* Source/WebCore/accessibility/AXObjectCache.h:
(WebCore::AXObjectCache::onTextCompositionChange):
* Source/WebCore/accessibility/AccessibilityObject.h:
(WebCore::AccessibilityObject::InlineTextPrediction::reset):
(WebCore::AccessibilityObject::lastPresentedTextPrediction const):
(WebCore::AccessibilityObject::lastPresentedTextPredictionComplete const):
* Source/WebCore/accessibility/AccessibilityObjectInterface.h:
* Source/WebCore/accessibility/ios/AccessibilityObjectIOS.mm:
(WebCore::AccessibilityObject::setLastPresentedTextPrediction):
(WebCore::attributedStringSetCompositionAttributes):
(WebCore::attributedStringCreate):
* Source/WebCore/accessibility/ios/WebAccessibilityObjectWrapperIOS.h:
* Source/WebCore/editing/Editor.cpp:
(WebCore::Editor::setComposition):

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




More information about the webkit-changes mailing list