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

Reply via email to