[webkit-changes] [WebKit/WebKit] 0524e6: AX: Content editable should not be textbox roles

Tyler Wilcock noreply at github.com
Sat Nov 18 01:04:16 PST 2023


  Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: 0524e64fb276c6bdd8625cec9a5989938fd6fa66
      https://github.com/WebKit/WebKit/commit/0524e64fb276c6bdd8625cec9a5989938fd6fa66
  Author: Tyler Wilcock <tyler_w at apple.com>
  Date:   2023-11-18 (Sat, 18 Nov 2023)

  Changed paths:
    A LayoutTests/accessibility/content-editable-property-change-expected.txt
    A LayoutTests/accessibility/content-editable-property-change.html
    M LayoutTests/accessibility/dynamically-unignored-contenteditable-expected.txt
    A LayoutTests/accessibility/ios-simulator/content-editable-expected.txt
    A LayoutTests/accessibility/ios-simulator/content-editable.html
    M LayoutTests/accessibility/mac/active-descendant-with-aria-controls-expected.txt
    M LayoutTests/accessibility/mac/relationships-in-frames-expected.txt
    M LayoutTests/accessibility/mac/set-value-editable-dispatch-events-expected.txt
    M LayoutTests/accessibility/mac/set-value-editable-types-expected.txt
    M LayoutTests/accessibility/nested-textareas-value-changed-notifications-expected.txt
    M LayoutTests/platform/glib/TestExpectations
    M LayoutTests/platform/mac-wk1/TestExpectations
    M LayoutTests/platform/mac/accessibility/content-editable-as-textarea-expected.txt
    M Source/WebCore/accessibility/AXCoreObject.cpp
    M Source/WebCore/accessibility/AXLogger.cpp
    M Source/WebCore/accessibility/AXObjectCache.cpp
    M Source/WebCore/accessibility/AXObjectCache.h
    M Source/WebCore/accessibility/AccessibilityNodeObject.cpp
    M Source/WebCore/accessibility/AccessibilityObject.cpp
    M Source/WebCore/accessibility/ios/WebAccessibilityObjectWrapperIOS.mm
    M Source/WebCore/accessibility/isolatedtree/AXIsolatedObject.cpp
    M Source/WebCore/accessibility/isolatedtree/AXIsolatedObject.h
    M Source/WebCore/accessibility/isolatedtree/AXIsolatedTree.cpp
    M Source/WebCore/accessibility/isolatedtree/AXIsolatedTree.h
    M Tools/DumpRenderTree/AccessibilityUIElement.cpp
    M Tools/DumpRenderTree/AccessibilityUIElement.h
    M Tools/DumpRenderTree/ios/AccessibilityUIElementIOS.mm
    M Tools/WebKitTestRunner/InjectedBundle/AccessibilityUIElement.h
    M Tools/WebKitTestRunner/InjectedBundle/Bindings/AccessibilityUIElement.idl
    M Tools/WebKitTestRunner/InjectedBundle/atspi/AccessibilityUIElementAtspi.cpp
    M Tools/WebKitTestRunner/InjectedBundle/ios/AccessibilityUIElementIOS.mm
    M Tools/WebKitTestRunner/InjectedBundle/mac/AccessibilityUIElementMac.mm
    M Tools/WebKitTestRunner/InjectedBundle/win/AccessibilityUIElementWin.cpp

  Log Message:
  -----------
  AX: Content editable should not be textbox roles
https://bugs.webkit.org/show_bug.cgi?id=257184
rdar://problem/109699222

Reviewed by Chris Fleizach.

We currently expose elements with contenteditable=true as AXTextAreas. However, text areas
cannot have children objects that are exposed to AT (such as tables, lists, etc.).

This patch addresses that by changing the role for contenteditable (which are non-native text
control elements) elements to AXGroup, allowing for its children to be navigated. We still
maintain the edit-ability of these elements however by exposing AXValue as editable.

On iOS, we use traits to expose leaf elements with a non-native text control ancestor as editable
for AT to supply proper context.

Tests have been updated and added to reflect this change.

This patch was authored by Josh Hoffman, built on work started by Chris Fleizach.

