Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: e67fcd568d5f0ea91b202f58514c73549dbe5ce2
      
https://github.com/WebKit/WebKit/commit/e67fcd568d5f0ea91b202f58514c73549dbe5ce2
  Author: Joshua Hoffman <[email protected]>
  Date:   2025-02-11 (Tue, 11 Feb 2025)

  Changed paths:
    A 
LayoutTests/accessibility/ax-thread-text-apis/line-range-at-soft-breaks-expected.txt
    A 
LayoutTests/accessibility/ax-thread-text-apis/line-range-at-soft-breaks.html
    M Source/WebCore/accessibility/AXObjectCache.cpp
    M Source/WebCore/accessibility/AXObjectCache.h
    M Source/WebCore/accessibility/AXTextMarker.cpp
    M Source/WebCore/accessibility/AXTextMarker.h
    M Source/WebCore/accessibility/mac/AXObjectCacheMac.mm
    M Source/WebCore/accessibility/mac/WebAccessibilityObjectWrapperMac.h
    M Source/WebCore/accessibility/mac/WebAccessibilityObjectWrapperMac.mm
    M Source/WebKit/WebProcess/WebPage/mac/WKAccessibilityWebPageObjectBase.mm
    M Tools/WebKitTestRunner/InjectedBundle/AccessibilityController.h
    M Tools/WebKitTestRunner/InjectedBundle/Bindings/AccessibilityController.idl
    M Tools/WebKitTestRunner/InjectedBundle/mac/AccessibilityControllerMac.mm

  Log Message:
  -----------
  AX: [AX Thread Text APIs] CurrentLine is sometimes missing the first 
character of a line
https://bugs.webkit.org/show_bug.cgi?id=287438
rdar://143915387

Reviewed by Tyler Wilcock.

Due to some bugs in `findLine`, the current line range would sometimes miss the 
first character
in a line. This is because `atLineBoundaryForDirection` didn't handle text 
affinity, so if we
have the following text, with a soft line break after hello:

Hello
world

A text marker after the 'w' in world would be considered at a line break with 
our old implementation,
which would just check the previous text marker's line (which could be on the 
previous line). This PR
re-writes `atLineBoundaryForDirection` to use line offsets instead, which 
should be more robust
against these affinity cases.

This PR also includes some text marker enhancements:
- Iterating in `findLine` now follows the direction of the search, which is 
more accurate and
aligned with our other `find` methods.
- A new debug method `printTrees` was added to the WKTR accessibility 
controller to more easily
log the AX trees to standard error when debugging.
    - This change includes added a new optional paramater to treeData for 
streaming options.
- More TextMarkerOrigin fields were added, with new parameters where necessary 
to pipe them
through.
- An update to `focusedLocalFrame`, co-authored by Alex Christensen, to fix a 
memory-safety
issue with accessing m_page.

* 
LayoutTests/accessibility/ax-thread-text-apis/line-range-at-soft-breaks-expected.txt:
 Added.
* LayoutTests/accessibility/ax-thread-text-apis/line-range-at-soft-breaks.html: 
Added.
* Source/WebCore/accessibility/AXObjectCache.cpp:
(WebCore::AXObjectCache::textMarkerDataForCharacterOffset):
(WebCore::AXObjectCache::textMarkerDataForVisiblePosition):
(WebCore::AXObjectCache::treeData):
* Source/WebCore/accessibility/AXObjectCache.h:
* Source/WebCore/accessibility/AXTextMarker.cpp:
(WebCore::TextMarkerData::TextMarkerData):
(WebCore::AXTextMarker::AXTextMarker):
(WebCore::AXTextMarker::atLineBoundaryForDirection const):
(WebCore::AXTextMarker::findLine const):
(WebCore::AXTextMarker::lineRange const):
* Source/WebCore/accessibility/AXTextMarker.h:
(WebCore::originToString):
* Source/WebCore/accessibility/mac/AXObjectCacheMac.mm:
(WebCore::textMarkerForCharacterOffset):
* Source/WebCore/accessibility/mac/WebAccessibilityObjectWrapperMac.h:
* Source/WebCore/accessibility/mac/WebAccessibilityObjectWrapperMac.mm:
(-[WebAccessibilityObjectWrapper accessibilityPerformAction:]):
(-[WebAccessibilityObjectWrapper _accessibilityPrintTrees]):
(-[WebAccessibilityObjectWrapper accessibilityAttributeValue:forParameter:]):
* Source/WebKit/WebProcess/WebPage/mac/WKAccessibilityWebPageObjectBase.mm:
(-[WKAccessibilityWebPageObjectBase focusedLocalFrame]):
* Tools/WebKitTestRunner/InjectedBundle/AccessibilityController.h:
(WTR::AccessibilityController::printTrees):
* Tools/WebKitTestRunner/InjectedBundle/Bindings/AccessibilityController.idl:
* Tools/WebKitTestRunner/InjectedBundle/mac/AccessibilityControllerMac.mm:
(WTR::AccessibilityController::printTrees):

Canonical link: https://commits.webkit.org/290212@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

Reply via email to