[webkit-changes] [WebKit/WebKit] ff85ff: AX: Use cached text runs to compute: next, previou...

Tyler Wilcock noreply at github.com
Wed Jan 10 12:27:00 PST 2024


  Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: ff85ff126cf173fa48a9eb1173c9fd082f874448
      https://github.com/WebKit/WebKit/commit/ff85ff126cf173fa48a9eb1173c9fd082f874448
  Author: Tyler Wilcock <tyler_w at apple.com>
  Date:   2024-01-10 (Wed, 10 Jan 2024)

  Changed paths:
    M Source/WebCore/Headers.cmake
    M Source/WebCore/Sources.txt
    M Source/WebCore/WebCore.xcodeproj/project.pbxproj
    M Source/WebCore/accessibility/AXCoreObject.h
    M Source/WebCore/accessibility/AXTextMarker.cpp
    M Source/WebCore/accessibility/AXTextMarker.h
    A Source/WebCore/accessibility/AXTextRun.cpp
    A Source/WebCore/accessibility/AXTextRun.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/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

  Log Message:
  -----------
  AX: Use cached text runs to compute: next, previous, next line end, previous line start, line range, and string-for-range text marker APIs
https://bugs.webkit.org/show_bug.cgi?id=266521
rdar://119741911

Reviewed by Chris Fleizach.

This patch adds functionality to AXTextMarker to traverse the accessibility tree, analyzing cached AXPropertyName::TextRuns
at each stop, to serve these APIs off the main-thread.

The implementation in this patch ignores important edge cases — e.g. aria-owns tree re-ordering will cause us to
compute the wrong results, and text in ignored objects will be skipped.

* Source/WebCore/Headers.cmake:
* Source/WebCore/Sources.txt:
* Source/WebCore/WebCore.xcodeproj/project.pbxproj:
* Source/WebCore/accessibility/AXCoreObject.h:
(WebCore::AXTextRun::AXTextRun): Deleted.
(WebCore::AXCoreObject::textRuns): Deleted.
* Source/WebCore/accessibility/AXTextMarker.cpp:
(WebCore::AXTextMarker::isolatedObject const):
(WebCore::AXTextMarkerRange::debugDescription const):
(WebCore::findObjectWithRuns):
(WebCore::AXTextMarkerRange::toString const):
(WebCore::AXTextMarker::runs const):
(WebCore::AXTextMarker::findMarker const):
(WebCore::AXTextMarker::asTextLeafMarker const):
(WebCore::AXTextMarker::isTextLeaf const):
(WebCore::AXTextMarker::textRunIndexForOffset const):
(WebCore::AXTextMarker::lineRange const):
(WebCore::AXTextMarker::substring const):
* Source/WebCore/accessibility/AXTextMarker.h:
(WebCore::AXTextMarker::AXTextMarker):
(WebCore::AXTextMarker::offset const):
* Source/WebCore/accessibility/AXTextRun.cpp: Added.
(WebCore::AXTextRuns::debugDescription const):
(WebCore::AXTextRuns::indexForOffset const):
(WebCore::AXTextRuns::runLengthSumTo const):
(WebCore::AXTextRuns::substring const):
* Source/WebCore/accessibility/AXTextRun.h: Added.
(WebCore::AXTextRunLineID::AXTextRunLineID):
(WebCore::AXTextRunLineID::debugDescription const):
(WebCore::AXTextRun::AXTextRun):
(WebCore::AXTextRun::debugDescription const):
(WebCore::AXTextRuns::AXTextRuns):
(WebCore::AXTextRuns::size const):
(WebCore::AXTextRuns::at const):
(WebCore::AXTextRuns::operator[] const):
(WebCore::AXTextRuns::runLength const):
(WebCore::AXTextRuns::lastRunLength const):
(WebCore::AXTextRuns::runLengthSum const):
(WebCore::AXTextRuns::lineID const):
* Source/WebCore/accessibility/AccessibilityObject.cpp:
(WebCore::AccessibilityObject::treeID const):
* Source/WebCore/accessibility/AccessibilityObject.h:
(WebCore::AccessibilityObject::textRuns):
* Source/WebCore/accessibility/AccessibilityRenderObject.cpp:
(WebCore::AccessibilityRenderObject::textRuns):
* Source/WebCore/accessibility/AccessibilityRenderObject.h:
* Source/WebCore/accessibility/isolatedtree/AXIsolatedObject.cpp:
(WebCore::AXIsolatedObject::setProperty):
(WebCore::AXIsolatedObject::sibling const):
(WebCore::AXIsolatedObject::textRuns const):
* Source/WebCore/accessibility/isolatedtree/AXIsolatedObject.h:
* Source/WebCore/accessibility/isolatedtree/AXIsolatedTree.cpp:
(WebCore::AXIsolatedTree::objectsForIDs const): Deleted.
* Source/WebCore/accessibility/isolatedtree/AXIsolatedTree.h:
(WebCore::AXIsolatedTree::objectsForIDs const):

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




More information about the webkit-changes mailing list