* LayoutTests/accessibility/content-editable-property-change-expected.txt: Added.
* LayoutTests/accessibility/content-editable-property-change.html: Added.
* LayoutTests/accessibility/dynamically-unignored-contenteditable-expected.txt:
* LayoutTests/accessibility/ios-simulator/content-editable-expected.txt: Added.
* LayoutTests/accessibility/ios-simulator/content-editable.html: Added.
* LayoutTests/accessibility/mac/active-descendant-with-aria-controls-expected.txt:
* LayoutTests/accessibility/mac/relationships-in-frames-expected.txt:
* LayoutTests/accessibility/mac/set-value-editable-dispatch-events-expected.txt:
* LayoutTests/accessibility/mac/set-value-editable-types-expected.txt:
* LayoutTests/accessibility/nested-textareas-value-changed-notifications-expected.txt:
* LayoutTests/platform/glib/TestExpectations:
* LayoutTests/platform/glib/accessibility/content-editable-as-textarea-expected.txt:
* LayoutTests/platform/glib/accessibility/dynamically-unignored-contenteditable-expected.txt:
* LayoutTests/platform/mac-wk1/TestExpectations:
* LayoutTests/platform/mac/accessibility/content-editable-as-textarea-expected.txt:

* Source/WebCore/accessibility/AXCoreObject.cpp:
(WebCore::AXCoreObject::isTextControl const):
* Source/WebCore/accessibility/AXLogger.cpp:
(WebCore::operator<<):
* Source/WebCore/accessibility/AXObjectCache.cpp:
(WebCore::AXObjectCache::handleAttributeChange):
(WebCore::AXObjectCache::updateIsolatedTree):
* Source/WebCore/accessibility/AXObjectCache.h:
* Source/WebCore/accessibility/AccessibilityNodeObject.cpp:
(WebCore::AccessibilityNodeObject::matchesTextAreaRole const):
(WebCore::AccessibilityNodeObject::determineAccessibilityRoleFromNode const):
* Source/WebCore/accessibility/AccessibilityObject.cpp:
(WebCore::AccessibilityObject::isNonNativeTextControl const):
* Source/WebCore/accessibility/ios/WebAccessibilityObjectWrapperIOS.mm:
(-[WebAccessibilityObjectWrapper accessibilityTraits]):
(-[WebAccessibilityObjectWrapper determineIsAccessibilityElement]):
(-[WebAccessibilityObjectWrapper accessibilityIsInNonNativeTextControl]):
* Source/WebCore/accessibility/isolatedtree/AXIsolatedObject.cpp:
(WebCore::AXIsolatedObject::initializeProperties):
(WebCore::AXIsolatedObject::isNonNativeTextControl const): Deleted.
* Source/WebCore/accessibility/isolatedtree/AXIsolatedObject.h:
* Source/WebCore/accessibility/isolatedtree/AXIsolatedTree.cpp:
(WebCore::AXIsolatedTree::updateNodeProperties):
* Source/WebCore/accessibility/isolatedtree/AXIsolatedTree.h:

* Tools/DumpRenderTree/AccessibilityUIElement.cpp:
(getIsInNonNativeTextControlCallback):
(AccessibilityUIElement::getJSClass):
* Tools/DumpRenderTree/AccessibilityUIElement.h:
* Tools/DumpRenderTree/ios/AccessibilityUIElementIOS.mm:
(AccessibilityUIElement::isInNonNativeTextControl const):
* Tools/WebKitTestRunner/InjectedBundle/AccessibilityUIElement.h:
* Tools/WebKitTestRunner/InjectedBundle/Bindings/AccessibilityUIElement.idl:
* Tools/WebKitTestRunner/InjectedBundle/atspi/AccessibilityUIElementAtspi.cpp:
(WTR::AccessibilityUIElement::isInNonNativeTextControl const):
* Tools/WebKitTestRunner/InjectedBundle/ios/AccessibilityUIElementIOS.mm:
(WTR::AccessibilityUIElement::isInNonNativeTextControl const):
* Tools/WebKitTestRunner/InjectedBundle/mac/AccessibilityUIElementMac.mm:
(WTR::AccessibilityUIElement::isInNonNativeTextControl const):
* Tools/WebKitTestRunner/InjectedBundle/win/AccessibilityUIElementWin.cpp:
(WTR::AccessibilityUIElement::isInNonNativeTextControl const):

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




More information about the webkit-changes mailing list