Branch: refs/heads/main
Home: https://github.com/WebKit/WebKit
Commit: 3809a67b854d775397ce4b455fdb8c622843db3c
https://github.com/WebKit/WebKit/commit/3809a67b854d775397ce4b455fdb8c622843db3c
Author: Tyler Wilcock <[email protected]>
Date: 2025-03-01 (Sat, 01 Mar 2025)
Changed paths:
M LayoutTests/accessibility-isolated-tree/TestExpectations
M LayoutTests/accessibility/mac/input-type-change-crash-expected.txt
A
LayoutTests/accessibility/mac/text-marker-from-typing-notification-expected.txt
A LayoutTests/accessibility/mac/text-marker-from-typing-notification.html
M LayoutTests/platform/mac-wk1/TestExpectations
M Source/WebCore/accessibility/AXObjectCache.cpp
M Source/WebCore/accessibility/AXTextMarker.cpp
M Source/WebCore/accessibility/mac/WebAccessibilityObjectWrapperBase.mm
M Tools/WebKitTestRunner/InjectedBundle/cocoa/AccessibilityCommonCocoa.mm
Log Message:
-----------
AX: Immediately queue changes to AXProperty::TextRuns as part of the next
tree snapshot so we have the right tree state in response to text markers
generated from typing in an editable field
https://bugs.webkit.org/show_bug.cgi?id=288845
rdar://145865930
Reviewed by Chris Fleizach.
When a user types, this happens:
1. AXObjectCache::onTextRunsChanged gets called.
2. We send out a AXValueChanged notification that includes a text marker with
an offset pointing to
the end of the changed text. Before sending the notification, we
processQueuedNodeUpdates() to
ensure we queue up isolated tree updates representing the new state of the
page, so that if an AT
responds immediately with the text marker we gave it, we are working off
the latest information.
The problem is that, prior to this commit, AXObjectCache::onTextRunsChanged
used AXObjectCache::postNotification to
queue the text runs update, which critically is not covered by
processQueuedNodeUpdates. This means that if an AT
immediately responded with the text marker, we would not yet have updated the
text runs, and thus behave incorrectly.
To fix this, this commit changes AXObjectCache::onTextRunsChanged to use
AXObjectCache::updateIsolatedTree, which
immediately queues up a property update for use by processQueuedNodeUpdates().
Long term, we should switch everything over to being processed by
processQueuedNodeUpdates(), guaranteeing we are
always pushing consistent snapshots of the tree.
* LayoutTests/accessibility-isolated-tree/TestExpectations:
Note the ITM workaround made in the new test.
*
LayoutTests/accessibility/mac/text-marker-from-typing-notification-expected.txt:
Added.
* LayoutTests/accessibility/mac/text-marker-from-typing-notification.html:
Added.
* Source/WebCore/accessibility/AXObjectCache.cpp:
(WebCore::AXObjectCache::onTextRunsChanged):
* Source/WebCore/accessibility/AXTextMarker.cpp:
(WebCore::AXTextMarker::toTextRunMarker const):
* Source/WebCore/accessibility/mac/WebAccessibilityObjectWrapperBase.mm:
(isValueTypeSupported):
* Tools/WebKitTestRunner/InjectedBundle/cocoa/AccessibilityCommonCocoa.mm:
(WTR::makeValueRefForValue):
Enable support for passing text markers in `userInfo` notifications sent
to layout tests.
Canonical link: https://commits.webkit.org/291454@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