Branch: refs/heads/main Home: https://github.com/WebKit/WebKit Commit: dbf11589ce2fd7f92fdfa461010f6d3ff5719f4f https://github.com/WebKit/WebKit/commit/dbf11589ce2fd7f92fdfa461010f6d3ff5719f4f Author: Dominic Mazzoni <dmazz...@google.com> Date: 2023-12-06 (Wed, 06 Dec 2023)
Changed paths: M LayoutTests/accessibility/mac/bounds-for-range-expected.txt M LayoutTests/accessibility/mac/internal-link-anchors-expected.txt A LayoutTests/accessibility/mac/intersection-with-selection-range-expected.txt A LayoutTests/accessibility/mac/intersection-with-selection-range.html M LayoutTests/platform/mac-wk1/TestExpectations M Source/WebCore/accessibility/AXTextMarker.cpp M Source/WebCore/accessibility/AXTextMarker.h M Source/WebCore/accessibility/mac/WebAccessibilityObjectWrapperMac.mm M Tools/WebKitTestRunner/InjectedBundle/AccessibilityUIElement.h M Tools/WebKitTestRunner/InjectedBundle/Bindings/AccessibilityUIElement.idl M Tools/WebKitTestRunner/InjectedBundle/atspi/AccessibilityUIElementAtspi.cpp M Tools/WebKitTestRunner/InjectedBundle/ios/AccessibilityUIElementIOS.mm M Tools/WebKitTestRunner/InjectedBundle/mac/AccessibilityUIElementMac.mm M Tools/WebKitTestRunner/InjectedBundle/win/AccessibilityUIElementWin.cpp Log Message: ----------- AX: add Mac API to get the intersection between the selected text range and an element https://bugs.webkit.org/show_bug.cgi?id=265683 rdar://119054143 Reviewed by Andres Gonzalez. One of the things preventing VoiceOver from being able to use WebKit entirely off the main thread is that it wants to be able to access the range of a static text element that's part of the document selection, if any. Doing that using text ranges is complex and hard for WebKit to optimize. A new API that provides this information directly can be computed efficiently using the isolated tree. This patch implements this using a new method to compute the intersection of two AXTextMarkerRanges. It's efficient when both ranges span a single element each (either both in the same element, or both different elements), and it falls back to the main thread if not. * LayoutTests/accessibility/mac/bounds-for-range-expected.txt: * LayoutTests/accessibility/mac/internal-link-anchors-expected.txt: * LayoutTests/accessibility/mac/intersection-with-selection-range-expected.txt: Added. * LayoutTests/accessibility/mac/intersection-with-selection-range.html: Added. * LayoutTests/platform/mac-wk1/TestExpectations: * Source/WebCore/accessibility/AXTextMarker.cpp: (WebCore::AXTextMarkerRange::intersectionWith const): * Source/WebCore/accessibility/AXTextMarker.h: * Source/WebCore/accessibility/mac/WebAccessibilityObjectWrapperMac.mm: (-[WebAccessibilityObjectWrapper accessibilityAttributeValue:]): (-[WebAccessibilityObjectWrapper intersectionWithSelectionRange]): * Tools/WebKitTestRunner/InjectedBundle/AccessibilityUIElement.h: * Tools/WebKitTestRunner/InjectedBundle/Bindings/AccessibilityUIElement.idl: * Tools/WebKitTestRunner/InjectedBundle/atspi/AccessibilityUIElementAtspi.cpp: (WTR::AccessibilityUIElement::intersectionWithSelectionRange): * Tools/WebKitTestRunner/InjectedBundle/ios/AccessibilityUIElementIOS.mm: (WTR::AccessibilityUIElement::intersectionWithSelectionRange): * Tools/WebKitTestRunner/InjectedBundle/mac/AccessibilityUIElementMac.mm: (WTR::AccessibilityUIElement::isIsolatedObject const): (WTR::AccessibilityUIElement::selectedTextRange): (WTR::AccessibilityUIElement::intersectionWithSelectionRange): * Tools/WebKitTestRunner/InjectedBundle/win/AccessibilityUIElementWin.cpp: (WTR::AccessibilityUIElement::intersectionWithSelectionRange): Canonical link: https://commits.webkit.org/271621@main _______________________________________________ webkit-changes mailing list webkit-changes@lists.webkit.org https://lists.webkit.org/mailman/listinfo/webkit-changes