Branch: refs/heads/main
Home: https://github.com/WebKit/WebKit
Commit: bcf367428ee3db2103c809b74980932a50f902f2
https://github.com/WebKit/WebKit/commit/bcf367428ee3db2103c809b74980932a50f902f2
Author: Joshua Hoffman <[email protected]>
Date: 2024-10-09 (Wed, 09 Oct 2024)
Changed paths:
A
LayoutTests/accessibility/ax-thread-text-apis/text-marker-word-nav-expected.txt
A LayoutTests/accessibility/ax-thread-text-apis/text-marker-word-nav.html
M Source/WebCore/accessibility/AXTextMarker.cpp
M Source/WebCore/accessibility/AXTextMarker.h
M Source/WebCore/accessibility/AXTextRun.h
M Source/WebCore/accessibility/AccessibilityRenderObject.cpp
M Source/WebCore/accessibility/isolatedtree/AXIsolatedObject.h
M Source/WebCore/accessibility/mac/WebAccessibilityObjectWrapperMac.mm
Log Message:
-----------
AX: Implement TextUnit::LeftWord/RightWord off the main thread
https://bugs.webkit.org/show_bug.cgi?id=280825
rdar://134579687
Reviewed by Tyler Wilcock.
This patch implements the `AXLeftWordTextMarkerRangeForTextMarker` and
`AXRightWordTextMarkerRangeForTextMarker` attributes using the secondary thread
text markers. To mimic the live tree’s current behavior, several edges cases
had to be considered:
* If at the end of a paragraph (containing block), return without a word.
* If we are finding the left word, and we are at a start word boundary, that
should return the whitespace prior to the word (if any).
* If we are finding the right word, and are at the end boundary of a word,
return the whitespace to the right of the word.
To verify this new behavior, the test `text-marker-word-nav` was ported over
from the live tree, with some modifications. APIs that still used the live tree
were removed, due to some issues with interop between live and isolated tree
text markers. Three test cases were are currently failing with FIXMEs: two due
to the word break iterator with Chinese characters, and one due to line break
behavior.
In order to accurately accommodate handling word navigation, I had to make a
change to the `findMarker` method to allow for coalescing object boundaries.
This is the cases where the end position of one object is equivalent
visually/in position to the start position of the next object. Coalescing
mimics behavior from the live tree.
*
LayoutTests/accessibility/ax-thread-text-apis/text-marker-word-nav-expected.txt:
Added.
* LayoutTests/accessibility/ax-thread-text-apis/text-marker-word-nav.html:
Added.
* Source/WebCore/accessibility/AXTextMarker.cpp:
(WebCore::AXTextMarker::lineNumberForIndex const):
(WebCore::AXTextMarker::atLineBoundaryForDirection const):
(WebCore::AXTextMarker::offsetFromRoot const):
(WebCore::AXTextMarker::findLastBefore const):
(WebCore::AXTextMarker::findMarker const):
(WebCore::AXTextMarker::wordRange const):
(WebCore::AXTextMarker::equivalentTextPosition const):
(WebCore::AXTextMarker::partialOrderByTraversal const):
* Source/WebCore/accessibility/AXTextMarker.h:
(WebCore::AXTextMarker::nextWordStart const):
(WebCore::AXTextMarker::nextWordEnd const):
(WebCore::AXTextMarker::previousWordStart const):
(WebCore::AXTextMarker::previousWordEnd const):
* Source/WebCore/accessibility/AXTextRun.h:
(WebCore::AXTextRuns::toString const):
* Source/WebCore/accessibility/AccessibilityRenderObject.cpp:
(WebCore::AccessibilityRenderObject::computeIsIgnored const):
(WebCore::AccessibilityRenderObject::textRuns):
* Source/WebCore/accessibility/isolatedtree/AXIsolatedObject.h:
* Source/WebCore/accessibility/mac/WebAccessibilityObjectWrapperMac.mm:
(-[WebAccessibilityObjectWrapper textMarkerRangeAtTextMarker:forUnit:]):
Canonical link: https://commits.webkit.org/284938@main
To unsubscribe from these emails, change your notification settings at
https://github.com/WebKit/WebKit/settings/notifications
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes