Branch: refs/heads/main
Home: https://github.com/WebKit/WebKit
Commit: e4deb1dd40c5010b6b0e986ae0a2de1876947e9a
https://github.com/WebKit/WebKit/commit/e4deb1dd40c5010b6b0e986ae0a2de1876947e9a
Author: Tyler Wilcock <[email protected]>
Date: 2025-04-15 (Tue, 15 Apr 2025)
Changed paths:
M LayoutTests/accessibility-isolated-tree/TestExpectations
A
LayoutTests/accessibility/mac/editable-single-letter-soft-linebreak-lines-expected.txt
A
LayoutTests/accessibility/mac/editable-single-letter-soft-linebreak-lines.html
A LayoutTests/accessibility/mac/line-range-in-contenteditable-expected.txt
A LayoutTests/accessibility/mac/line-range-in-contenteditable.html
M LayoutTests/platform/mac-wk1/TestExpectations
M Source/WebCore/accessibility/AXObjectCache.cpp
M Source/WebCore/accessibility/AXTextMarker.cpp
M Source/WebCore/accessibility/AXTextMarker.h
M Source/WebCore/accessibility/AXTextRun.cpp
M Source/WebCore/accessibility/AXTextRun.h
Log Message:
-----------
AX: After ENABLE(AX_THREAD_TEXT_APIS), VoiceOver speech becomes out of sync
with the cursor position when navigating by line when starting at the start or
end of soft line break positions
https://bugs.webkit.org/show_bug.cgi?id=291437
rdar://149081361
Reviewed by Joshua Hoffman.
This happened because we were not properly considering affinity, which is
important at soft line break boundaries.
Fix the issue by making sure we keep affinity given to us when created text
markers from VisiblePositions, and setting
affinity ourselves when appropriate in AXTextMarker::findLine.
Then we take affinity into account in AXTextRuns::indexForOffset, as what text
run (and thus what line) a marker belongs
to is a function of both offset *and* affinity.
New tests perfectly simulate the issue, and one can reproduce the bug in the
browser by issuing the same keystrokes
laid out in the test.
This also happened to fix existing tests
mac/attributed-string-with-listitem-multiple-lines.html and
mac/line-index-for-textmarker.html.
* LayoutTests/accessibility-isolated-tree/TestExpectations:
*
LayoutTests/accessibility/mac/editable-single-letter-soft-linebreak-lines-expected.txt:
Added.
*
LayoutTests/accessibility/mac/editable-single-letter-soft-linebreak-lines.html:
Added.
* LayoutTests/accessibility/mac/line-range-in-contenteditable-expected.txt:
Added.
* LayoutTests/accessibility/mac/line-range-in-contenteditable.html: Added.
* LayoutTests/platform/mac-wk1/TestExpectations:
* Source/WebCore/accessibility/AXObjectCache.cpp:
(WebCore::AXObjectCache::textMarkerDataForVisiblePosition):
* Source/WebCore/accessibility/AXTextMarker.cpp:
(WebCore::AXTextMarker::clampOffsetToLengthIfNeeded const):
(WebCore::AXTextMarker::markerRangeForLineIndex const):
(WebCore::AXTextMarker::lineNumberForIndex const):
(WebCore::AXTextMarker::findMarker const):
(WebCore::AXTextMarker::findLine const):
* Source/WebCore/accessibility/AXTextMarker.h:
(WebCore::AXTextMarker::affinity const): Added.
(WebCore::AXTextMarker::isDownstream const): Added.
(WebCore::AXTextMarker::setAffinity):
* Source/WebCore/accessibility/AXTextRun.cpp:
(WebCore::AXTextRuns::indexForOffset const):
(WebCore::AXTextRuns::localRect const):
(WebCore::AXTextRuns::lineIDForOffset const):
Remove unused function.
* Source/WebCore/accessibility/AXTextRun.h:
(WebCore::AXTextRuns::lastRunIndex const):
Canonical link: https://commits.webkit.org/293733@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