[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