[webkit-changes] [WebKit/WebKit] 92384c: AX: TextMarker-based assistive technologies skip d...
Tyler Wilcock
noreply at github.com
Fri Jun 30 15:50:18 PDT 2023
Branch: refs/heads/main
Home: https://github.com/WebKit/WebKit
Commit: 92384cf464fb98c7f6df0797a36b84417f1bfe63
https://github.com/WebKit/WebKit/commit/92384cf464fb98c7f6df0797a36b84417f1bfe63
Author: Tyler Wilcock <tyler_w at apple.com>
Date: 2023-06-30 (Fri, 30 Jun 2023)
Changed paths:
A LayoutTests/accessibility/display-contents/end-text-marker-expected.txt
A LayoutTests/accessibility/display-contents/end-text-marker.html
M LayoutTests/platform/glib/TestExpectations
M Source/WebCore/accessibility/AXObjectCache.cpp
M Source/WebCore/accessibility/AXObjectCache.h
M Source/WebCore/accessibility/AccessibilityNodeObject.cpp
M Source/WebCore/accessibility/AccessibilityNodeObject.h
M Source/WebCore/accessibility/AccessibilityObject.cpp
M Source/WebCore/accessibility/AccessibilityObject.h
M Source/WebCore/accessibility/AccessibilityRenderObject.cpp
M Source/WebCore/accessibility/AccessibilityRenderObject.h
M Source/WebCore/editing/Editing.cpp
M Source/WebCore/editing/Editing.h
M Source/WebCore/editing/VisiblePosition.cpp
M Source/WebCore/editing/VisiblePosition.h
Log Message:
-----------
AX: TextMarker-based assistive technologies skip display:contents text content on macOS
https://bugs.webkit.org/show_bug.cgi?id=258687
rdar://problem/111523549
Reviewed by Chris Fleizach.
This bug happened because `WebCore::nextVisuallyDistinctCandidate` had
an optimization to skip to the end of nodes that had no associated
renderer. However, `AXObjectCache::characterOffsetFromVisiblePosition`
relies on processing every character to build the right
`CharacterOffset`.
This patch fixes the issue by allowing the skip-unrendered-nodes
behavior to be configurable specifically for display contents elements,
since AX is fine to skip other types of unrendered nodes.
This patch also moves several `VisiblePosition`-related function
implementations that were unnecessarily in `AccessibilityRenderObject` to
`AccessibilityNodeObject`, since all only require a `Node`.
* LayoutTests/accessibility/display-contents/end-text-marker-expected.txt: Added.
* LayoutTests/accessibility/display-contents/end-text-marker.html: Added.
* Source/WebCore/accessibility/AXObjectCache.cpp:
(WebCore::AXObjectCache::characterOffsetFromVisiblePosition):
* Source/WebCore/accessibility/AXObjectCache.h:
(WebCore::CharacterOffset::debugDescription):
* Source/WebCore/accessibility/AccessibilityNodeObject.cpp:
(WebCore::AccessibilityNodeObject::visiblePositionRange const):
(WebCore::AccessibilityNodeObject::selectedVisiblePositionRange const):
(WebCore::AccessibilityNodeObject::indexForVisiblePosition const):
(WebCore::AccessibilityNodeObject::visiblePositionForIndex const):
(WebCore::AccessibilityNodeObject::visiblePositionRangeForLine const):
* Source/WebCore/accessibility/AccessibilityNodeObject.h:
* Source/WebCore/accessibility/AccessibilityObject.cpp:
(WebCore::AccessibilityObject::topRenderer const):
(WebCore::AccessibilityObject::visiblePositionForPoint const):
* Source/WebCore/accessibility/AccessibilityObject.h:
* Source/WebCore/accessibility/AccessibilityRenderObject.cpp:
(WebCore::AccessibilityRenderObject::shouldGetTextFromNode const):
(WebCore::AccessibilityRenderObject::visiblePositionForIndex const):
(WebCore::AccessibilityRenderObject::indexForVisiblePosition const):
(WebCore::AccessibilityRenderObject::topRenderer const): Deleted.
(WebCore::AccessibilityRenderObject::visiblePositionRange const): Deleted.
(WebCore::AccessibilityRenderObject::visiblePositionRangeForLine const): Deleted.
(WebCore::AccessibilityRenderObject::selectedVisiblePositionRange const): Deleted.
(WebCore::AccessibilityRenderObject::visiblePositionForPoint const): Deleted.
* Source/WebCore/accessibility/AccessibilityRenderObject.h:
* Source/WebCore/editing/Editing.cpp:
(WebCore::nextVisuallyDistinctCandidate):
* Source/WebCore/editing/Editing.h:
* Source/WebCore/editing/VisiblePosition.cpp:
(WebCore::VisiblePositionRange::debugDescription const):
* Source/WebCore/editing/VisiblePosition.h:
Canonical link: https://commits.webkit.org/265673@main
More information about the webkit-changes
mailing list