[webkit-changes] [WebKit/WebKit] 522540: AX: ENABLE_AX_THREAD_TEXT_APIS = 1 does not build
Branch: refs/heads/main Home: https://github.com/WebKit/WebKit Commit: 52254099de12ad7529617a164ea0cc42430ef5b3 https://github.com/WebKit/WebKit/commit/52254099de12ad7529617a164ea0cc42430ef5b3 Author: Joshua Hoffman Date: 2024-09-11 (Wed, 11 Sep 2024) Changed paths: M Source/WebCore/accessibility/AXLogger.cpp M Source/WebCore/accessibility/AXTextRun.h Log Message: --- AX: ENABLE_AX_THREAD_TEXT_APIS = 1 does not build https://bugs.webkit.org/show_bug.cgi?id=279529 rdar://135815948 Reviewed by Tyler Wilcock. When ENABLE_AX_THREAD_TEXT_APIS is enabled, we have some new build failures, and this patch resolves those. * Source/WebCore/accessibility/AXLogger.cpp: (WebCore::streamTextRuns): * Source/WebCore/accessibility/AXTextRun.h: (WebCore::AXTextRun::debugDescription const): Canonical link: https://commits.webkit.org/283516@main To unsubscribe from these emails, change your notification settings at https://github.com/WebKit/WebKit/settings/notifications ___ webkit-changes mailing list webkit-changes@lists.webkit.org https://lists.webkit.org/mailman/listinfo/webkit-changes
[webkit-changes] [WebKit/WebKit] 3d8642: AX: iframe within inert, hidden element is exposed...
Branch: refs/heads/main Home: https://github.com/WebKit/WebKit Commit: 3d864212d2b1150cee5712c950dceac2b52b6b83 https://github.com/WebKit/WebKit/commit/3d864212d2b1150cee5712c950dceac2b52b6b83 Author: Joshua Hoffman Date: 2024-09-10 (Tue, 10 Sep 2024) Changed paths: A LayoutTests/accessibility/iframe-content-inert-expected.txt A LayoutTests/accessibility/iframe-content-inert.html A LayoutTests/accessibility/iframe-content-visibility-expected.txt A LayoutTests/accessibility/iframe-content-visibility.html A LayoutTests/accessibility/resources/iframe-button.html M Source/WebCore/accessibility/AXObjectCache.cpp M Source/WebCore/accessibility/AccessibilityObject.cpp M Source/WebCore/accessibility/AccessibilityObject.h M Source/WebCore/accessibility/AccessibilityRenderObject.h M Source/WebCore/accessibility/AccessibilityScrollView.cpp M Source/WebCore/accessibility/AccessibilityScrollView.h M Source/WebCore/rendering/RenderElement.cpp Log Message: --- AX: iframe within inert, hidden element is exposed to ATs https://bugs.webkit.org/show_bug.cgi?id=278370 rdar://134318347 Reviewed by Tyler Wilcock. This patch fixes an issue where iFrames with a style of `visibility: hidden` or the inert attribute, both of which should hide the element and its children to ATs, fails to hide the iFrame's children. To fix this, isIgnored() needs to iterate up the web areas and their iFrame renderers, to check whether they are non-visible or if they are effectively inert. These properties/styles don't get passed from the iFrame's parent document to the iFrame's document, so this iteration is necessary. For the isolated tree to update properly, the children of the iframe need to dirty its subtree. However, when AXObjectCache::handleChildrenChanged tries to handle a ScrollView (which happens when attributes on the iFrame element are changed), we bail before dirtying the subtree because scroll views don't have nodes nor renderers. To resolve this, this patch adds logic in handleChildrenChanged to propogate setNeedsToUpdateSubtree and setNeedsToUpdateChildren down to the iFrame's WebArea. * LayoutTests/accessibility/iframe-content-inert-expected.txt: Added. * LayoutTests/accessibility/iframe-content-inert.html: Added. * LayoutTests/accessibility/iframe-content-visibility-expected.txt: Added. * LayoutTests/accessibility/iframe-content-visibility.html: Added. * LayoutTests/accessibility/resources/iframe-button.html: Added. New tests to test `visibility: hidden`, `inert` style/attribute on iFrames. * Source/WebCore/accessibility/AXObjectCache.cpp: (WebCore::AXObjectCache::handleChildrenChanged): * Source/WebCore/accessibility/AccessibilityObject.cpp: (WebCore::AccessibilityObject::defaultObjectInclusion const): (WebCore::AccessibilityObject::webArea const): * Source/WebCore/accessibility/AccessibilityObject.h: (WebCore::AccessibilityObject::shouldWebAreaExposeChildren const): * Source/WebCore/accessibility/AccessibilityRenderObject.cpp: (WebCore::AccessibilityRenderObject::shouldWebAreaExposeChildren const): * Source/WebCore/accessibility/AccessibilityRenderObject.h: * Source/WebCore/accessibility/AccessibilityScrollView.cpp: (WebCore::AccessibilityScrollView::updateScrollbars): (WebCore::AccessibilityScrollView::removeChildScrollbar): * Source/WebCore/accessibility/AccessibilityScrollView.h: * Source/WebCore/rendering/RenderWidget.cpp: (WebCore::RenderWidget::styleDidChange): Canonical link: https://commits.webkit.org/283416@main To unsubscribe from these emails, change your notification settings at https://github.com/WebKit/WebKit/settings/notifications ___ webkit-changes mailing list webkit-changes@lists.webkit.org https://lists.webkit.org/mailman/listinfo/webkit-changes
[webkit-changes] [WebKit/WebKit] 00c8f4: AX: text-transform: full-size-kana must not affect...
Branch: refs/heads/main Home: https://github.com/WebKit/WebKit Commit: 00c8f47583643ff7824ed18bd0470c1b066ee74a https://github.com/WebKit/WebKit/commit/00c8f47583643ff7824ed18bd0470c1b066ee74a Author: Joshua Hoffman Date: 2024-08-14 (Wed, 14 Aug 2024) Changed paths: A LayoutTests/accessibility/full-size-kana-untransformed-expected.txt A LayoutTests/accessibility/full-size-kana-untransformed.html M LayoutTests/platform/glib/TestExpectations M Source/WebCore/accessibility/AccessibilityObject.cpp M Source/WebCore/accessibility/AccessibilityObject.h M Source/WebCore/accessibility/cocoa/AccessibilityObjectCocoa.mm M Source/WebCore/editing/TextIterator.cpp M Source/WebCore/editing/TextIteratorBehavior.h Log Message: --- AX: text-transform: full-size-kana must not affect AT/speech output https://bugs.webkit.org/show_bug.cgi?id=261565 rdar://115504070 Reviewed by Tyler Wilcock. `full-size-kana` is used to improve legibility issues with small Kana text. Readers are the ones who are supposed to make the distinction, but for ATs, we need to make sure we aren't using this visually transformed text for speech output. This patch adds a new IteratorBehavior, IgnoresFullSizeKana, to the text iterator for use by Accessibility. This will return the original, untransformed text, to our string-creation methods. * LayoutTests/accessibility/full-size-kana-untransformed-expected.txt: Added. * LayoutTests/accessibility/full-size-kana-untransformed.html: Added. * Source/WebCore/accessibility/AccessibilityObject.cpp: (WebCore::AccessibilityObject::stringForRange const): (WebCore::AccessibilityObject::stringForVisiblePositionRange): (WebCore::AccessibilityObject::textIteratorBehaviorForTextRange const): (WebCore::AccessibilityObject::textIteratorIgnoringFullSizeKana): * Source/WebCore/accessibility/AccessibilityObject.h: * Source/WebCore/accessibility/cocoa/AccessibilityObjectCocoa.mm: (WebCore::AccessibilityObject::contentForRange const): * Source/WebCore/editing/TextIterator.cpp: (WebCore::TextIterator::emitText): * Source/WebCore/editing/TextIteratorBehavior.h: Canonical link: https://commits.webkit.org/282258@main To unsubscribe from these emails, change your notification settings at https://github.com/WebKit/WebKit/settings/notifications ___ webkit-changes mailing list webkit-changes@lists.webkit.org https://lists.webkit.org/mailman/listinfo/webkit-changes
[webkit-changes] [WebKit/WebKit] 30ff66: AX: Revert 270935@main (Content editable should no...
Branch: refs/heads/main Home: https://github.com/WebKit/WebKit Commit: 30ff6624cac9cf9ab1a5feca6e908191f9f10cb5 https://github.com/WebKit/WebKit/commit/30ff6624cac9cf9ab1a5feca6e908191f9f10cb5 Author: Joshua Hoffman Date: 2024-05-24 (Fri, 24 May 2024) Changed paths: A LayoutTests/accessibility/cells-inside-contenteditable-expected.txt A LayoutTests/accessibility/cells-inside-contenteditable.html R LayoutTests/accessibility/content-editable-property-change-expected.txt R LayoutTests/accessibility/content-editable-property-change.html M LayoutTests/accessibility/dynamically-unignored-contenteditable-expected.txt R LayoutTests/accessibility/ios-simulator/content-editable-expected.txt R LayoutTests/accessibility/ios-simulator/content-editable.html M LayoutTests/accessibility/mac/active-descendant-with-aria-controls-expected.txt M LayoutTests/accessibility/mac/relationships-in-frames-expected.txt M LayoutTests/accessibility/mac/set-value-editable-dispatch-events-expected.txt M LayoutTests/accessibility/mac/set-value-editable-types-expected.txt M LayoutTests/accessibility/nested-textareas-value-changed-notifications-expected.txt M LayoutTests/platform/glib/TestExpectations M LayoutTests/platform/mac-wk1/TestExpectations M LayoutTests/platform/mac/accessibility/content-editable-as-textarea-expected.txt M Source/WebCore/accessibility/AXCoreObject.cpp M Source/WebCore/accessibility/AXObjectCache.cpp M Source/WebCore/accessibility/AccessibilityNodeObject.cpp M Source/WebCore/accessibility/AccessibilityObject.cpp M Source/WebCore/accessibility/ios/WebAccessibilityObjectWrapperIOS.mm M Source/WebCore/accessibility/isolatedtree/AXIsolatedObject.cpp M Source/WebCore/accessibility/isolatedtree/AXIsolatedObject.h M Source/WebCore/accessibility/isolatedtree/AXIsolatedTree.cpp M Source/WebCore/accessibility/isolatedtree/AXIsolatedTree.h M Tools/DumpRenderTree/AccessibilityUIElement.cpp M Tools/DumpRenderTree/AccessibilityUIElement.h M Tools/DumpRenderTree/ios/AccessibilityUIElementIOS.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: Revert 270935@main (Content editable should not be textbox roles) https://bugs.webkit.org/show_bug.cgi?id=274607 rdar://128446026 Reviewed by Tyler Wilcock. 270935@main made contenteditable elements have a group role, instead of TextArea. This has proven tricky for ATs and text editing, and does not provide additional benefits as anticipated. This reverts that change, and adds a new test to check that table cells inside of a contenteditable element expose their static text, a bug that was discovered while analyzing 270935@main. * LayoutTests/accessibility/cells-inside-contenteditable-expected.txt: Added. * LayoutTests/accessibility/cells-inside-contenteditable.html: Added. * LayoutTests/accessibility/content-editable-property-change-expected.txt: Removed. * LayoutTests/accessibility/content-editable-property-change.html: Removed. * LayoutTests/accessibility/dynamically-unignored-contenteditable-expected.txt: * LayoutTests/accessibility/ios-simulator/content-editable-expected.txt: Removed. * LayoutTests/accessibility/ios-simulator/content-editable.html: Removed. * LayoutTests/accessibility/mac/active-descendant-with-aria-controls-expected.txt: * LayoutTests/accessibility/mac/relationships-in-frames-expected.txt: * LayoutTests/accessibility/mac/set-value-editable-dispatch-events-expected.txt: * LayoutTests/accessibility/mac/set-value-editable-types-expected.txt: * LayoutTests/accessibility/nested-textareas-value-changed-notifications-expected.txt: * LayoutTests/platform/glib/TestExpectations: * LayoutTests/platform/mac-wk1/TestExpectations: * LayoutTests/platform/mac/accessibility/content-editable-as-textarea-expected.txt: * Source/WebCore/accessibility/AXCoreObject.cpp: (WebCore::AXCoreObject::isTextControl const): * Source/WebCore/accessibility/AXObjectCache.cpp: (WebCore::AXObjectCache::handleAttributeChange): (WebCore::AXObjectCache::updateIsolatedTree): * Source/WebCore/accessibility/AccessibilityNodeObject.cpp: (WebCore::AccessibilityNodeObject::matchesTextAreaRole const): (WebCore::AccessibilityNodeObject::determineAccessibilityRoleFromNode const): * Source/WebCore/accessibility/AccessibilityObject.cpp: (WebCore::AccessibilityObject::isNonNativeTextControl const): * Source/WebCore/accessibility/ios/WebAccessibilityObjectWrapperIOS.mm: (-[WebAccessibilityObjectWrapper accessibilityTraits
[webkit-changes] [WebKit/WebKit] ab68b2: [Remote Inspection] AX: Add screen reader support ...
Branch: refs/heads/main Home: https://github.com/WebKit/WebKit Commit: ab68b25713f7cfaa97ae4453e8e2aadfdcdfaf2b https://github.com/WebKit/WebKit/commit/ab68b25713f7cfaa97ae4453e8e2aadfdcdfaf2b Author: Joshua Hoffman Date: 2024-05-14 (Tue, 14 May 2024) Changed paths: M Source/WebCore/page/ElementTargetingController.cpp M Source/WebCore/page/ElementTargetingTypes.h M Source/WebCore/page/text-extraction/TextExtraction.cpp M Source/WebCore/page/text-extraction/TextExtraction.h M Source/WebKit/Shared/WebCoreArgumentCoders.serialization.in M Source/WebKit/UIProcess/API/APITargetedElementInfo.h M Source/WebKit/UIProcess/API/Cocoa/_WKTargetedElementInfo.h M Source/WebKit/UIProcess/API/Cocoa/_WKTargetedElementInfo.mm M Tools/TestWebKitAPI/Tests/WebKitCocoa/ElementTargetingTests.mm Log Message: --- [Remote Inspection] AX: Add screen reader support for element targeting https://bugs.webkit.org/show_bug.cgi?id=274108 rdar://128019127 Reviewed by Wenson Hsieh. To surface targeting information to screen readers, we need to add a new text property, screenReaderText, to expose those bits of rendered text relevant to screen reader users. * Source/WebCore/page/ElementTargetingController.cpp: (WebCore::targetedElementInfo): * Source/WebCore/page/ElementTargetingTypes.h: * Source/WebCore/page/text-extraction/TextExtraction.cpp: (WebCore::TextExtraction::extractRenderedText): * Source/WebCore/page/text-extraction/TextExtraction.h: * Source/WebKit/Shared/WebCoreArgumentCoders.serialization.in: * Source/WebKit/UIProcess/API/APITargetedElementInfo.h: * Source/WebKit/UIProcess/API/Cocoa/_WKTargetedElementInfo.h: * Source/WebKit/UIProcess/API/Cocoa/_WKTargetedElementInfo.mm: (-[_WKTargetedElementInfo screenReaderText]): * Tools/TestWebKitAPI/Tests/WebKitCocoa/ElementTargetingTests.mm: (TestWebKitAPI::TEST(ElementTargeting, TargetedElementScreenReaderText)): Canonical link: https://commits.webkit.org/278780@main To unsubscribe from these emails, change your notification settings at https://github.com/WebKit/WebKit/settings/notifications ___ webkit-changes mailing list webkit-changes@lists.webkit.org https://lists.webkit.org/mailman/listinfo/webkit-changes
[webkit-changes] [WebKit/WebKit] 26acf2: AX: Re-enable accessibility/ios-simulator/inline-p...
Branch: refs/heads/main Home: https://github.com/WebKit/WebKit Commit: 26acf2ecbc140d2494d90b36b4a2db604f75acb4 https://github.com/WebKit/WebKit/commit/26acf2ecbc140d2494d90b36b4a2db604f75acb4 Author: Joshua Hoffman Date: 2024-04-30 (Tue, 30 Apr 2024) Changed paths: M LayoutTests/platform/ios/TestExpectations M Source/WebCore/editing/Editor.cpp M Source/WebCore/editing/Editor.h M Source/WebKit/UIProcess/WebPageProxy.cpp M Source/WebKit/UIProcess/WebPageProxy.h M Source/WebKit/UIProcess/ios/WKContentViewInteraction.mm M Source/WebKit/UIProcess/mac/WebViewImpl.mm M Source/WebKit/WebProcess/InjectedBundle/API/c/WKBundlePage.cpp M Source/WebKit/WebProcess/InjectedBundle/API/c/WKBundlePagePrivate.h M Source/WebKit/WebProcess/WebCoreSupport/glib/WebEditorClientGLib.cpp M Source/WebKit/WebProcess/WebPage/WebPage.cpp M Source/WebKit/WebProcess/WebPage/WebPage.h M Source/WebKit/WebProcess/WebPage/WebPage.messages.in M Source/WebKitLegacy/mac/WebView/WebFrame.mm M Source/WebKitLegacy/mac/WebView/WebHTMLView.mm M Tools/WebKitTestRunner/InjectedBundle/Bindings/TextInputController.idl M Tools/WebKitTestRunner/InjectedBundle/TextInputController.cpp M Tools/WebKitTestRunner/InjectedBundle/TextInputController.h Log Message: --- AX: Re-enable accessibility/ios-simulator/inline-prediction-attributed-string test https://bugs.webkit.org/show_bug.cgi?id=273284 rdar://127079331 Reviewed by Tyler Wilcock. The iOS inline prediction infrastructure for accessibility was removed in 277282@main due to some broader prediction changes, breaking the iOS simulator test, inline-prediction-attributed-string.html. Since the iOS mechanism for writing suggestions did not change in that commit, we can re-add that code to allow AX to work as expected. This patch re-introduces the code originally added in https://github.com/WebKit/WebKit/commit/ef93c1b412c09e10975907c8fd683269eb36a413 and subsequent patches. * LayoutTests/platform/ios/TestExpectations: * Source/WebCore/editing/Editor.cpp: (WebCore::Editor::confirmComposition): (WebCore::Editor::cancelComposition): (WebCore::Editor::setComposition): * Source/WebCore/editing/Editor.h: * Source/WebKit/UIProcess/WebPageProxy.cpp: (WebKit::WebPageProxy::setCompositionAsync): * Source/WebKit/UIProcess/WebPageProxy.h: * Source/WebKit/UIProcess/ios/WKContentViewInteraction.mm: (-[WKContentView _setMarkedText:underlines:highlights:selectedRange:]): * Source/WebKit/UIProcess/mac/WebViewImpl.mm: (WebKit::WebViewImpl::setMarkedText): * Source/WebKit/WebProcess/InjectedBundle/API/c/WKBundlePage.cpp: (WKBundlePageSetComposition): * Source/WebKit/WebProcess/InjectedBundle/API/c/WKBundlePagePrivate.h: * Source/WebKit/WebProcess/WebCoreSupport/glib/WebEditorClientGLib.cpp: (WebKit::WebEditorClient::didDispatchInputMethodKeydown): * Source/WebKit/WebProcess/WebPage/WebPage.cpp: (WebKit::WebPage::setCompositionForTesting): (WebKit::WebPage::setCompositionAsync): * Source/WebKit/WebProcess/WebPage/WebPage.h: * Source/WebKit/WebProcess/WebPage/WebPage.messages.in: * Source/WebKitLegacy/mac/WebView/WebFrame.mm: (-[WebFrame setMarkedText:selectedRange:]): (-[WebFrame setMarkedText:forCandidates:]): * Source/WebKitLegacy/mac/WebView/WebHTMLView.mm: (-[WebHTMLView setMarkedText:selectedRange:]): * Tools/WebKitTestRunner/InjectedBundle/Bindings/TextInputController.idl: * Tools/WebKitTestRunner/InjectedBundle/TextInputController.cpp: (WTR::createCompositionAnnotationData): (WTR::TextInputController::setMarkedText): * Tools/WebKitTestRunner/InjectedBundle/TextInputController.h: Canonical link: https://commits.webkit.org/278171@main To unsubscribe from these emails, change your notification settings at https://github.com/WebKit/WebKit/settings/notifications ___ webkit-changes mailing list webkit-changes@lists.webkit.org https://lists.webkit.org/mailman/listinfo/webkit-changes
[webkit-changes] [WebKit/WebKit] 44ced5: AX: Move objectsForIDs back off of the main thread
Branch: refs/heads/main Home: https://github.com/WebKit/WebKit Commit: 44ced5953d9eec601879c9741c43d238caaea2bc https://github.com/WebKit/WebKit/commit/44ced5953d9eec601879c9741c43d238caaea2bc Author: Joshua Hoffman Date: 2024-04-24 (Wed, 24 Apr 2024) Changed paths: A LayoutTests/accessibility/create-unconnected-node-during-layout-crash-expected.txt A LayoutTests/accessibility/create-unconnected-node-during-layout-crash.html M LayoutTests/accessibility/mac/doctype-node-in-text-marker-crash.html M Source/WebCore/accessibility/AXLogger.cpp M Source/WebCore/accessibility/AXObjectCache.cpp M Source/WebCore/accessibility/AXObjectCache.h M Source/WebCore/accessibility/isolatedtree/AXIsolatedTree.cpp M Source/WebCore/accessibility/isolatedtree/AXIsolatedTree.h M Source/WebCore/accessibility/mac/AXObjectCacheMac.mm Log Message: --- AX: Move objectsForIDs back off of the main thread https://bugs.webkit.org/show_bug.cgi?id=272803 rdar://problem/126600212 Reviewed by Tyler Wilcock. This patch moves objectsForIDs back off of the main thread, which was originally done by the now-reverted commit https://commits.webkit.org/272323@main. That patch was reverted due to `addUnconnectedNode` being called at an invalid time (downstream of layout). This patch resolves that by deferring adding these nodes to performDeferredCacheUpdate, when we guarantee it is safe to do so. * LayoutTests/accessibility/create-unconnected-node-during-layout-crash-expected.txt: Added. * LayoutTests/accessibility/create-unconnected-node-during-layout-crash.html: Added. * LayoutTests/accessibility/mac/doctype-node-in-text-marker-crash.html: * Source/WebCore/accessibility/AXLogger.cpp: (WebCore::AXLogger::log): * Source/WebCore/accessibility/AXObjectCache.cpp: (WebCore::AXObjectCache::deferAddUnconnectedNode): (WebCore::AXObjectCache::performDeferredCacheUpdate): (WebCore::AXObjectCache::addRelation): * Source/WebCore/accessibility/AXObjectCache.h: * Source/WebCore/accessibility/isolatedtree/AXIsolatedTree.cpp: (WebCore::AXIsolatedTree::create): * Source/WebCore/accessibility/isolatedtree/AXIsolatedTree.h: (WebCore::AXIsolatedTree::objectsForIDs): * Source/WebCore/accessibility/mac/AXObjectCacheMac.mm: (WebCore::AXObjectCache::createIsolatedObjectIfNeeded): (WebCore::AXObjectCache::postTextStateChangePlatformNotification): (WebCore::AXObjectCache::postUserInfoForChanges): (WebCore::AXObjectCache::postTextReplacementPlatformNotification): (WebCore::AXObjectCache::postTextReplacementPlatformNotificationForTextControl): (WebCore::AXObjectCache::onSelectedTextChanged): (WebCore::createIsolatedObjectIfNeeded): Deleted. (WebCore::postUserInfoForChanges): Deleted. Canonical link: https://commits.webkit.org/277946@main To unsubscribe from these emails, change your notification settings at https://github.com/WebKit/WebKit/settings/notifications ___ webkit-changes mailing list webkit-changes@lists.webkit.org https://lists.webkit.org/mailman/listinfo/webkit-changes
[webkit-changes] [WebKit/WebKit] 1c3f22: AX: AXPropertyName::{ColumnIndex, RowIndex} are no...
Branch: refs/heads/main Home: https://github.com/WebKit/WebKit Commit: 1c3f222f4f9644de8d8aa2a72aebaec90f45c03d https://github.com/WebKit/WebKit/commit/1c3f222f4f9644de8d8aa2a72aebaec90f45c03d Author: Joshua Hoffman Date: 2024-03-06 (Wed, 06 Mar 2024) Changed paths: A LayoutTests/accessibility/dynamic-table-row-column-indices-expected.txt A LayoutTests/accessibility/dynamic-table-row-column-indices.html A LayoutTests/accessibility/table-insert-second-thead-expected.txt A LayoutTests/accessibility/table-insert-second-thead.html M LayoutTests/platform/glib/TestExpectations M LayoutTests/platform/mac-wk1/TestExpectations M Source/WebCore/accessibility/AXObjectCache.cpp M Source/WebCore/accessibility/AXObjectCache.h M Source/WebCore/accessibility/AccessibilityTableColumn.cpp M Source/WebCore/accessibility/AccessibilityTableColumn.h M Source/WebCore/accessibility/AccessibilityTableRow.cpp M Source/WebCore/accessibility/AccessibilityTableRow.h M Source/WebCore/accessibility/isolatedtree/AXIsolatedTree.cpp Log Message: --- AX: AXPropertyName::{ColumnIndex, RowIndex} are not updated on the isolated tree https://bugs.webkit.org/show_bug.cgi?id=270535 rdar://118240861 Reviewed by Tyler Wilcock. These properties, ColumnIndex and RowIndex, were never updated on isolated objects after being initialized. This can cause issues as ATs rely on these properties to accurately navigate tables. Two tests were added to flex this behavior. table-insert-second-thead.html also tests that we are resilient to authoring errors with respect to multiple table header elements. * LayoutTests/accessibility/dynamic-table-row-column-indices-expected.txt: Added. * LayoutTests/accessibility/dynamic-table-row-column-indices.html: Added. * LayoutTests/accessibility/table-insert-second-thead-expected.txt: Added. * LayoutTests/accessibility/table-insert-second-thead.html: Added. * LayoutTests/platform/glib/TestExpectations: * LayoutTests/platform/mac-wk1/TestExpectations: * Source/WebCore/accessibility/AXObjectCache.cpp: (WebCore::AXObjectCache::columnIndexChanged): (WebCore::AXObjectCache::rowIndexChanged): (WebCore::AXObjectCache::updateIsolatedTree): * Source/WebCore/accessibility/AXObjectCache.h: * Source/WebCore/accessibility/AccessibilityTableColumn.cpp: (WebCore::AccessibilityTableColumn::setColumnIndex): * Source/WebCore/accessibility/AccessibilityTableColumn.h: * Source/WebCore/accessibility/AccessibilityTableRow.cpp: (WebCore::AccessibilityTableRow::setRowIndex): * Source/WebCore/accessibility/AccessibilityTableRow.h: (WebCore::AccessibilityTableRow::setRowIndex): Deleted. * Source/WebCore/accessibility/isolatedtree/AXIsolatedTree.cpp: (WebCore::AXIsolatedTree::updateNodeProperties): Canonical link: https://commits.webkit.org/275762@main To unsubscribe from these emails, change your notification settings at https://github.com/WebKit/WebKit/settings/notifications ___ webkit-changes mailing list webkit-changes@lists.webkit.org https://lists.webkit.org/mailman/listinfo/webkit-changes
[webkit-changes] [WebKit/WebKit] a8f281: AX: NULL attributed string returned for text marke...
Branch: refs/heads/main Home: https://github.com/WebKit/WebKit Commit: a8f281f89e750d8fea2e45ce43f2a955f989543b https://github.com/WebKit/WebKit/commit/a8f281f89e750d8fea2e45ce43f2a955f989543b Author: Joshua Hoffman Date: 2024-03-05 (Tue, 05 Mar 2024) Changed paths: A LayoutTests/accessibility/mac/selected-text-range-unconnected-object.html A LayoutTests/platform/mac/accessibility/mac/selected-text-range-unconnected-object-expected.txt M Source/WebCore/accessibility/isolatedtree/AXIsolatedTree.cpp M Source/WebCore/accessibility/isolatedtree/AXIsolatedTree.h Log Message: --- AX: NULL attributed string returned for text markers that contain unconnected nodes https://bugs.webkit.org/show_bug.cgi?id=270499 rdar://122451549 Reviewed by Tyler Wilcock. If a node is unconnected and we queue up a node change for it, nothing will happen, since shouldCreateNodeChange will return false. This means that if we request a text marker range that points to a stale, unconnected node, we may get a null attributed string since the range being requested is invalid. This change adds a new condition to shouldCreateNodeChange for unconnected nodes, and adds a new test to verify this behavior. * LayoutTests/accessibility/mac/selected-text-range-unconnected-object.html: Added. * LayoutTests/platform/mac/accessibility/mac/selected-text-range-unconnected-object-expected.txt: Added. * Source/WebCore/accessibility/isolatedtree/AXIsolatedTree.cpp: (WebCore::AXIsolatedTree::shouldCreateNodeChange): (WebCore::AXIsolatedTree::addUnconnectedNode): (WebCore::AXIsolatedTree::removeSubtreeFromNodeMap): (WebCore::shouldCreateNodeChange): Deleted. * Source/WebCore/accessibility/isolatedtree/AXIsolatedTree.h: Canonical link: https://commits.webkit.org/275694@main To unsubscribe from these emails, change your notification settings at https://github.com/WebKit/WebKit/settings/notifications ___ webkit-changes mailing list webkit-changes@lists.webkit.org https://lists.webkit.org/mailman/listinfo/webkit-changes
[webkit-changes] [WebKit/WebKit] 1d7be2: AX: Avoid work in BitmapImage::canAnimate if anima...
Branch: refs/heads/main Home: https://github.com/WebKit/WebKit Commit: 1d7be2a5f983adaea21751f2574e605802cd https://github.com/WebKit/WebKit/commit/1d7be2a5f983adaea21751f2574e605802cd Author: Joshua Hoffman Date: 2024-03-01 (Fri, 01 Mar 2024) Changed paths: M Source/WebCore/loader/cache/CachedImage.cpp M Source/WebCore/page/ContextMenuController.cpp M Source/WebCore/page/Page.cpp M Source/WebCore/page/Page.h M Source/WebCore/platform/graphics/BitmapImage.cpp M Source/WebCore/platform/graphics/Image.cpp M Source/WebCore/platform/graphics/Image.h M Source/WebCore/testing/Internals.cpp M Source/WebKit/WebProcess/WebPage/WebPage.cpp M Source/WebKit/WebProcess/cocoa/WebProcessCocoa.mm M Tools/TestWebKitAPI/Tests/WebKit/AnimationControl.mm Log Message: --- AX: Avoid work in BitmapImage::canAnimate if animation controls are disabled https://bugs.webkit.org/show_bug.cgi?id=270136 rdar://109646792 Reviewed by Tyler Wilcock. Before this patch, the expensive work that happens in BitmapImage::canAnimate would unnecessarily occur in two cases: (1) if the image has a single-frame and (2) if image animation controls were not enabled. This patch exits early from this code path if either of those two things are true. This will improve performance for users both with and without the controls enabled. Moving `systemAllowsAnimationControls` to a static global variable on `Image` also allows us to remove the method of the same name from `Page`, since this does not need to be a per-page setting. An API test had to be updated so that we invoke `Image::setSystemAllowsImageAnimation` via Internals::setImageAnimationEnabled. This is part one of related work. In a follow up, performance issues for computing canAnimate when animation controls are enabled will be addressed. * Source/WebCore/loader/cache/CachedImage.cpp: (WebCore::CachedImage::CachedImageObserver::allowsAnimation const): (WebCore::CachedImage::allowsAnimation const): * Source/WebCore/page/ContextMenuController.cpp: (WebCore::ContextMenuController::populate): * Source/WebCore/page/Page.cpp: (WebCore::Page::setImageAnimationEnabled): (WebCore::Page::setSystemAllowsAnimationControls): Deleted. * Source/WebCore/page/Page.h: (WebCore::Page::imageAnimationEnabled const): (WebCore::Page::systemAllowsAnimationControls const): Deleted. * Source/WebCore/platform/graphics/BitmapImage.cpp: (WebCore::BitmapImage::canAnimate const): * Source/WebCore/platform/graphics/Image.cpp: (WebCore::Image::setSystemAllowsAnimationControls): * Source/WebCore/platform/graphics/Image.h: (WebCore::Image::systemAllowsAnimationControls): * Source/WebCore/testing/Internals.cpp: (WebCore::Internals::setImageAnimationEnabled): * Source/WebKit/WebProcess/WebPage/WebPage.cpp: (WebKit::WebPage::updateImageAnimationEnabled): * Source/WebKit/WebProcess/cocoa/WebProcessCocoa.mm: (WebKit::WebProcess::updatePageAccessibilitySettings): * Tools/TestWebKitAPI/Tests/WebKit/AnimationControl.mm: (TEST): Canonical link: https://commits.webkit.org/275563@main To unsubscribe from these emails, change your notification settings at https://github.com/WebKit/WebKit/settings/notifications ___ webkit-changes mailing list webkit-changes@lists.webkit.org https://lists.webkit.org/mailman/listinfo/webkit-changes
[webkit-changes] [WebKit/WebKit] ba3ffc: AX: VoiceOver frames are broken on ToT
Branch: refs/heads/main Home: https://github.com/WebKit/WebKit Commit: ba3ffca7609bd2c823e50a5f35e72a516a848928 https://github.com/WebKit/WebKit/commit/ba3ffca7609bd2c823e50a5f35e72a516a848928 Author: Joshua Hoffman Date: 2024-02-24 (Sat, 24 Feb 2024) Changed paths: M Source/WebCore/accessibility/isolatedtree/AXIsolatedObject.cpp Log Message: --- AX: VoiceOver frames are broken on ToT https://bugs.webkit.org/show_bug.cgi?id=270023 rdar://problem/123534425 Reviewed by Chris Fleizach. After 274955@main, we never returned cached relative frames, resulting in all frames being the same as the WebArea's. This patch fixes frames, and resolves the failing test, initial-relative-frame-cached.html. * Source/WebCore/accessibility/isolatedtree/AXIsolatedObject.cpp: (WebCore::AXIsolatedObject::relativeFrame const): Canonical link: https://commits.webkit.org/275290@main To unsubscribe from these emails, change your notification settings at https://github.com/WebKit/WebKit/settings/notifications ___ webkit-changes mailing list webkit-changes@lists.webkit.org https://lists.webkit.org/mailman/listinfo/webkit-changes
[webkit-changes] [WebKit/WebKit] 2f2435: AX: refactor downcast in setLastPresentedTextPredi...
Branch: refs/heads/main Home: https://github.com/WebKit/WebKit Commit: 2f2435a780c49d541fc276b858e0a8fe81f619d4 https://github.com/WebKit/WebKit/commit/2f2435a780c49d541fc276b858e0a8fe81f619d4 Author: Joshua Hoffman Date: 2024-02-20 (Tue, 20 Feb 2024) Changed paths: M Source/WebCore/accessibility/ios/AccessibilityObjectIOS.mm Log Message: --- AX: refactor downcast in setLastPresentedTextPrediction https://bugs.webkit.org/show_bug.cgi?id=269771 rdar://problem/123289610 Reviewed by Chris Fleizach. This patch separates out the dynamicDowncast in setLastPresentedTextPrediction so that is not inline. This prevents duplicate is checks, as was the case prior. * Source/WebCore/accessibility/ios/AccessibilityObjectIOS.mm: (WebCore::AccessibilityObject::setLastPresentedTextPrediction): Canonical link: https://commits.webkit.org/275051@main To unsubscribe from these emails, change your notification settings at https://github.com/WebKit/WebKit/settings/notifications ___ webkit-changes mailing list webkit-changes@lists.webkit.org https://lists.webkit.org/mailman/listinfo/webkit-changes
[webkit-changes] [WebKit/WebKit] 02029a: AX: Fix failing tests for element-reflection-aria*
Branch: refs/heads/main Home: https://github.com/WebKit/WebKit Commit: 02029a362016bacb321a44384a69c06670f57612 https://github.com/WebKit/WebKit/commit/02029a362016bacb321a44384a69c06670f57612 Author: Joshua Hoffman Date: 2024-02-19 (Mon, 19 Feb 2024) Changed paths: M LayoutTests/accessibility-isolated-tree/TestExpectations M LayoutTests/accessibility/element-reflection-ariacontrols-expected.txt M LayoutTests/accessibility/element-reflection-ariacontrols.html M LayoutTests/accessibility/element-reflection-ariadetails-expected.txt M LayoutTests/accessibility/element-reflection-ariadetails.html M LayoutTests/accessibility/element-reflection-ariaerrormessage-expected.txt M LayoutTests/accessibility/element-reflection-ariaerrormessage.html M LayoutTests/accessibility/element-reflection-ariaflowto-expected.txt M LayoutTests/accessibility/element-reflection-ariaflowto.html M LayoutTests/accessibility/element-reflection-ariaowns-expected.txt M LayoutTests/accessibility/element-reflection-ariaowns.html Log Message: --- AX: Fix failing tests for element-reflection-aria* https://bugs.webkit.org/show_bug.cgi?id=269766 rdar://problem/123282478 Reviewed by Chris Fleizach. This patch fixes four failing tests that were failing in isolated tree mode due to not being asynchronous. The style for element-reflection-ariaowns.html was also updated, but one line (wrapper.childrenCount) still fails due to bugs in aria-owns. * LayoutTests/accessibility-isolated-tree/TestExpectations: * LayoutTests/accessibility/element-reflection-ariacontrols-expected.txt: * LayoutTests/accessibility/element-reflection-ariacontrols.html: * LayoutTests/accessibility/element-reflection-ariadetails-expected.txt: * LayoutTests/accessibility/element-reflection-ariadetails.html: * LayoutTests/accessibility/element-reflection-ariaerrormessage-expected.txt: * LayoutTests/accessibility/element-reflection-ariaerrormessage.html: * LayoutTests/accessibility/element-reflection-ariaflowto-expected.txt: * LayoutTests/accessibility/element-reflection-ariaflowto.html: * LayoutTests/accessibility/element-reflection-ariaowns-expected.txt: * LayoutTests/accessibility/element-reflection-ariaowns.html: Canonical link: https://commits.webkit.org/275023@main To unsubscribe from these emails, change your notification settings at https://github.com/WebKit/WebKit/settings/notifications ___ webkit-changes mailing list webkit-changes@lists.webkit.org https://lists.webkit.org/mailman/listinfo/webkit-changes
[webkit-changes] [WebKit/WebKit] ed2bfb: AX: Update cached text runs when line layout changes
Branch: refs/heads/main Home: https://github.com/WebKit/WebKit Commit: ed2bfb346eb51503269ee148064da49d3e8d5da9 https://github.com/WebKit/WebKit/commit/ed2bfb346eb51503269ee148064da49d3e8d5da9 Author: Joshua Hoffman Date: 2024-02-19 (Mon, 19 Feb 2024) Changed paths: A LayoutTests/accessibility/ax-thread-text-apis/dynamic-text-line-wrapping-expected.txt A LayoutTests/accessibility/ax-thread-text-apis/dynamic-text-line-wrapping.html M Source/WebCore/accessibility/AXLogger.cpp M Source/WebCore/accessibility/AXObjectCache.cpp M Source/WebCore/accessibility/AXObjectCache.h M Source/WebCore/accessibility/isolatedtree/AXIsolatedTree.cpp M Source/WebCore/rendering/RenderBlockFlow.cpp Log Message: --- AX: Update cached text runs when line layout changes https://bugs.webkit.org/show_bug.cgi?id=269628 rdar://problem/123122761 Reviewed by Tyler Wilcock. When AX_THREAD_TEXT_APIS is enabled, we cache textruns when objects are initialized. But, when their line layout updates (for example, when the width of their container changes), we do not update the text runs, meaning they will become stale and the line APIs will return incorrect information to clients. This patch hooks into line layout, and updates the cached runs for objects that have changed. One consideration while exploring this patch was whether we need to debounce this caching. But, sampling shows that this computation is not that expensive, making debouncing excessive. * LayoutTests/accessibility/ax-thread-text-apis/dynamic-text-line-wrapping-expected.txt: Added. * LayoutTests/accessibility/ax-thread-text-apis/dynamic-text-line-wrapping.html: Added. * Source/WebCore/accessibility/AXLogger.cpp: (WebCore::operator<<): * Source/WebCore/accessibility/AXObjectCache.cpp: (WebCore::AXObjectCache::onTextRunsChanged): (WebCore::AXObjectCache::updateIsolatedTree): * Source/WebCore/accessibility/AXObjectCache.h: * Source/WebCore/accessibility/isolatedtree/AXIsolatedTree.cpp: (WebCore::AXIsolatedTree::updateNodeProperties): * Source/WebCore/rendering/RenderBlockFlow.cpp: (WebCore::RenderBlockFlow::layoutModernLines): Canonical link: https://commits.webkit.org/274999@main To unsubscribe from these emails, change your notification settings at https://github.com/WebKit/WebKit/settings/notifications ___ webkit-changes mailing list webkit-changes@lists.webkit.org https://lists.webkit.org/mailman/listinfo/webkit-changes
[webkit-changes] [WebKit/WebKit] 322e58: AX: Adopt non-blinking cursor API
Branch: refs/heads/main Home: https://github.com/WebKit/WebKit Commit: 322e588ea0da59e5871fc52c3d29f3e0cd77617e https://github.com/WebKit/WebKit/commit/322e588ea0da59e5871fc52c3d29f3e0cd77617e Author: Joshua Hoffman Date: 2024-02-15 (Thu, 15 Feb 2024) Changed paths: A LayoutTests/accessibility/mac/prefers-non-blinking-cursor-expected.txt A LayoutTests/accessibility/mac/prefers-non-blinking-cursor.html M LayoutTests/platform/mac/TestExpectations M Source/WTF/wtf/PlatformEnable.h M Source/WebCore/editing/FrameSelection.cpp M Source/WebCore/editing/FrameSelection.h M Source/WebCore/page/Page.cpp M Source/WebCore/page/Page.h M Source/WebCore/platform/CaretAnimator.cpp M Source/WebCore/platform/CaretAnimator.h M Source/WebCore/platform/DictationCaretAnimator.cpp M Source/WebCore/testing/Internals.cpp M Source/WebCore/testing/Internals.h M Source/WebCore/testing/Internals.idl M Source/WebKit/Platform/spi/Cocoa/AccessibilitySupportSPI.h M Source/WebKit/Shared/AccessibilityPreferences.h M Source/WebKit/Shared/AccessibilityPreferences.serialization.in M Source/WebKit/UIProcess/Cocoa/WebProcessPoolCocoa.mm M Source/WebKit/WebProcess/WebPage/WebPage.cpp M Source/WebKit/WebProcess/WebPage/WebPage.h M Source/WebKit/WebProcess/WebProcess.h M Source/WebKit/WebProcess/cocoa/WebProcessCocoa.mm Log Message: --- AX: Adopt non-blinking cursor API https://bugs.webkit.org/show_bug.cgi?id=268920 rdar://118550285 Reviewed by Tyler Wilcock. This patch adopts a new accessibility API, _AXSPrefersNonBlinkingCursorIndicator, to turns off caret blinking animations when enabled. A new test was also added to verify this behavior. * LayoutTests/accessibility/mac/prefers-non-blinking-cursor-expected.txt: Added. * LayoutTests/accessibility/mac/prefers-non-blinking-cursor.html: Added. * LayoutTests/platform/mac/TestExpectations: * Source/WTF/wtf/PlatformEnable.h: * Source/WebCore/editing/FrameSelection.cpp: (WebCore::FrameSelection::setPrefersNonBlinkingCursor): * Source/WebCore/editing/FrameSelection.h: * Source/WebCore/page/Page.cpp: (WebCore::Page::setPrefersNonBlinkingCursor): * Source/WebCore/page/Page.h: (WebCore::Page::prefersNonBlinkingCursor const): * Source/WebCore/platform/CaretAnimator.cpp: (WebCore::CaretAnimator::isBlinkingSuspended const): * Source/WebCore/platform/CaretAnimator.h: (WebCore::CaretAnimator::setPrefersNonBlinkingCursor): (WebCore::CaretAnimator::prefersNonBlinkingCursor const): (WebCore::CaretAnimator::CaretAnimator): (WebCore::CaretAnimator::isBlinkingSuspended const): Deleted. * Source/WebCore/platform/DictationCaretAnimator.cpp: (WebCore::DictationCaretAnimator::expandedCaretRect const): * Source/WebCore/testing/Internals.cpp: (WebCore::Internals::setPrefersNonBlinkingCursor): (WebCore::Internals::isCaretBlinkingSuspended): * Source/WebCore/testing/Internals.h: * Source/WebCore/testing/Internals.idl: * Source/WebKit/Platform/spi/Cocoa/AccessibilitySupportSPI.h: * Source/WebKit/Shared/AccessibilityPreferences.h: * Source/WebKit/Shared/AccessibilityPreferences.serialization.in: * Source/WebKit/UIProcess/Cocoa/WebProcessPoolCocoa.mm: (WebKit::accessibilityPreferences): (WebKit::WebProcessPool::registerNotificationObservers): * Source/WebKit/WebProcess/WebPage/WebPage.cpp: (WebKit::m_unifiedTextReplacementController): (WebKit::WebPage::updatePrefersNonBlinkingCursor): * Source/WebKit/WebProcess/WebPage/WebPage.h: * Source/WebKit/WebProcess/WebProcess.h: (WebKit::WebProcess::prefersNonBlinkingCursor const): * Source/WebKit/WebProcess/cocoa/WebProcessCocoa.mm: (WebKit::WebProcess::accessibilityPreferencesDidChange): (WebKit::WebProcess::updatePageAccessibilitySettings): Canonical link: https://commits.webkit.org/274792@main ___ webkit-changes mailing list webkit-changes@lists.webkit.org https://lists.webkit.org/mailman/listinfo/webkit-changes
[webkit-changes] [WebKit/WebKit] 58895e: AX: Missing _prepareAccessibilityCall in accessibi...
Branch: refs/heads/main Home: https://github.com/WebKit/WebKit Commit: 58895edc47c1a103654ee80d9d5a389cbb9fd619 https://github.com/WebKit/WebKit/commit/58895edc47c1a103654ee80d9d5a389cbb9fd619 Author: Joshua Hoffman Date: 2024-02-12 (Mon, 12 Feb 2024) Changed paths: M Source/WebCore/accessibility/ios/WebAccessibilityObjectWrapperIOS.mm Log Message: --- AX: Missing _prepareAccessibilityCall in accessibilityIsInNonNativeTextControl https://bugs.webkit.org/show_bug.cgi?id=269214 rdar://122778867 Reviewed by Andres Gonzalez. We need to add a _prepareAccessibilityCall to avoid a nullptr dereference. * Source/WebCore/accessibility/ios/WebAccessibilityObjectWrapperIOS.mm: (-[WebAccessibilityObjectWrapper accessibilityIsInNonNativeTextControl]): Canonical link: https://commits.webkit.org/274497@main ___ webkit-changes mailing list webkit-changes@lists.webkit.org https://lists.webkit.org/mailman/listinfo/webkit-changes
[webkit-changes] [WebKit/WebKit] fcc36e: AX: Backing object can be destroyed in _accessibil...
Branch: refs/heads/main Home: https://github.com/WebKit/WebKit Commit: fcc36e12e4cb6230daa40e08a9930ac98accbf5c https://github.com/WebKit/WebKit/commit/fcc36e12e4cb6230daa40e08a9930ac98accbf5c Author: Joshua Hoffman Date: 2024-02-12 (Mon, 12 Feb 2024) Changed paths: A LayoutTests/accessibility/ios-simulator/destroy-on-press-expected.txt A LayoutTests/accessibility/ios-simulator/destroy-on-press.html M Source/WebCore/accessibility/ios/WebAccessibilityObjectWrapperIOS.mm Log Message: --- AX: Backing object can be destroyed in _accessibilityActivate https://bugs.webkit.org/show_bug.cgi?id=268997 rdar://122491194 Reviewed by Chris Fleizach. Calling AccessibilityObject::press() on the backing object is non-trivial, and could cause the object to be destroyed, resulting a null dereference in _accessibilityActivate when calling `isStaticText`. This patch protects that backing object with a RefPtr. * LayoutTests/accessibility/ios-simulator/destroy-on-press-expected.txt: Added. * LayoutTests/accessibility/ios-simulator/destroy-on-press.html: Added. * Source/WebCore/accessibility/ios/WebAccessibilityObjectWrapperIOS.mm: (-[WebAccessibilityObjectWrapper _accessibilityActivate]): Canonical link: https://commits.webkit.org/274477@main ___ webkit-changes mailing list webkit-changes@lists.webkit.org https://lists.webkit.org/mailman/listinfo/webkit-changes
[webkit-changes] [WebKit/WebKit] e6c6fd: AX: Serve initial AXRelativeFrame for elements wit...
Branch: refs/heads/main Home: https://github.com/WebKit/WebKit Commit: e6c6fde680601443f7797f6f66eba8453da7a76a https://github.com/WebKit/WebKit/commit/e6c6fde680601443f7797f6f66eba8453da7a76a Author: Joshua Hoffman Date: 2024-02-12 (Mon, 12 Feb 2024) Changed paths: A LayoutTests/accessibility/mac/initial-relative-frame-cached-expected.txt A LayoutTests/accessibility/mac/initial-relative-frame-cached.html M LayoutTests/platform/mac-wk1/TestExpectations M Source/WebCore/accessibility/AXObjectCache.cpp M Source/WebCore/accessibility/AXObjectCache.h M Source/WebCore/accessibility/AccessibilityObject.h M Source/WebCore/accessibility/AccessibilityRenderObject.cpp M Source/WebCore/accessibility/AccessibilityRenderObject.h M Source/WebCore/accessibility/isolatedtree/AXIsolatedObject.cpp M Source/WebCore/accessibility/isolatedtree/AXIsolatedObject.h M Source/WebCore/accessibility/isolatedtree/AXIsolatedTree.cpp M Source/WebCore/accessibility/isolatedtree/AXIsolatedTree.h M Source/WebKit/WebProcess/InjectedBundle/API/c/WKBundlePage.cpp M Source/WebKit/WebProcess/InjectedBundle/API/c/WKBundlePagePrivate.h M Tools/WebKitTestRunner/InjectedBundle/AccessibilityController.cpp M Tools/WebKitTestRunner/InjectedBundle/AccessibilityController.h M Tools/WebKitTestRunner/InjectedBundle/Bindings/AccessibilityController.idl Log Message: --- AX: Serve initial AXRelativeFrame for elements without cached frames off of the main thread https://bugs.webkit.org/show_bug.cgi?id=268035 rdar://120764228 Reviewed by Tyler Wilcock. We only serve relative frames for objects on the secondary thread once they are cached during the Accessibility paint phase. This means that when we move to objects that were offscreen or haven't been painted, we have to use the main thread to serve the relative frame. This patch instead serves a rough frame from the AX thread initally, until the object's frame is cached during painting. This rough frame is constructed by using the frame rect of the element for its size, and it's closest painted ancestor for its position. As soon as the element's precise frame is cached duiring paint, this is updated. * LayoutTests/accessibility/mac/initial-relative-frame-cached-expected.txt: Added. * LayoutTests/accessibility/mac/initial-relative-frame-cached.html: Added. * LayoutTests/platform/mac-wk1/TestExpectations: * Source/WebCore/accessibility/AXObjectCache.cpp: (WebCore::AXObjectCache::setForceInitialFrameCaching): (WebCore::AXObjectCache::shouldServeInitialCachedFrame): * Source/WebCore/accessibility/AXObjectCache.h: (WebCore::AXObjectCache::forceInitialFrameCaching): * Source/WebCore/accessibility/AccessibilityObject.h: (WebCore::AccessibilityObject::frameRect const): (WebCore::AccessibilityObject::isNonLayerSVGObject const): * Source/WebCore/accessibility/AccessibilityRenderObject.cpp: (WebCore::AccessibilityRenderObject::isNonLayerSVGObject const): (WebCore::AccessibilityRenderObject::frameRect const): * Source/WebCore/accessibility/AccessibilityRenderObject.h: * Source/WebCore/accessibility/isolatedtree/AXIsolatedObject.cpp: (WebCore::AXIsolatedObject::initializeProperties): (WebCore::AXIsolatedObject::relativeFrame const): * Source/WebCore/accessibility/isolatedtree/AXIsolatedObject.h: * Source/WebCore/accessibility/isolatedtree/AXIsolatedTree.cpp: (WebCore::AXIsolatedTree::updateFrame): * Source/WebCore/accessibility/isolatedtree/AXIsolatedTree.h: * Source/WebKit/WebProcess/InjectedBundle/API/c/WKBundlePage.cpp: (WKAccessibilitySetForceInitialFrameCaching): * Source/WebKit/WebProcess/InjectedBundle/API/c/WKBundlePagePrivate.h: * Tools/WebKitTestRunner/InjectedBundle/AccessibilityController.cpp: (WTR::AccessibilityController::setForceInitialFrameCaching): * Tools/WebKitTestRunner/InjectedBundle/AccessibilityController.h: * Tools/WebKitTestRunner/InjectedBundle/Bindings/AccessibilityController.idl: Canonical link: https://commits.webkit.org/274472@main ___ webkit-changes mailing list webkit-changes@lists.webkit.org https://lists.webkit.org/mailman/listinfo/webkit-changes
[webkit-changes] [WebKit/WebKit] 05842e: AX: Revert 272323@main: unsafe calls to addUnconne...
Branch: refs/heads/main Home: https://github.com/WebKit/WebKit Commit: 05842e7686500455c98398d6d218cde1104b613f https://github.com/WebKit/WebKit/commit/05842e7686500455c98398d6d218cde1104b613f Author: Joshua Hoffman Date: 2024-02-05 (Mon, 05 Feb 2024) Changed paths: M LayoutTests/accessibility/mac/aria-errormessage-expected.txt M LayoutTests/accessibility/mac/aria-errormessage.html M Source/WebCore/accessibility/AXObjectCache.cpp M Source/WebCore/accessibility/isolatedtree/AXIsolatedTree.cpp M Source/WebCore/accessibility/isolatedtree/AXIsolatedTree.h Log Message: --- AX: Revert 272323@main: unsafe calls to addUnconnectedNode (edit) https://bugs.webkit.org/show_bug.cgi?id=268785 rdar://problem/122344819 Reviewed by Tyler Wilcock. Bug https://bugs.webkit.org/show_bug.cgi?id=266608 introduced a new behavior where we create isolated nodes for ignored objects in relations via addUnconnectedNode. However, this call can be unsafe, particularly if relations are updated (and unconnected nodes are added) as a result of accessibilityIsIgnored. This patch reverts that change and restores the behavior to retrieve objects off of the main thread when they have no isolated object. The behavior from https://bugs.webkit.org/show_bug.cgi?id=266608 will be reintroduced once a mechanism to safely resolve nodes in addUnconnectedNode is determined. * LayoutTests/accessibility/mac/aria-errormessage-expected.txt: * LayoutTests/accessibility/mac/aria-errormessage.html: * Source/WebCore/accessibility/AXObjectCache.cpp: (WebCore::AXObjectCache::addRelation): * Source/WebCore/accessibility/isolatedtree/AXIsolatedTree.cpp: (WebCore::AXIsolatedTree::create): (WebCore::AXIsolatedTree::objectsForIDs): (WebCore::AXIsolatedTree::addUnconnectedNode): (WebCore::AXIsolatedTree::removeSubtreeFromNodeMap): * Source/WebCore/accessibility/isolatedtree/AXIsolatedTree.h: (WebCore::AXIsolatedTree::objectsForIDs const): Deleted. Canonical link: https://commits.webkit.org/274124@main ___ webkit-changes mailing list webkit-changes@lists.webkit.org https://lists.webkit.org/mailman/listinfo/webkit-changes
[webkit-changes] [WebKit/WebKit] cfe51e: AX: Comboboxes don't expose their linked objects c...
Branch: refs/heads/main Home: https://github.com/WebKit/WebKit Commit: cfe51e0a34f03d8db9e573f6ea104160f5208549 https://github.com/WebKit/WebKit/commit/cfe51e0a34f03d8db9e573f6ea104160f5208549 Author: Joshua Hoffman Date: 2024-01-25 (Thu, 25 Jan 2024) Changed paths: A LayoutTests/accessibility/combobox-linked-listbox-destroyed-expected.txt A LayoutTests/accessibility/combobox-linked-listbox-destroyed.html M LayoutTests/platform/glib/TestExpectations M Source/WebCore/accessibility/AXCoreObject.cpp M Source/WebCore/accessibility/AXCoreObject.h M Source/WebCore/accessibility/AXObjectCache.cpp M Source/WebCore/accessibility/AXObjectCache.h M Source/WebCore/accessibility/AccessibilityNodeObject.cpp M Source/WebCore/accessibility/AccessibilityNodeObject.h M Source/WebCore/accessibility/AccessibilityObject.h M Source/WebCore/accessibility/isolatedtree/AXIsolatedObject.cpp M Source/WebCore/accessibility/isolatedtree/AXIsolatedObject.h M Source/WebCore/accessibility/isolatedtree/AXIsolatedTree.cpp M Source/WebCore/accessibility/isolatedtree/AXIsolatedTree.h Log Message: --- AX: Comboboxes don't expose their linked objects correctly https://bugs.webkit.org/show_bug.cgi?id=267754 rdar://problem/121242926 Reviewed by Chris Fleizach. This patch resolves a bug that would cause comboboxes to not expose their linked objects correctly. That bug prevented ATs from properly navigating common combox patterns like the demos provided on sites like the following: * https://www.w3.org/WAI/ARIA/apg/patterns/combobox/examples/combobox-autocomplete-list/ * https://webkit.org/blog-files/aria1.0/combobox_with_live_region_status.html One reason that these comboboxes were "losing" their linked objects was due to the way we currently handle replaced objects. After an object is replaced once, we wouldn't update the m_nodeObjectMapping with the last AXID associated with a given node. This information is critical to how we decide whether to update relations or not, so we were missing out on critical relations updates, and not establishing controller/owner relationships properly. To address this, we now update the m_nodeObjectMapping when new AX render objects are created for the same node. We also now keep track of recently deleted relations, since objects may be removed from relations due to their renderer being destroyed, and use this to determine if a replaced object should result in re-calculating relations. A test was added to verify that this behavior works for both aria-owns and aria-controls. This patch also unifies several methods (linkedObjects, addRadioButtonGroupChildren, and addRadioButtonGroupMembers) between live and isolated objects by moving them to AXCoreObject. This not only permits constructing linkedObjects on the secondary thread from our cached relations, but also allows linkedObjects to be more accurate, as it will be in lockstep with the isolated tree's relations and not a separate property to update. * LayoutTests/accessibility/combobox-linked-listbox-destroyed-expected.txt: Added. * LayoutTests/accessibility/combobox-linked-listbox-destroyed.html: Added. * LayoutTests/platform/glib/TestExpectations: * Source/WebCore/accessibility/AXCoreObject.cpp: (WebCore::AXCoreObject::linkedObjects const): (WebCore::AXCoreObject::appendRadioButtonDescendants const): (WebCore::AXCoreObject::appendRadioButtonGroupMembers const): * Source/WebCore/accessibility/AXCoreObject.h: * Source/WebCore/accessibility/AXObjectCache.cpp: (WebCore::AXObjectCache::cacheAndInitializeWrapper): (WebCore::AXObjectCache::performDeferredCacheUpdate): (WebCore::AXObjectCache::updateIsolatedTree): (WebCore::AXObjectCache::removeRelations): (WebCore::AXObjectCache::updateRelationsIfNeeded): * Source/WebCore/accessibility/AXObjectCache.h: * Source/WebCore/accessibility/AccessibilityNodeObject.cpp: (WebCore::AccessibilityNodeObject::radioButtonGroup const): (WebCore::AccessibilityNodeObject::isRadioInput const): (WebCore::AccessibilityNodeObject::internalLinkElement const): (WebCore::AccessibilityNodeObject::addRadioButtonGroupChildren const): Deleted. (WebCore::AccessibilityNodeObject::addRadioButtonGroupMembers const): Deleted. (WebCore::AccessibilityNodeObject::linkedObjects const): Deleted. * Source/WebCore/accessibility/AccessibilityNodeObject.h: * Source/WebCore/accessibility/AccessibilityObject.h: (WebCore::AccessibilityObject::observableObject const): * Source/WebCore/accessibility/isolatedtree/AXIsolatedObject.cpp: (WebCore::AXIsolatedObject::initializeProperties): * Source/WebCore/accessibility/isolatedtree/AXIsolatedObject.h: * Source/WebCore/accessibility/isolatedtree/AXIsolatedTree.cpp: (WebCore::AXIsolatedTree::updateNodeProperties): * Source/WebCore/accessibility/isolatedtree/AXIsolatedTree.h: Canonical link: https://commits.webkit.org/273542@main _
[webkit-changes] [WebKit/WebKit] ec4f49: AX: Relative frames for RenderTables aren't being ...
Branch: refs/heads/main Home: https://github.com/WebKit/WebKit Commit: ec4f4923b19d0ed56921d6b5b0aadb69ada735eb https://github.com/WebKit/WebKit/commit/ec4f4923b19d0ed56921d6b5b0aadb69ada735eb Author: Joshua Hoffman Date: 2024-01-23 (Tue, 23 Jan 2024) Changed paths: M LayoutTests/accessibility-isolated-tree/TestExpectations M Source/WebCore/rendering/RenderTable.cpp Log Message: --- AX: Relative frames for RenderTables aren't being cached https://bugs.webkit.org/show_bug.cgi?id=267913 rdar://problem/121417745 Reviewed by Tyler Wilcock. We had not been caching the relative frame of RenderTables on paint since they override RenderBlock::paintObject. This starts caching those frames on paint. * LayoutTests/accessibility-isolated-tree/TestExpectations: * Source/WebCore/rendering/RenderTable.cpp: (WebCore::RenderTable::paintObject): Canonical link: https://commits.webkit.org/273394@main ___ webkit-changes mailing list webkit-changes@lists.webkit.org https://lists.webkit.org/mailman/listinfo/webkit-changes
[webkit-changes] [WebKit/WebKit] 0c3392: AX: ASSERTION FAILED: m_table inside of AXIsolated...
Branch: refs/heads/main Home: https://github.com/WebKit/WebKit Commit: 0c339289de3709d9364926b0480ceb11875478a6 https://github.com/WebKit/WebKit/commit/0c339289de3709d9364926b0480ceb11875478a6 Author: Joshua Hoffman Date: 2024-01-11 (Thu, 11 Jan 2024) Changed paths: M Source/WebCore/accessibility/isolatedtree/AXIsolatedTree.cpp Log Message: --- AX: ASSERTION FAILED: m_table inside of AXIsolatedTree::create https://bugs.webkit.org/show_bug.cgi?id=267348 rdar://120788145 Reviewed by Andres Gonzalez. We cannot rely on using axObjectCache.relations() to iterate the new relations during the creation of the isolated tree, as that HashMap may be modified or in the process of being updated. This patch creates a copy of these relations instead, to prevent this issue. This change also prevents the need to call AXObjectCache::relations() twice—which could subsequently call updateRelationsIfNeeded() downstream. * Source/WebCore/accessibility/isolatedtree/AXIsolatedTree.cpp: (WebCore::AXIsolatedTree::create): Canonical link: https://commits.webkit.org/272958@main ___ webkit-changes mailing list webkit-changes@lists.webkit.org https://lists.webkit.org/mailman/listinfo/webkit-changes
[webkit-changes] [WebKit/WebKit] 51f836: AX: Tables with one row of all header cells should...
Branch: refs/heads/main Home: https://github.com/WebKit/WebKit Commit: 51f8361485f6936bad9dd41d6028a9b1b43d3fde https://github.com/WebKit/WebKit/commit/51f8361485f6936bad9dd41d6028a9b1b43d3fde Author: Joshua Hoffman Date: 2024-01-05 (Fri, 05 Jan 2024) Changed paths: A LayoutTests/accessibility/single-th-layout-table-expected.txt A LayoutTests/accessibility/single-th-layout-table.html M Source/WebCore/accessibility/AXObjectCache.cpp M Source/WebCore/accessibility/AccessibilityTable.cpp Log Message: --- AX: Tables with one row of all header cells should not be exposed as data tables https://bugs.webkit.org/show_bug.cgi?id=267056 rdar://119941473 Reviewed by Tyler Wilcock. Due to logic in isDataTable, we currently expose tables with one row of all header cells as data tables. But, most other single-row tables are considered layout tables. This patch updates out logic to consider this markup a layout table. AXObjectCache::childrenChanged was also updated to recompute a tables exposability when rows change outside of table sections (tbody, thead, tfoot). * LayoutTests/accessibility/single-th-layout-table-expected.txt: Added. * LayoutTests/accessibility/single-th-layout-table.html: Added. * Source/WebCore/accessibility/AXObjectCache.cpp: (WebCore::AXObjectCache::childrenChanged): * Source/WebCore/accessibility/AccessibilityTable.cpp: (WebCore::AccessibilityTable::isDataTable const): Canonical link: https://commits.webkit.org/272716@main ___ webkit-changes mailing list webkit-changes@lists.webkit.org https://lists.webkit.org/mailman/listinfo/webkit-changes
[webkit-changes] [WebKit/WebKit] 1a8243: AX: Grids/tables are not resilient to invalid Row-...
Branch: refs/heads/main Home: https://github.com/WebKit/WebKit Commit: 1a8243f4e81e0c14d5d032cf42037eafea856b67 https://github.com/WebKit/WebKit/commit/1a8243f4e81e0c14d5d032cf42037eafea856b67 Author: Joshua Hoffman Date: 2023-12-21 (Thu, 21 Dec 2023) Changed paths: A LayoutTests/accessibility/grid-row-authoring-error-ignored.html A LayoutTests/platform/glib/accessibility/grid-row-authoring-error-ignored-expected.txt A LayoutTests/platform/mac/accessibility/grid-row-authoring-error-ignored-expected.txt M Source/WebCore/accessibility/AXCoreObject.h M Source/WebCore/accessibility/AccessibilityObject.cpp M Source/WebCore/accessibility/AccessibilityObject.h M Source/WebCore/accessibility/AccessibilityRenderObject.cpp Log Message: --- AX: Grids/tables are not resilient to invalid Row->Cell hierarchy https://bugs.webkit.org/show_bug.cgi?id=266680 rdar://118938262 Reviewed by Chris Fleizach. Our AX tree structure for tables is not resilient for a common authoring error where table rows are not the direct unignored parent of table cells. This markdown does not follow the spec (https://www.w3.org/TR/wai-aria-1.1/#gridcell), but is used by authors regardless. This has shown be the cause of missing content in a variety of tables. To be more resilient to these errors, this patch makes all objects that are between cells and their parent rows ignored. A new test was added to verify this behavior. * LayoutTests/accessibility/grid-row-authoring-error-ignored.html: Added. * LayoutTests/platform/glib/accessibility/grid-row-authoring-error-ignored-expected.txt: Added. * LayoutTests/platform/mac/accessibility/grid-row-authoring-error-ignored-expected.txt: Added. * Source/WebCore/accessibility/AXCoreObject.h: * Source/WebCore/accessibility/AccessibilityObject.cpp: (WebCore::AccessibilityObject::computeAncestorFlags const): (WebCore::AccessibilityObject::matchesAncestorFlag const): (WebCore::AccessibilityObject::isInRow const): (WebCore::AccessibilityObject::ignoredByRowAncestor const): * Source/WebCore/accessibility/AccessibilityObject.h: * Source/WebCore/accessibility/AccessibilityRenderObject.cpp: (WebCore::AccessibilityRenderObject::computeAccessibilityIsIgnored const): Canonical link: https://commits.webkit.org/272447@main ___ webkit-changes mailing list webkit-changes@lists.webkit.org https://lists.webkit.org/mailman/listinfo/webkit-changes
[webkit-changes] [WebKit/WebKit] e4ad61: AX: Move objectsForIds off of the main thread
Branch: refs/heads/main Home: https://github.com/WebKit/WebKit Commit: e4ad61660d18fb4c6ea566f697dc59bfa0229ae3 https://github.com/WebKit/WebKit/commit/e4ad61660d18fb4c6ea566f697dc59bfa0229ae3 Author: Joshua Hoffman Date: 2023-12-19 (Tue, 19 Dec 2023) Changed paths: M LayoutTests/accessibility/mac/aria-errormessage-expected.txt M LayoutTests/accessibility/mac/aria-errormessage.html M Source/WebCore/accessibility/AXObjectCache.cpp M Source/WebCore/accessibility/isolatedtree/AXIsolatedTree.cpp M Source/WebCore/accessibility/isolatedtree/AXIsolatedTree.h Log Message: --- AX: Move objectsForIds off of the main thread https://bugs.webkit.org/show_bug.cgi?id=266608 rdar://116133586 Reviewed by Tyler Wilcock. This patch moves objectsForIDs completely off of the main thread by eagerly caching ignored objects that are origins/targets of relationships. This allows all potentially requested AX objects to be served from the AX thread. These objects are being added as unconnected in two spots: (1) when the isolated tree is initialized and (2) when a new relation is being added. * LayoutTests/accessibility/mac/aria-errormessage-expected.txt: * LayoutTests/accessibility/mac/aria-errormessage.html: * Source/WebCore/accessibility/AXObjectCache.cpp: (WebCore::AXObjectCache::addRelation): * Source/WebCore/accessibility/isolatedtree/AXIsolatedTree.cpp: (WebCore::AXIsolatedTree::create): (WebCore::AXIsolatedTree::objectsForIDs): (WebCore::AXIsolatedTree::addUnconnectedNode): (WebCore::AXIsolatedTree::removeSubtreeFromNodeMap): * Source/WebCore/accessibility/isolatedtree/AXIsolatedTree.h: Canonical link: https://commits.webkit.org/272323@main ___ webkit-changes mailing list webkit-changes@lists.webkit.org https://lists.webkit.org/mailman/listinfo/webkit-changes
[webkit-changes] [WebKit/WebKit] 260dbd: AX: Serve relatedObjectIdsFor off of the main thread
Branch: refs/heads/main Home: https://github.com/WebKit/WebKit Commit: 260dbd54ddc991eb4da22ade56c40a850e31fe81 https://github.com/WebKit/WebKit/commit/260dbd54ddc991eb4da22ade56c40a850e31fe81 Author: Joshua Hoffman Date: 2023-12-14 (Thu, 14 Dec 2023) Changed paths: M LayoutTests/accessibility/mac/table-headers-attribute.html M Source/WebCore/accessibility/AXObjectCache.cpp M Source/WebCore/accessibility/isolatedtree/AXIsolatedTree.cpp M Source/WebCore/accessibility/isolatedtree/AXIsolatedTree.h Log Message: --- AX: Serve relatedObjectIdsFor off of the main thread https://bugs.webkit.org/show_bug.cgi?id=266268 rdar://116133758 Reviewed by Tyler Wilcock. Before this patch, we would have to go to the main thread to retrieve relations from the cache whenever they were dirty inside AXIsolatedTree::relatedObjectIdsFor. This patch removes that necessity by caching relations, which is performed only when they are dirty. Taking advantage of the new deferred node updates logic, we now cache relations from the AXObjectCache only if the m_relationsNeedUpdate flag is set when processQueuedNodeUpdates is fired, rather than caching lazily in relatedObjectIdsFor. This allows AXIsolatedTree::relatedObjectIdsFor to use the cached m_relations. One test was made async to reflect this change. * LayoutTests/accessibility/mac/table-headers-attribute.html: * Source/WebCore/accessibility/AXObjectCache.cpp: (WebCore::AXObjectCache::relationsNeedUpdate): * Source/WebCore/accessibility/isolatedtree/AXIsolatedTree.cpp: (WebCore::AXIsolatedTree::create): (WebCore::AXIsolatedTree::updateRelations): (WebCore::AXIsolatedTree::relatedObjectIDsFor): (WebCore::AXIsolatedTree::processQueuedNodeUpdates): * Source/WebCore/accessibility/isolatedtree/AXIsolatedTree.h: Canonical link: https://commits.webkit.org/272054@main ___ webkit-changes mailing list webkit-changes@lists.webkit.org https://lists.webkit.org/mailman/listinfo/webkit-changes
[webkit-changes] [WebKit/WebKit] 0b4b1f: AX: Update hoffmanjoshua committer status
Branch: refs/heads/main Home: https://github.com/WebKit/WebKit Commit: 0b4b1f7fa771ca1c4f8b55f0dbe9b15d6034e641 https://github.com/WebKit/WebKit/commit/0b4b1f7fa771ca1c4f8b55f0dbe9b15d6034e641 Author: Joshua Hoffman Date: 2023-12-11 (Mon, 11 Dec 2023) Changed paths: M metadata/contributors.json Log Message: --- AX: Update hoffmanjoshua committer status https://bugs.webkit.org/show_bug.cgi?id=266270 rdar://119534277 Reviewed by Tyler Wilcock. Update Josh Hoffman's (hoffmanjoshua) status to committer. * metadata/contributors.json: Canonical link: https://commits.webkit.org/271914@main ___ webkit-changes mailing list webkit-changes@lists.webkit.org https://lists.webkit.org/mailman/listinfo/webkit-changes
[webkit-changes] [WebKit/WebKit] d39e84: AX: De-duplicate node changes
Branch: refs/heads/main Home: https://github.com/WebKit/WebKit Commit: d39e84f7bea75d5494ef9929e78d32b93f1ddb72 https://github.com/WebKit/WebKit/commit/d39e84f7bea75d5494ef9929e78d32b93f1ddb72 Author: Joshua Hoffman Date: 2023-12-11 (Mon, 11 Dec 2023) Changed paths: M Source/WebCore/accessibility/AXObjectCache.cpp M Source/WebCore/accessibility/AXObjectCache.h M Source/WebCore/accessibility/isolatedtree/AXIsolatedTree.cpp M Source/WebCore/accessibility/isolatedtree/AXIsolatedTree.h M Source/WebCore/accessibility/mac/AXObjectCacheMac.mm Log Message: --- AX: De-duplicate node changes https://bugs.webkit.org/show_bug.cgi?id=265702 rdar://problem/119052949 Reviewed by Andres Gonzalez. By nature of deferring some node changes while handling others eagerly, we end up doing duplicate work. For example, we may queue up both a property change and a node change for the same node, which results in unnecessary work. To resolve this, this patch creates a new route for all queued node changes to go through, AXIsolatedTree::queueNodeUpdate, and a new place to process those queued changes, AXIsolatedTree::processQueuedNodeUpdates. Inside this mechanism, we queue up three types of node changes (in three sets/arrays): (1) Node changes (2) Children changes (3) Property changes When we are queuing nodes, we add property updates only for nodes that aren't already queued for a node change. When processing queued updates, for children and property changes, we prevent duplicates by checking if a node is already present in m_unresolvedPendingAppends. We process these queued changes in two cases: (1) After a timer that fires 100ms after a node change has been queued up. (2) Before we post a platform notification. This patch does *not* include the work to defer updateChildren. That work will come in a follow up patch. * Source/WebCore/accessibility/AXObjectCache.cpp: (WebCore::AXObjectCache::AXObjectCache): (WebCore::AXObjectCache::~AXObjectCache): (WebCore::AXObjectCache::updateIsolatedTree): (WebCore::AXObjectCache::updateIsolatedTree const): (WebCore::AXObjectCache::startUpdateTreeSnapshotTimer): (WebCore::AXObjectCache::updateTreeSnapshotTimerFired): (WebCore::AXObjectCache::processQueuedIsolatedNodeUpdates): * Source/WebCore/accessibility/AXObjectCache.h: * Source/WebCore/accessibility/isolatedtree/AXIsolatedTree.cpp: (WebCore::AXIsolatedTree::updatePropertiesForSelfAndDescendants): (WebCore::AXIsolatedTree::updateNodeProperties): (WebCore::AXIsolatedTree::updateNodeAndDependentProperties): (WebCore::AXIsolatedTree::labelCreated): (WebCore::AXIsolatedTree::queueNodeUpdate): (WebCore::AXIsolatedTree::processQueuedNodeUpdates): * Source/WebCore/accessibility/isolatedtree/AXIsolatedTree.h: (WebCore::NodeUpdateOptions::NodeUpdateOptions): (WebCore::NodeUpdateOptions::nodeUpdate): (WebCore::NodeUpdateOptions::childrenUpdate): * Source/WebCore/accessibility/mac/AXObjectCacheMac.mm: (WebCore::AXObjectCache::postPlatformNotification): (WebCore::AXObjectCache::postPlatformAnnouncementNotification): (WebCore::AXObjectCache::postTextStateChangePlatformNotification): (WebCore::AXObjectCache::postTextReplacementPlatformNotification): (WebCore::AXObjectCache::postTextReplacementPlatformNotificationForTextControl): Canonical link: https://commits.webkit.org/271907@main ___ webkit-changes mailing list webkit-changes@lists.webkit.org https://lists.webkit.org/mailman/listinfo/webkit-changes
[webkit-changes] [WebKit/WebKit] a61b53: AX: Roll back a retracted ARIA change: default ari...
Branch: refs/heads/main Home: https://github.com/WebKit/WebKit Commit: a61b5328717137fe8cae16b24355504c75326a00 https://github.com/WebKit/WebKit/commit/a61b5328717137fe8cae16b24355504c75326a00 Author: Joshua Hoffman Date: 2023-12-04 (Mon, 04 Dec 2023) Changed paths: M LayoutTests/accessibility/gtk/xml-roles-exposed-expected.txt M LayoutTests/accessibility/heading-level-expected.txt M LayoutTests/accessibility/heading-level.html M LayoutTests/accessibility/ios-simulator/heading-text-updates-expected.txt M LayoutTests/accessibility/mac/heading-text-updates-expected.txt M LayoutTests/inspector/dom/getAccessibilityPropertiesForNode-expected.txt M LayoutTests/platform/gtk/accessibility/gtk/xml-roles-exposed-expected.txt M LayoutTests/platform/gtk/inspector/dom/getAccessibilityPropertiesForNode-expected.txt M Source/WebCore/accessibility/AccessibilityNodeObject.cpp Log Message: --- AX: Roll back a retracted ARIA change: default aria-level for heading role should not randomly be 2. https://bugs.webkit.org/show_bug.cgi?id=265713 rdar://119059172 Reviewed by Chris Fleizach. This patch rolls back a change that made the default aria-level for headings = 2. This default value was removed in ARIA 1.2 https://www.w3.org/TR/wai-aria-1.2/#heading. The expectation for mac/heading-text-updates.html was also updated as a result of this revert. * LayoutTests/accessibility/gtk/xml-roles-exposed-expected.txt: * LayoutTests/accessibility/heading-level-expected.txt: * LayoutTests/accessibility/heading-level.html: * LayoutTests/accessibility/ios-simulator/heading-text-updates-expected.txt: * LayoutTests/accessibility/mac/heading-text-updates-expected.txt: * LayoutTests/inspector/dom/getAccessibilityPropertiesForNode-expected.txt: * LayoutTests/platform/gtk/accessibility/gtk/xml-roles-exposed-expected.txt: * LayoutTests/platform/gtk/inspector/dom/getAccessibilityPropertiesForNode-expected.txt: * Source/WebCore/accessibility/AccessibilityNodeObject.cpp: (WebCore::AccessibilityNodeObject::headingLevel const): Canonical link: https://commits.webkit.org/271497@main ___ webkit-changes mailing list webkit-changes@lists.webkit.org https://lists.webkit.org/mailman/listinfo/webkit-changes
[webkit-changes] [WebKit/WebKit] 5965a5: AX: TextInputMarkedTextMarkerRange should be cache...
Branch: refs/heads/main Home: https://github.com/WebKit/WebKit Commit: 5965a5a92e802141a8ec48b1a83c9bb88069f1e1 https://github.com/WebKit/WebKit/commit/5965a5a92e802141a8ec48b1a83c9bb88069f1e1 Author: Joshua Hoffman Date: 2023-11-28 (Tue, 28 Nov 2023) Changed paths: M LayoutTests/accessibility/mac/text-input-marked-range-expected.txt M LayoutTests/accessibility/mac/text-input-marked-range.html M LayoutTests/accessibility/mac/text-input-marked-text-marker-range-expected.txt M LayoutTests/accessibility/mac/text-input-marked-text-marker-range.html M Source/WebCore/accessibility/isolatedtree/AXIsolatedObject.cpp Log Message: --- AX: TextInputMarkedTextMarkerRange should be cached during initialization https://bugs.webkit.org/show_bug.cgi?id=265434 rdar://problem/118866640 Reviewed by Tyler Wilcock. When isolated objects are created for text controls, we do not cache the initial TextInputMarkedTextMarkerRange value. This becomes an issue when an object is initialized while there is already marked text. In that case, not caching that value initially will return a null text marker range, which is incorrect. This patch caches that value when initializing the object, as well as updates related tests to (1) verify this behavior and (2) retrieve that range asynchronously. * LayoutTests/accessibility/mac/text-input-marked-range-expected.txt: * LayoutTests/accessibility/mac/text-input-marked-range.html: * LayoutTests/accessibility/mac/text-input-marked-text-marker-range-expected.txt: * LayoutTests/accessibility/mac/text-input-marked-text-marker-range.html: * Source/WebCore/accessibility/isolatedtree/AXIsolatedObject.cpp: (WebCore::AXIsolatedObject::initializeProperties): Canonical link: https://commits.webkit.org/271251@main ___ webkit-changes mailing list webkit-changes@lists.webkit.org https://lists.webkit.org/mailman/listinfo/webkit-changes
[webkit-changes] [WebKit/WebKit] 1cf46f: AX: Cache AccessibilityText eagerly
Branch: refs/heads/main Home: https://github.com/WebKit/WebKit Commit: 1cf46fbe9b7ba69427e34638f12ff1489dace7ce https://github.com/WebKit/WebKit/commit/1cf46fbe9b7ba69427e34638f12ff1489dace7ce Author: Joshua Hoffman Date: 2023-11-27 (Mon, 27 Nov 2023) Changed paths: M Source/WebCore/accessibility/isolatedtree/AXIsolatedObject.cpp Log Message: --- AX: Cache AccessibilityText eagerly https://bugs.webkit.org/show_bug.cgi?id=265056 rdar://118574320 Reviewed by Chris Fleizach. We cache accessibilityText lazily at present. This patch eagerly caches that value on the AX thread, preventing main thread hits. * Source/WebCore/accessibility/isolatedtree/AXIsolatedObject.cpp: (WebCore::AXIsolatedObject::initializeProperties): (WebCore::AXIsolatedObject::accessibilityText const): Canonical link: https://commits.webkit.org/271161@main ___ webkit-changes mailing list webkit-changes@lists.webkit.org https://lists.webkit.org/mailman/listinfo/webkit-changes
[webkit-changes] [WebKit/WebKit] ef43e4: accAX: Cache accessibilityText to serve Title, Des...
Branch: refs/heads/main Home: https://github.com/WebKit/WebKit Commit: ef43e42c5970c6e8ee6423edf077d79829b00867 https://github.com/WebKit/WebKit/commit/ef43e42c5970c6e8ee6423edf077d79829b00867 Author: Joshua Hoffman Date: 2023-11-16 (Thu, 16 Nov 2023) Changed paths: M Source/WebCore/accessibility/AXCoreObject.cpp M Source/WebCore/accessibility/AXCoreObject.h M Source/WebCore/accessibility/AccessibilityNodeObject.cpp M Source/WebCore/accessibility/AccessibilityObject.h M Source/WebCore/accessibility/cocoa/AccessibilityObjectCocoa.mm M Source/WebCore/accessibility/isolatedtree/AXIsolatedObject.cpp M Source/WebCore/accessibility/isolatedtree/AXIsolatedObject.h M Source/WebCore/accessibility/isolatedtree/AXIsolatedTree.h M Source/WebCore/accessibility/isolatedtree/mac/AXIsolatedObjectMac.mm Log Message: --- accAX: Cache accessibilityText to serve Title, Description, Help Text attributes off of the main thread https://bugs.webkit.org/show_bug.cgi?id=264642 rdar://118255218 Reviewed by Tyler Wilcock. When the title, description, or help text attributes are requested for an AX element for the first time, they are currently served on the main thread. To reduce this main thread dependency, this patch lazily caches accessibilityText instead of the three attributes individually. Caching accessibilityText allows us to compute the values for title, description, and help text on the AX thread. This also allows us to move the implementations for these methods to AXCoreObject, so that they can be shared between the live and isolated trees. We also benefit from caching AccessibilityText by eliminating the redundant work within title, description, and help text separately. Our old implementation of titleAttributeValue used textUnderElement() for calculating the title of summary elements. We do not cache this, so instead, the implementation of visibleText was modified to expose summary's visible text. * Source/WebCore/accessibility/AXCoreObject.cpp: (WebCore::isVisibleText): (WebCore::isDescriptiveText): (WebCore::AXCoreObject::descriptionAttributeValue const): (WebCore::AXCoreObject::titleAttributeValue const): (WebCore::AXCoreObject::helpTextAttributeValue const): * Source/WebCore/accessibility/AXCoreObject.h: (WebCore::AccessibilityText::AccessibilityText): * Source/WebCore/accessibility/AccessibilityNodeObject.cpp: (WebCore::AccessibilityNodeObject::visibleText const): * Source/WebCore/accessibility/AccessibilityObject.h: (WebCore::AccessibilityText::AccessibilityText): Deleted. * Source/WebCore/accessibility/cocoa/AccessibilityObjectCocoa.mm: (WebCore::isVisibleText): Deleted. (WebCore::isDescriptiveText): Deleted. (WebCore::AccessibilityObject::descriptionAttributeValue const): Deleted. (WebCore::AccessibilityObject::titleAttributeValue const): Deleted. (WebCore::AccessibilityObject::helpTextAttributeValue const): Deleted. * Source/WebCore/accessibility/isolatedtree/AXIsolatedObject.cpp: (WebCore::AXIsolatedObject::initializeProperties): (WebCore::AXIsolatedObject::fileUploadButtonReturnsValueInTitle const): (WebCore::AXIsolatedObject::getOrRetrievePropertyValue): * Source/WebCore/accessibility/isolatedtree/AXIsolatedObject.h: * Source/WebCore/accessibility/isolatedtree/AXIsolatedTree.h: * Source/WebCore/accessibility/isolatedtree/mac/AXIsolatedObjectMac.mm: (WebCore::AXIsolatedObject::descriptionAttributeValue const): Deleted. (WebCore::AXIsolatedObject::helpTextAttributeValue const): Deleted. (WebCore::AXIsolatedObject::titleAttributeValue const): Deleted. Canonical link: https://commits.webkit.org/270860@main ___ webkit-changes mailing list webkit-changes@lists.webkit.org https://lists.webkit.org/mailman/listinfo/webkit-changes
[webkit-changes] [WebKit/WebKit] d084df: AX: Move isMatchingPlugin off of the main thread
Branch: refs/heads/main Home: https://github.com/WebKit/WebKit Commit: d084dfdc80b668ae9b7ae5c185e1f74fd6cfe52e https://github.com/WebKit/WebKit/commit/d084dfdc80b668ae9b7ae5c185e1f74fd6cfe52e Author: Joshua Hoffman Date: 2023-11-15 (Wed, 15 Nov 2023) Changed paths: A LayoutTests/accessibility/mac/widget-visibility-expected.txt A LayoutTests/accessibility/mac/widget-visibility.html M LayoutTests/platform/mac-wk1/TestExpectations M Source/WebCore/accessibility/AXCoreObject.h M Source/WebCore/accessibility/AXLogger.cpp M Source/WebCore/accessibility/AXObjectCache.cpp M Source/WebCore/accessibility/AXObjectCache.h M Source/WebCore/accessibility/AccessibilityObject.h M Source/WebCore/accessibility/AccessibilityRenderObject.h M Source/WebCore/accessibility/isolatedtree/AXIsolatedObject.cpp M Source/WebCore/accessibility/isolatedtree/AXIsolatedObject.h M Source/WebCore/accessibility/isolatedtree/AXIsolatedTree.cpp M Source/WebCore/accessibility/isolatedtree/AXIsolatedTree.h M Source/WebCore/accessibility/mac/WebAccessibilityObjectWrapperMac.mm M Source/WebCore/rendering/RenderWidget.cpp Log Message: --- AX: Move isMatchingPlugin off of the main thread https://bugs.webkit.org/show_bug.cgi?id=264262 rdar://problem/118001876 Reviewed by Tyler Wilcock. The attribute isMatchingPlugin currently hits the main thread every time it is requested, so in our efforts to move all properties to the AX thread, we need to address this case. To calculate this on the AX thread, this patch caches a new property: isPlugin. We also update the cached property of IsVisible via the AXObject cache as necessary. The added test confirms that the cached value for isVisible is updated when the widget is shown or hidden as the style of the embed element changes. * LayoutTests/accessibility/mac/widget-visibility-expected.txt: Added. * LayoutTests/accessibility/mac/widget-visibility.html: Added. * LayoutTests/platform/mac-wk1/TestExpectations: * Source/WebCore/accessibility/AXCoreObject.h: * Source/WebCore/accessibility/AXLogger.cpp: (WebCore::operator<<): * Source/WebCore/accessibility/AXObjectCache.cpp: (WebCore::AXObjectCache::updateIsolatedTree): (WebCore::AXObjectCache::onWidgetVisibilityChanged): * Source/WebCore/accessibility/AXObjectCache.h: (WebCore::AXObjectCache::onWidgetVisibilityChanged): * Source/WebCore/accessibility/AccessibilityObject.h: * Source/WebCore/accessibility/AccessibilityRenderObject.h: * Source/WebCore/accessibility/isolatedtree/AXIsolatedObject.cpp: (WebCore::AXIsolatedObject::initializeProperties): * Source/WebCore/accessibility/isolatedtree/AXIsolatedObject.h: * Source/WebCore/accessibility/isolatedtree/AXIsolatedTree.cpp: (WebCore::AXIsolatedTree::updateNodeProperties): * Source/WebCore/accessibility/isolatedtree/AXIsolatedTree.h: * Source/WebCore/accessibility/mac/WebAccessibilityObjectWrapperMac.mm: (isMatchingPlugin): (-[WebAccessibilityObjectWrapper accessibilityAttributeValue:forParameter:]): * Source/WebCore/rendering/RenderWidget.cpp: (WebCore::RenderWidget::setWidget): (WebCore::RenderWidget::styleDidChange): Canonical link: https://commits.webkit.org/270785@main ___ webkit-changes mailing list webkit-changes@lists.webkit.org https://lists.webkit.org/mailman/listinfo/webkit-changes
[webkit-changes] [WebKit/WebKit] ecb40f: AX: VoiceOver does not announce button in text if ...
Branch: refs/heads/main Home: https://github.com/WebKit/WebKit Commit: ecb40fdcddf864c54b8bd70b37a8713241e9b846 https://github.com/WebKit/WebKit/commit/ecb40fdcddf864c54b8bd70b37a8713241e9b846 Author: Joshua Hoffman Date: 2023-11-10 (Fri, 10 Nov 2023) Changed paths: A LayoutTests/accessibility/custom-elements/shadow-element-text-expected.txt A LayoutTests/accessibility/custom-elements/shadow-element-text.html A LayoutTests/platform/glib/accessibility/custom-elements/shadow-element-text-expected.txt M Source/WebCore/accessibility/AccessibilityNodeObject.cpp Log Message: --- AX: VoiceOver does not announce button in text if button is in shadow root https://bugs.webkit.org/show_bug.cgi?id=264410 rdar://118118138 Reviewed by Tyler Wilcock. In shadow DOM elements, if text was within nested elements, textUnderElement would not include it. This patch resolves that by adding to our logic for when we decide whether or not to skip a child's text. Instead of just checking whether the child's parent and the current node match, we also check that the elements are either both in the DOM or Shadow DOM. * LayoutTests/accessibility/custom-elements/shadow-element-text-expected.txt: Added. * LayoutTests/accessibility/custom-elements/shadow-element-text.html: Added. * LayoutTests/platform/glib/accessibility/custom-elements/shadow-element-text-expected.txt: Added. * Source/WebCore/accessibility/AccessibilityNodeObject.cpp: (WebCore::AccessibilityNodeObject::textUnderElement const): Canonical link: https://commits.webkit.org/270542@main ___ webkit-changes mailing list webkit-changes@lists.webkit.org https://lists.webkit.org/mailman/listinfo/webkit-changes
[webkit-changes] [WebKit/WebKit] ae0dcb: y nAX: Move selectedTextRange off of the main-thread
Branch: refs/heads/main Home: https://github.com/WebKit/WebKit Commit: ae0dcb554a690c71b5b5943e4d6467f9bf40c004 https://github.com/WebKit/WebKit/commit/ae0dcb554a690c71b5b5943e4d6467f9bf40c004 Author: Joshua Hoffman Date: 2023-11-07 (Tue, 07 Nov 2023) Changed paths: M LayoutTests/accessibility/content-editable-as-textarea.html M LayoutTests/accessibility/textbox-role-reports-selection.html M Source/WebCore/accessibility/AXObjectCache.cpp M Source/WebCore/accessibility/AXObjectCache.h M Source/WebCore/accessibility/isolatedtree/AXIsolatedObject.cpp M Source/WebCore/accessibility/isolatedtree/AXIsolatedObject.h M Source/WebCore/accessibility/isolatedtree/AXIsolatedTree.cpp M Source/WebCore/accessibility/isolatedtree/AXIsolatedTree.h M Source/WebCore/accessibility/mac/AXObjectCacheMac.mm Log Message: --- y nAX: Move selectedTextRange off of the main-thread https://bugs.webkit.org/show_bug.cgi?id=263940 rdar://117568720 Reviewed by Andres Gonzalez. We currently use the main thread to get the selectedTextRange when in isolated tree mode. In the effort to completely sever ITM, this should be cached to be served on the AX thread. This patch caches that value on text input objects, and updates the property every time text selection changes. This update is debounced to account for text selection in-progress and minimize computation. * LayoutTests/accessibility/content-editable-as-textarea.html: * LayoutTests/accessibility/textbox-role-reports-selection.html: * Source/WebCore/accessibility/AXObjectCache.cpp: (WebCore::AXObjectCache::AXObjectCache): (WebCore::AXObjectCache::~AXObjectCache): (WebCore::AXObjectCache::postTextStateChangeNotification): (WebCore::AXObjectCache::updateIsolatedTree): (WebCore::AXObjectCache::selectedTextRangeTimerFired): * Source/WebCore/accessibility/AXObjectCache.h: * Source/WebCore/accessibility/isolatedtree/AXIsolatedObject.cpp: (WebCore::AXIsolatedObject::initializeProperties): (WebCore::AXIsolatedObject::selectedTextRange const): Deleted. * Source/WebCore/accessibility/isolatedtree/AXIsolatedObject.h: * Source/WebCore/accessibility/isolatedtree/AXIsolatedTree.cpp: (WebCore::AXIsolatedTree::updateNodeProperties): * Source/WebCore/accessibility/isolatedtree/AXIsolatedTree.h: * Source/WebCore/accessibility/mac/AXObjectCacheMac.mm: (WebCore::AXObjectCache::platformSelectedTextRangeDebounceInterval const): Canonical link: https://commits.webkit.org/270340@main ___ webkit-changes mailing list webkit-changes@lists.webkit.org https://lists.webkit.org/mailman/listinfo/webkit-changes
[webkit-changes] [WebKit/WebKit] bb55be: Expose element role as AXDisclosureTrian...
Branch: refs/heads/main Home: https://github.com/WebKit/WebKit Commit: bb55be859f7793e25dc9bcc330b0ca32de28bfbe https://github.com/WebKit/WebKit/commit/bb55be859f7793e25dc9bcc330b0ca32de28bfbe Author: Joshua Hoffman Date: 2023-11-04 (Sat, 04 Nov 2023) Changed paths: M LayoutTests/accessibility/display-contents/element-roles-expected.txt M LayoutTests/accessibility/mac/details-summary-expected.txt M LayoutTests/accessibility/mac/details-summary-role-description-expected.txt M LayoutTests/accessibility/mac/details-summary-role-description.html M LayoutTests/accessibility/mac/details-summary.html M LayoutTests/accessibility/mac/search-predicate-summary-expected.txt M LayoutTests/platform/mac-wk1/accessibility/aria-visible-element-roles-expected.txt M LayoutTests/platform/mac-wk2/accessibility/aria-visible-element-roles-expected.txt M Source/WebCore/accessibility/AXCoreObject.cpp M Source/WebCore/accessibility/mac/AccessibilityObjectMac.mm Log Message: --- Expose element role as AXDisclosureTriangle to match AX API https://bugs.webkit.org/show_bug.cgi?id=108979 rdar://13661104 Reviewed by Chris Fleizach. We had been exposing with an AXButton role in the past, but it should have an AXDisclosureTriangle role to be aligned with the Accessibility API Mappings: https://www.w3.org/TR/html-aam-1.0/#el-summary * LayoutTests/accessibility/display-contents/element-roles-expected.txt: * LayoutTests/accessibility/mac/details-summary-expected.txt: * LayoutTests/accessibility/mac/details-summary-role-description-expected.txt: * LayoutTests/accessibility/mac/details-summary-role-description.html: * LayoutTests/accessibility/mac/details-summary.html: * LayoutTests/accessibility/mac/search-predicate-summary-expected.txt: * LayoutTests/platform/mac-wk1/accessibility/aria-visible-element-roles-expected.txt: * LayoutTests/platform/mac-wk2/accessibility/aria-visible-element-roles-expected.txt: * Source/WebCore/accessibility/AXCoreObject.cpp: (WebCore::AXCoreObject::value): * Source/WebCore/accessibility/mac/AccessibilityObjectMac.mm: (WebCore::Accessibility::createPlatformRoleMap): Canonical link: https://commits.webkit.org/270231@main ___ webkit-changes mailing list webkit-changes@lists.webkit.org https://lists.webkit.org/mailman/listinfo/webkit-changes
[webkit-changes] [WebKit/WebKit] 3e8a39: AX: Fix thread safety issue in AXIsolatedTree::set...
Branch: refs/heads/main Home: https://github.com/WebKit/WebKit Commit: 3e8a39cebd79433c45e1c4878fd017cd39545479 https://github.com/WebKit/WebKit/commit/3e8a39cebd79433c45e1c4878fd017cd39545479 Author: Joshua Hoffman Date: 2023-11-02 (Thu, 02 Nov 2023) Changed paths: M Source/WebCore/accessibility/isolatedtree/AXIsolatedTree.cpp M Source/WebCore/accessibility/isolatedtree/AXIsolatedTree.h Log Message: --- AX: Fix thread safety issue in AXIsolatedTree::setSelectedTextMarkerRange https://bugs.webkit.org/show_bug.cgi?id=264045 rdar://117803232 Reviewed by Andres Gonzalez. We need to hold a lock when modifying m_selectedTextMarkerRange since it is accessed on both the main and AX thread. * Source/WebCore/accessibility/isolatedtree/AXIsolatedTree.cpp: (WebCore::AXIsolatedTree::selectedTextMarkerRange): (WebCore::AXIsolatedTree::setSelectedTextMarkerRange): * Source/WebCore/accessibility/isolatedtree/AXIsolatedTree.h: (WebCore::AXIsolatedTree::selectedTextMarkerRange): Deleted. (WebCore::AXIsolatedTree::setSelectedTextMarkerRange): Deleted. Canonical link: https://commits.webkit.org/270134@main ___ webkit-changes mailing list webkit-changes@lists.webkit.org https://lists.webkit.org/mailman/listinfo/webkit-changes
[webkit-changes] [WebKit/WebKit] aa6898: AX: Extremely long textareas/contenteditable field...
Branch: refs/heads/main Home: https://github.com/WebKit/WebKit Commit: aa6898f2464d872d4e8e64c01b046f8fd04390c0 https://github.com/WebKit/WebKit/commit/aa6898f2464d872d4e8e64c01b046f8fd04390c0 Author: Joshua Hoffman Date: 2023-11-01 (Wed, 01 Nov 2023) Changed paths: A LayoutTests/accessibility/mac/large-text-area-expected.txt A LayoutTests/accessibility/mac/large-text-area.html A LayoutTests/accessibility/mac/spellcheck-with-voiceover-expected.txt A LayoutTests/accessibility/mac/spellcheck-with-voiceover.html M LayoutTests/platform/mac-wk1/TestExpectations M Source/WebCore/accessibility/isolatedtree/mac/AXIsolatedObjectMac.mm M Source/WebCore/accessibility/mac/AXObjectCacheMac.mm M Source/WebCore/editing/Editor.cpp M Source/WebCore/editing/TextCheckingHelper.cpp M Source/WebCore/editing/TextCheckingHelper.h M Tools/WebKitTestRunner/InjectedBundle/AccessibilityController.h M Tools/WebKitTestRunner/InjectedBundle/Bindings/AccessibilityController.idl M Tools/WebKitTestRunner/InjectedBundle/atspi/AccessibilityControllerAtspi.cpp M Tools/WebKitTestRunner/InjectedBundle/ios/AccessibilityControllerIOS.mm M Tools/WebKitTestRunner/InjectedBundle/mac/AccessibilityControllerMac.mm M Tools/WebKitTestRunner/InjectedBundle/win/AccessibilityControllerWin.cpp Log Message: --- AX: Extremely long textareas/contenteditable fields are slow with Voiceover https://bugs.webkit.org/show_bug.cgi?id=263303 rdar://problem/117114220 Reviewed by Tyler Wilcock. Very long textareas/contenteditable fields can be slow with AT due to two expensive operations in WebKit: (1) Spellchecking long text & drawing misspellings. (2) Caching text using rangeForCharacterRange on the isolated tree. This patch addresses those two causes by: (1) Not spellchecking on the WebKit side when Voiceover is the AX client. (2) Only caching textarea/contenteditable values with fewer than 12,500 characters. There are also two tests included in this patch. The first verifies that not caching input values greater than 12,500 does not change behavior and the second confirms that we do not spellcheck within WebKit when VoiceOver is the AX client. * LayoutTests/accessibility/mac/large-text-area-expected.txt: Added. * LayoutTests/accessibility/mac/large-text-area.html: Added. * LayoutTests/accessibility/mac/spellcheck-with-voiceover-expected.txt: Added. * LayoutTests/accessibility/mac/spellcheck-with-voiceover.html: Added. * LayoutTests/platform/mac-wk1/TestExpectations: * Source/WebCore/accessibility/isolatedtree/mac/AXIsolatedObjectMac.mm: (WebCore::AXIsolatedObject::initializePlatformProperties): * Source/WebCore/accessibility/mac/AXObjectCacheMac.mm: (WebCore::AXObjectCache::shouldSpellCheck): * Source/WebCore/editing/Editor.cpp: (WebCore::Editor::markMisspellingsAfterTypingToWord): (WebCore::Editor::markAllMisspellingsAndBadGrammarInRanges): (WebCore::Editor::markMisspellingsAndBadGrammar): * Source/WebCore/editing/TextCheckingHelper.cpp: (WebCore::TextCheckingHelper::findFirstMisspelledWordOrUngrammaticalPhrase const): (WebCore::TextCheckingHelper::guessesForMisspelledWordOrUngrammaticalPhrase const): (WebCore::platformOrClientDrivenTextCheckerEnabled): * Source/WebCore/editing/TextCheckingHelper.h: * Tools/WebKitTestRunner/InjectedBundle/AccessibilityController.h: * Tools/WebKitTestRunner/InjectedBundle/Bindings/AccessibilityController.idl: * Tools/WebKitTestRunner/InjectedBundle/atspi/AccessibilityControllerAtspi.cpp: (WTR::AccessibilityController::overrideClient): * Tools/WebKitTestRunner/InjectedBundle/ios/AccessibilityControllerIOS.mm: (WTR::AccessibilityController::overrideClient): * Tools/WebKitTestRunner/InjectedBundle/mac/AccessibilityControllerMac.mm: (WTR::AccessibilityController::overrideClient): * Tools/WebKitTestRunner/InjectedBundle/win/AccessibilityControllerWin.cpp: (WTR::AccessibilityController::overrideClient): Canonical link: https://commits.webkit.org/270066@main ___ webkit-changes mailing list webkit-changes@lists.webkit.org https://lists.webkit.org/mailman/listinfo/webkit-changes
[webkit-changes] [WebKit/WebKit] 383986: AX: Sometimes unable to see play/pause animation c...
Branch: refs/heads/main Home: https://github.com/WebKit/WebKit Commit: 38398649280b12506c8e9423f05bd6e0c3861226 https://github.com/WebKit/WebKit/commit/38398649280b12506c8e9423f05bd6e0c3861226 Author: Joshua Hoffman Date: 2023-10-27 (Fri, 27 Oct 2023) Changed paths: M Source/WebCore/page/ContextMenuController.cpp M Source/WebCore/page/Page.cpp M Source/WebCore/page/Page.h M Source/WebKit/WebProcess/WebPage/WebPage.cpp Log Message: --- AX: Sometimes unable to see play/pause animation context menu item when setting is toggled https://bugs.webkit.org/show_bug.cgi?id=263735 rdar://117215059 Reviewed by Tyler Wilcock. When deciding whether to add the "Play/Pause all animations" or "Play/Pause animation" context menu item, we had previously used a softlink to reference _AXSReduceMotionAutoplayAnimatedImagesEnabled. The issue with using this from the web content process, however, is that distributed notifications are not permitted as per the sandbox, so updates to this setting were not reaching that process. To resolve this, this patch now piggybacks onto our existing cross-process update for the animation setting using the AccessibilityPreferencesChanged notification and WebPage::updateImageAnimationEnabled. A new flag, m_systemAllowsAnimationControls, now maintains the state of this setting, and allows the Page to have an up-to-date view of the setting without relying on the softlink. * Source/WebCore/page/ContextMenuController.cpp: (WebCore::ContextMenuController::populate): * Source/WebCore/page/Page.cpp: (WebCore::Page::setSystemAllowsAnimationControls): * Source/WebCore/page/Page.h: (WebCore::Page::systemAllowsAnimationControls const): * Source/WebKit/WebProcess/WebPage/WebPage.cpp: (WebKit::WebPage::updateImageAnimationEnabled): Canonical link: https://commits.webkit.org/269878@main ___ webkit-changes mailing list webkit-changes@lists.webkit.org https://lists.webkit.org/mailman/listinfo/webkit-changes
[webkit-changes] [WebKit/WebKit] c24f05: AX: optimize accessibilityIsIgnored computation
Branch: refs/heads/main Home: https://github.com/WebKit/WebKit Commit: c24f056ed7c169e94457c1d267131a42790a29a4 https://github.com/WebKit/WebKit/commit/c24f056ed7c169e94457c1d267131a42790a29a4 Author: Joshua Hoffman Date: 2023-10-13 (Fri, 13 Oct 2023) Changed paths: M Source/WebCore/accessibility/AccessibilityNodeObject.cpp M Source/WebCore/accessibility/AccessibilityObject.cpp M Source/WebCore/accessibility/AccessibilityObject.h M Source/WebCore/accessibility/AccessibilityRenderObject.cpp Log Message: --- AX: optimize accessibilityIsIgnored computation https://bugs.webkit.org/show_bug.cgi?id=262733 rdar://problem/116541936 Reviewed by Tyler Wilcock. We currently traverse the ancestor hierarchy three times to compute each of isAXHidden, isPresentationalChildOfAriaRole, and isDescendantOfBarrenParent —all of which we gather to compute accessibility is ignored. This patch combines those ancestor traversals into one, using generateIsIgnoredFromParentData. This saves up to roughly 20% of samples for accessibilityIsIgnored across various sites. * Source/WebCore/accessibility/AccessibilityNodeObject.cpp: (WebCore::AccessibilityNodeObject::canHaveChildren const): (WebCore::AccessibilityNodeObject::computeAccessibilityIsIgnored const): * Source/WebCore/accessibility/AccessibilityObject.cpp: (WebCore::AccessibilityObject::isARIAHidden const): (WebCore::AccessibilityObject::isAXHidden const): (WebCore::AccessibilityObject::defaultObjectInclusion const): (WebCore::AccessibilityObject::setIsIgnoredFromParentDataForChild): (WebCore::AccessibilityObject::isPresentationalChildOfAriaRole const): Deleted. * Source/WebCore/accessibility/AccessibilityObject.h: (WebCore::AccessibilityObject::hasImplicitGenericRole const): * Source/WebCore/accessibility/AccessibilityRenderObject.cpp: (WebCore::AccessibilityRenderObject::computeAccessibilityIsIgnored const): Canonical link: https://commits.webkit.org/269313@main ___ webkit-changes mailing list webkit-changes@lists.webkit.org https://lists.webkit.org/mailman/listinfo/webkit-changes
[webkit-changes] [WebKit/WebKit] 7d4e7a: AX: Attribute cache is not enabled in traverseToOf...
Branch: refs/heads/main Home: https://github.com/WebKit/WebKit Commit: 7d4e7afc92b350aa310645b7704a42672b41d29a https://github.com/WebKit/WebKit/commit/7d4e7afc92b350aa310645b7704a42672b41d29a Author: Joshua Hoffman Date: 2023-10-10 (Tue, 10 Oct 2023) Changed paths: M Source/WebCore/accessibility/AXObjectCache.cpp Log Message: --- AX: Attribute cache is not enabled in traverseToOffsetInRange https://bugs.webkit.org/show_bug.cgi?id=262929 rdar://problem/116703599 Reviewed by Chris Fleizach. This patch enables the AXObjectAttributeCache in the scope of AXObjectCache::traverseToOffsetInRange. By doing this, we save unnecessary accessibilityIsIgnored calls on the main thread. * Source/WebCore/accessibility/AXObjectCache.cpp: (WebCore::AXObjectCache::traverseToOffsetInRange): Canonical link: https://commits.webkit.org/269149@main ___ webkit-changes mailing list webkit-changes@lists.webkit.org https://lists.webkit.org/mailman/listinfo/webkit-changes
[webkit-changes] [WebKit/WebKit] c6e379: AX: accessibilityIsIgnored cache is not enabled at...
Branch: refs/heads/main Home: https://github.com/WebKit/WebKit Commit: c6e3790b95dce89d1332cdf978d12608ce5626dd https://github.com/WebKit/WebKit/commit/c6e3790b95dce89d1332cdf978d12608ce5626dd Author: Joshua Hoffman Date: 2023-10-07 (Sat, 07 Oct 2023) Changed paths: M Source/WebCore/accessibility/isolatedtree/AXIsolatedTree.cpp Log Message: --- AX: accessibilityIsIgnored cache is not enabled at updateChildrenForObjects level https://bugs.webkit.org/show_bug.cgi?id=262800 rdar://problem/116589024 Reviewed by Tyler Wilcock. We utilize the AXComputedObjectAttributeCache to cache the isIgnored value of objects across certain scopes. Right now, it is enabled in the scope of AXIsolatedTree::updateChildren. This patch enables the cache in AXIsolatedTree::updateChildrenForObjects, allowing all of the appends downstream to take advantage of the caching. In testing, this can save up to 20% of samples of accessibilityIsIgnored. * Source/WebCore/accessibility/isolatedtree/AXIsolatedTree.cpp: (WebCore::AXIsolatedTree::updateChildrenForObjects): Canonical link: https://commits.webkit.org/269042@main ___ webkit-changes mailing list webkit-changes@lists.webkit.org https://lists.webkit.org/mailman/listinfo/webkit-changes
[webkit-changes] [WebKit/WebKit] a1746d: AX: Move AXSelectedTextMarkerRange off of the main...
Branch: refs/heads/main Home: https://github.com/WebKit/WebKit Commit: a1746d78059d34a48dbe6ac54f4e0487d1259772 https://github.com/WebKit/WebKit/commit/a1746d78059d34a48dbe6ac54f4e0487d1259772 Author: Joshua Hoffman Date: 2023-10-03 (Tue, 03 Oct 2023) Changed paths: M LayoutTests/accessibility/mac/doctype-node-in-text-marker-crash-expected.txt M LayoutTests/accessibility/mac/doctype-node-in-text-marker-crash.html M LayoutTests/accessibility/mac/replace-text-with-range-expected.txt M LayoutTests/accessibility/mac/replace-text-with-range-value-change-notification.html M LayoutTests/accessibility/mac/replace-text-with-range.html M LayoutTests/accessibility/mac/text-marker-p-tags-expected.txt M LayoutTests/accessibility/mac/text-marker-p-tags.html M Source/WebCore/accessibility/AXCoreObject.h M Source/WebCore/accessibility/AXObjectCache.cpp M Source/WebCore/accessibility/AXObjectCache.h M Source/WebCore/accessibility/AccessibilityObject.cpp M Source/WebCore/accessibility/AccessibilityObject.h M Source/WebCore/accessibility/isolatedtree/AXIsolatedObject.cpp M Source/WebCore/accessibility/isolatedtree/AXIsolatedObject.h M Source/WebCore/accessibility/isolatedtree/AXIsolatedTree.cpp M Source/WebCore/accessibility/isolatedtree/AXIsolatedTree.h M Source/WebCore/accessibility/mac/AXObjectCacheMac.mm M Source/WebCore/accessibility/mac/WebAccessibilityObjectWrapperMac.mm Log Message: --- AX: Move AXSelectedTextMarkerRange off of the main thread https://bugs.webkit.org/show_bug.cgi?id=262433 rdar://116128660 Reviewed by Chris Fleizach. This patch moves the AXSelectedTextMarkerRange attribute off of the main thread in isolated tree mode, by caching the relevant text marker data. When selection changes on the web, the AXObjectCache is notified through a call to postTextStateChangeNotification from FrameSelection::notifyAccessibilityForSelectionChange. >From there, a new method, onSelectedTextChanged, handles updating the isolated >tree's m_selectedTextMarkerRange with the relevant text markers for the start and end of the selection. These are stored in a pair of TextMarkerData structs. An important piece of this is that we need the nodes of the start and end text markers to exist in the isolated tree. So, if one or both of these nodes are ignored, they are added to the isolated tree as unconnected nodes. This is handled in onSelectedTextChanged. Finally, when the range is requested via AXIsolatedObject::selectedTextMarkerRange(), an AXTextMarkerRange is constructed from the cached TextMarkerData pair. This patch also modifies previous tests to make them asynchronous for this new behavior. * LayoutTests/accessibility/mac/doctype-node-in-text-marker-crash-expected.txt: * LayoutTests/accessibility/mac/doctype-node-in-text-marker-crash.html: * LayoutTests/accessibility/mac/replace-text-with-range-expected.txt: * LayoutTests/accessibility/mac/replace-text-with-range-value-change-notification.html: * LayoutTests/accessibility/mac/replace-text-with-range.html: * LayoutTests/accessibility/mac/text-marker-p-tags-expected.txt: * LayoutTests/accessibility/mac/text-marker-p-tags.html: * Source/WebCore/accessibility/AXCoreObject.h: * Source/WebCore/accessibility/AXObjectCache.cpp: (WebCore::AXObjectCache::postTextStateChangeNotification): * Source/WebCore/accessibility/AXObjectCache.h: * Source/WebCore/accessibility/AccessibilityObject.cpp: (WebCore::AccessibilityObject::selectedTextMarkerRange): * Source/WebCore/accessibility/AccessibilityObject.h: (WebCore::AccessibilityObject::selectedVisiblePositionRange const): * Source/WebCore/accessibility/isolatedtree/AXIsolatedObject.cpp: (WebCore::AXIsolatedObject::selectedTextMarkerRange): (WebCore::AXIsolatedObject::selectedVisiblePositionRange const): Deleted. * Source/WebCore/accessibility/isolatedtree/AXIsolatedObject.h: * Source/WebCore/accessibility/isolatedtree/AXIsolatedTree.cpp: * Source/WebCore/accessibility/isolatedtree/AXIsolatedTree.h: (WebCore::AXIsolatedTree::selectedTextMarkerRange): (WebCore::AXIsolatedTree::setSelectedTextMarkerRange): * Source/WebCore/accessibility/mac/AXObjectCacheMac.mm: (WebCore::AXObjectCache::onSelectedTextChanged): * Source/WebCore/accessibility/mac/WebAccessibilityObjectWrapperMac.mm: (-[WebAccessibilityObjectWrapper selectedTextMarkerRange]): Canonical link: https://commits.webkit.org/268821@main ___ webkit-changes mailing list webkit-changes@lists.webkit.org https://lists.webkit.org/mailman/listinfo/webkit-changes
[webkit-changes] [WebKit/WebKit] 52cc65: AX: properties using getOrRetrievePropertyValue ar...
Branch: refs/heads/main Home: https://github.com/WebKit/WebKit Commit: 52cc65198e6415eebeb901a8317d897560e59abb https://github.com/WebKit/WebKit/commit/52cc65198e6415eebeb901a8317d897560e59abb Author: Joshua Hoffman Date: 2023-09-28 (Thu, 28 Sep 2023) Changed paths: M Source/WebCore/accessibility/isolatedtree/AXIsolatedObject.cpp Log Message: --- AX: properties using getOrRetrievePropertyValue are not stored in sparse property map when empty https://bugs.webkit.org/show_bug.cgi?id=262195 rdar://problem/116126895 Reviewed by Tyler Wilcock. In https://bugs.webkit.org/show_bug.cgi?id=261968 (AX: AXIsolatedObject::m_propertyMap is not sparse), all attributes that have a value that is the default for its type are not stored in the property map. However, for properties that hit the main thread in getOrRetrievePropertyValue, this change means that we will not cache empty values, and could access the main thread more frequently as a result of a missing cache entry. This patch resolves this by always caching the value for properties retrieved in that method, regardless of their value. * Source/WebCore/accessibility/isolatedtree/AXIsolatedObject.cpp: (WebCore::AXIsolatedObject::initializeProperties): (WebCore::AXIsolatedObject::getOrRetrievePropertyValue): Canonical link: https://commits.webkit.org/268593@main ___ webkit-changes mailing list webkit-changes@lists.webkit.org https://lists.webkit.org/mailman/listinfo/webkit-changes
[webkit-changes] [WebKit/WebKit] 8a06d3: AX: AXIsolatedObject::m_propertyMap is not sparse
Branch: refs/heads/main Home: https://github.com/WebKit/WebKit Commit: 8a06d352a4ab1206a339458a225a90a5927564f9 https://github.com/WebKit/WebKit/commit/8a06d352a4ab1206a339458a225a90a5927564f9 Author: Joshua Hoffman Date: 2023-09-26 (Tue, 26 Sep 2023) Changed paths: M Source/WebCore/accessibility/isolatedtree/AXIsolatedObject.cpp M Source/WebCore/accessibility/isolatedtree/AXIsolatedObject.h M Source/WebCore/accessibility/isolatedtree/AXIsolatedTree.h Log Message: --- AX: AXIsolatedObject::m_propertyMap is not sparse https://bugs.webkit.org/show_bug.cgi?id=261968 rdar://115907545 Reviewed by Andres Gonzalez. This patch makes the AXIsolatedObject::m_propertyMap, where AXIsolatedObject properties are cached, sparse. This is accomplished through conditionally adding properties to the map, based on whether their values are the default for their given type. If a value is the default, we don't add it to the map (or if it changes to be the default, we remove it). Our existing logic handles these cases by returning the type's default value when it does not exist in the property map. The initial size allocation for the propertyMap was brought down to 22 from 92 after running this change on several sites and finding the minimum number of properties stored. With this patch applied, on average it reduces the memory footprint of the web process (with AX enabled) by ~33%. This analysis was performed using VoiceOver on an academic journal page. * Source/WebCore/accessibility/isolatedtree/AXIsolatedObject.cpp: (WebCore::AXIsolatedObject::AXIsolatedObject): (WebCore::AXIsolatedObject::setProperty): (WebCore::AXIsolatedObject::indexRangePairAttributeValue const): (WebCore::AXIsolatedObject::pairAttributeValue const): Deleted. * Source/WebCore/accessibility/isolatedtree/AXIsolatedObject.h: * Source/WebCore/accessibility/isolatedtree/AXIsolatedTree.h: Canonical link: https://commits.webkit.org/268449@main ___ webkit-changes mailing list webkit-changes@lists.webkit.org https://lists.webkit.org/mailman/listinfo/webkit-changes
[webkit-changes] [WebKit/WebKit] ad8070: AX: columnHeaders() and rowHeaders() are performed...
Branch: refs/heads/main Home: https://github.com/WebKit/WebKit Commit: ad80707652bd43810f5b3b67c314d0818d195a53 https://github.com/WebKit/WebKit/commit/ad80707652bd43810f5b3b67c314d0818d195a53 Author: Joshua Hoffman Date: 2023-09-22 (Fri, 22 Sep 2023) Changed paths: A LayoutTests/accessibility/column-header-scope-expected.txt A LayoutTests/accessibility/column-header-scope.html A LayoutTests/accessibility/table-headers-changing-expected.txt A LayoutTests/accessibility/table-headers-changing.html M Source/WebCore/accessibility/AXCoreObject.cpp M Source/WebCore/accessibility/AXCoreObject.h M Source/WebCore/accessibility/AXLogger.cpp M Source/WebCore/accessibility/AXObjectCache.cpp M Source/WebCore/accessibility/AXObjectCache.h M Source/WebCore/accessibility/AccessibilityARIAGridRow.cpp M Source/WebCore/accessibility/AccessibilityARIAGridRow.h M Source/WebCore/accessibility/AccessibilityObject.h M Source/WebCore/accessibility/AccessibilityTable.cpp M Source/WebCore/accessibility/AccessibilityTableCell.cpp M Source/WebCore/accessibility/AccessibilityTableCell.h M Source/WebCore/accessibility/AccessibilityTableRow.cpp M Source/WebCore/accessibility/AccessibilityTableRow.h M Source/WebCore/accessibility/isolatedtree/AXIsolatedObject.cpp M Source/WebCore/accessibility/isolatedtree/AXIsolatedObject.h M Source/WebCore/accessibility/isolatedtree/AXIsolatedTree.cpp M Source/WebCore/accessibility/isolatedtree/AXIsolatedTree.h Log Message: --- AX: columnHeaders() and rowHeaders() are performed on the main thread in ITM https://bugs.webkit.org/show_bug.cgi?id=261680 rdar://115661951 Reviewed by Andres Gonzalez. This patch uses a combination of caching attributes and sharing code to allow the calculation for rowHeaders() and columnHeaders() to be performed on the secondary AX thread. Previously, we had to jump to the main thread each time these attributes were requested, which can show up significantly on samples of pages that have very dynamic tables. Calculating these values is now accomplished through five newly cached attributes in AXIsolatedObjects: Scope, IsColumnHeaderCell, IsRowHeaderCell, HeaderObject, and RowGroupAncestorID. By caching these attributes, we are able to calculate the row and column headers for a table or cell within the isolated object. Thus, we are able to remove the row- and column-header properties from AXIsolatedObject::getOrRetrievePropertyValue. The methods isTableCellInSameRowGroup and isTableCellInSameColGroup, which were originally part of the AccessibilityTableCell class, were moved to AXCoreObject so that this code could be shared between the live and isolated objects. Two new tests have been added to make sure that these cached values work as expected, and to check that we update the scope properly when it changes. * LayoutTests/accessibility/column-header-scope-expected.txt: Added. * LayoutTests/accessibility/column-header-scope.html: Added. * LayoutTests/accessibility/table-headers-changing-expected.txt: Added. * LayoutTests/accessibility/table-headers-changing.html: Added. * Source/WebCore/accessibility/AXCoreObject.cpp: (WebCore::AXCoreObject::isTableCellInSameRowGroup): (WebCore::AXCoreObject::isTableCellInSameColGroup): * Source/WebCore/accessibility/AXCoreObject.h: (WebCore::AXCoreObject::isColumnHeader const): (WebCore::AXCoreObject::isRowHeader const): (WebCore::AXCoreObject::rowGroupAncestorID const): (WebCore::AXCoreObject::cellScope const): (WebCore::AXCoreObject::rowHeader): * Source/WebCore/accessibility/AXLogger.cpp: (WebCore::operator<<): * Source/WebCore/accessibility/AXObjectCache.cpp: (WebCore::AXObjectCache::handleAttributeChange): (WebCore::AXObjectCache::updateIsolatedTree): * Source/WebCore/accessibility/AXObjectCache.h: * Source/WebCore/accessibility/AccessibilityARIAGridRow.cpp: (WebCore::AccessibilityARIAGridRow::rowHeader): (WebCore::AccessibilityARIAGridRow::headerObject): Deleted. * Source/WebCore/accessibility/AccessibilityARIAGridRow.h: * Source/WebCore/accessibility/AccessibilityObject.h: (WebCore::AccessibilityObject::isColumnHeaderCell const): Deleted. (WebCore::AccessibilityObject::isRowHeaderCell const): Deleted. * Source/WebCore/accessibility/AccessibilityTable.cpp: (WebCore::AccessibilityTable::rowHeaders): * Source/WebCore/accessibility/AccessibilityTableCell.cpp: (WebCore::AccessibilityTableCell::determineAccessibilityRole): (WebCore::AccessibilityTableCell::isColumnHeader const): (WebCore::AccessibilityTableCell::isRowHeader const): (WebCore::AccessibilityTableCell::rowGroupAncestorID const): (WebCore::AccessibilityTableCell::columnHeaders): (WebCore::AccessibilityTableCell::rowHeaders): (WebCore::AccessibilityTableCell::isColumnHeaderCell const): Deleted. (WebCore::AccessibilityTableCell::isRowHeaderCell const): Deleted. (WebCore::AccessibilityTableCell::isTableCellInSameRowGroup): Deleted. (W
[webkit-changes] [WebKit/WebKit] dea5d8: Add hoffmanjoshua to contributors.json
Branch: refs/heads/main Home: https://github.com/WebKit/WebKit Commit: dea5d83f27b0e5db78dae9dad4ddcea5b868d58a https://github.com/WebKit/WebKit/commit/dea5d83f27b0e5db78dae9dad4ddcea5b868d58a Author: Joshua Hoffman Date: 2023-09-18 (Mon, 18 Sep 2023) Changed paths: M metadata/contributors.json Log Message: --- Add hoffmanjoshua to contributors.json https://bugs.webkit.org/show_bug.cgi?id=261696 rdar://115676662 Reviewed by Tyler Wilcock. Add Joshua Hoffman (hoffmanjoshua) to contributors.json. * metadata/contributors.json: Canonical link: https://commits.webkit.org/268105@main ___ webkit-changes mailing list webkit-changes@lists.webkit.org https://lists.webkit.org/mailman/listinfo/webkit-changes
[webkit-changes] [WebKit/WebKit] 4d7674: AX: Expose accessibility attributes for inline tex...
Branch: refs/heads/main Home: https://github.com/WebKit/WebKit Commit: 4d7674e3b99d52397632cd994afb20b7e7da5371 https://github.com/WebKit/WebKit/commit/4d7674e3b99d52397632cd994afb20b7e7da5371 Author: Joshua Hoffman Date: 2023-09-14 (Thu, 14 Sep 2023) Changed paths: A LayoutTests/accessibility/ios-simulator/inline-prediction-attributed-string-expected.txt A LayoutTests/accessibility/ios-simulator/inline-prediction-attributed-string.html M LayoutTests/platform/ios-16/TestExpectations M Source/WebCore/accessibility/AXObjectCache.cpp M Source/WebCore/accessibility/AXObjectCache.h M Source/WebCore/accessibility/AccessibilityObject.h M Source/WebCore/accessibility/AccessibilityObjectInterface.h M Source/WebCore/accessibility/ios/AccessibilityObjectIOS.mm M Source/WebCore/accessibility/ios/WebAccessibilityObjectWrapperIOS.h M Source/WebCore/editing/Editor.cpp Log Message: --- AX: Expose accessibility attributes for inline text predictions https://bugs.webkit.org/show_bug.cgi?id=261056 rdar://114844079 Reviewed by Andres Gonzalez. At present, WebKit does not expose inline predictions to AX clients on iOS. This patch addresses that by adding the attributes UIAccessibilityInlineTextCompletion and UIAccessibilityAcceptedInlineTextCompletion to the attributed string provided to ATs. This is accomplished through two new member variables in accessibility objects, which are updated in AccessibilityObject::setLastPresentedTextPrediction (iOS only): - m_lastPresentedTextPrediction: the "rest" of the word being predicted. For example, if the text "opportun" had been typed, and "ity" was presented as a prediction, we would store "ity". - m_lastPresentedTextPredictionComplete: the whole word being predicted. Using the previous example, we would store the whole word, "opportunity". In both cases, we store the string value and the position, offset to the start of the editor. LastPresentedTextPrediction is reset once a prediction is "accepted", and m_lastPresentedTextPredictionComplete is reset once we start a new composition. In the iOS accessibility wrapper, we access these values and apply them to the resulting attributed string, if applicable. The attributedStringSetCompositionAttributes method handles this work, and checks the location and range of the values to ensure that they are valid. This patch also includes a new test that simulates inline predictions and checks that the correct attributes are exposed. * LayoutTests/accessibility/ios-simulator/inline-prediction-attributed-string-expected.txt: Added. * LayoutTests/accessibility/ios-simulator/inline-prediction-attributed-string.html: Added. * LayoutTests/platform/ios-16/TestExpectations: * Source/WebCore/accessibility/AXObjectCache.cpp: (WebCore::AXObjectCache::onTextCompositionChange): * Source/WebCore/accessibility/AXObjectCache.h: (WebCore::AXObjectCache::onTextCompositionChange): * Source/WebCore/accessibility/AccessibilityObject.h: (WebCore::AccessibilityObject::InlineTextPrediction::reset): (WebCore::AccessibilityObject::lastPresentedTextPrediction const): (WebCore::AccessibilityObject::lastPresentedTextPredictionComplete const): * Source/WebCore/accessibility/AccessibilityObjectInterface.h: * Source/WebCore/accessibility/ios/AccessibilityObjectIOS.mm: (WebCore::AccessibilityObject::setLastPresentedTextPrediction): (WebCore::attributedStringSetCompositionAttributes): (WebCore::attributedStringCreate): * Source/WebCore/accessibility/ios/WebAccessibilityObjectWrapperIOS.h: * Source/WebCore/editing/Editor.cpp: (WebCore::Editor::setComposition): Canonical link: https://commits.webkit.org/267990@main ___ webkit-changes mailing list webkit-changes@lists.webkit.org https://lists.webkit.org/mailman/listinfo/webkit-changes
[webkit-changes] [WebKit/WebKit] 93abe6: AX: title-attribute-used-as-last-resort fails in ITM
Branch: refs/heads/main Home: https://github.com/WebKit/WebKit Commit: 93abe637e9084b310afbf6bf5cfbf4200ef02852 https://github.com/WebKit/WebKit/commit/93abe637e9084b310afbf6bf5cfbf4200ef02852 Author: Joshua Hoffman Date: 2023-09-07 (Thu, 07 Sep 2023) Changed paths: M LayoutTests/accessibility-isolated-tree/TestExpectations M LayoutTests/accessibility/mac/title-attribute-used-as-last-resort-expected.txt M LayoutTests/accessibility/mac/title-attribute-used-as-last-resort.html Log Message: --- AX: title-attribute-used-as-last-resort fails in ITM https://bugs.webkit.org/show_bug.cgi?id=261237 rdar://problem/115079675 Reviewed by Tyler Wilcock. This patch fixes accessibility/mac/title-attribute-used-as-last-resort.html when run in ITM mode by waiting for the attributes to be updated asynchronously. Isolated tree test expectations were also updated for accessibility/mac/combobox-activedescendant-notifications.html and accessibility/mac/relationships-in-frames.html. * LayoutTests/accessibility-isolated-tree/TestExpectations: * LayoutTests/accessibility/mac/title-attribute-used-as-last-resort-expected.txt: * LayoutTests/accessibility/mac/title-attribute-used-as-last-resort.html: Canonical link: https://commits.webkit.org/267757@main ___ webkit-changes mailing list webkit-changes@lists.webkit.org https://lists.webkit.org/mailman/listinfo/webkit-changes
[webkit-changes] [WebKit/WebKit] 2bd294: AX: iOS VO+Safari does not read role or ...
Branch: refs/heads/main Home: https://github.com/WebKit/WebKit Commit: 2bd294b771860b5d15509839303571e70246a1d4 https://github.com/WebKit/WebKit/commit/2bd294b771860b5d15509839303571e70246a1d4 Author: hoffmanjoshua Date: 2023-09-05 (Tue, 05 Sep 2023) Changed paths: A LayoutTests/accessibility/ios-simulator/aria-details-toggle-summary-expected.txt A LayoutTests/accessibility/ios-simulator/aria-details-toggle-summary.html M Source/WebCore/accessibility/AccessibilityObject.cpp M Tools/WebKitTestRunner/InjectedBundle/AccessibilityUIElement.cpp M Tools/WebKitTestRunner/InjectedBundle/AccessibilityUIElement.h M Tools/WebKitTestRunner/InjectedBundle/Bindings/AccessibilityUIElement.idl M Tools/WebKitTestRunner/InjectedBundle/ios/AccessibilityUIElementIOS.mm Log Message: --- AX: iOS VO+Safari does not read role or state https://bugs.webkit.org/show_bug.cgi?id=257162 rdar://109684906 Reviewed by Chris Fleizach. This patch fixes the calculation for AccessibilityObject::supportsExpanded() so that elements describe their state when using iOS voiceover. For elements, we cannot rely on checking the aria-expanded attribute since that does not exist on details elements (the attribute 'open' is used instead). This affects elements as they use their parents to calculate accessibilitySupportsARIAExpanded(). iOS AX tests were also added to confirm that this is the case. * Source/WebCore/accessibility/AccessibilityObject.cpp: Update AccessibilityObject::supportsExpanded(). * Tools/WebKitTestRunner/InjectedBundle/AccessibilityUIElement.cpp: * Tools/WebKitTestRunner/InjectedBundle/AccessibilityUIElement.h: * Tools/WebKitTestRunner/InjectedBundle/Bindings/AccessibilityUIElement.idl: * Tools/WebKitTestRunner/InjectedBundle/ios/AccessibilityUIElementIOS.mm: Expose method for testing. * LayoutTests/accessibility/ios-simulator/aria-details-toggle-summary-expected.txt: * LayoutTests/accessibility/ios-simulator/aria-details-toggle-summary.html: New test for checking isExpanded, supportsExpanded. Canonical link: https://commits.webkit.org/267635@main ___ webkit-changes mailing list webkit-changes@lists.webkit.org https://lists.webkit.org/mailman/listinfo/webkit-changes
[webkit-changes] [WebKit/WebKit] b10496: AX: aria-controls-with-tabs fails in ITM
Branch: refs/heads/main Home: https://github.com/WebKit/WebKit Commit: b1049697ce8bd42217ddb507e245aad309847ec4 https://github.com/WebKit/WebKit/commit/b1049697ce8bd42217ddb507e245aad309847ec4 Author: hoffmanjoshua Date: 2023-08-28 (Mon, 28 Aug 2023) Changed paths: M LayoutTests/accessibility-isolated-tree/TestExpectations M LayoutTests/accessibility/aria-controls-with-tabs.html M Source/WebCore/accessibility/AXObjectCache.cpp M Source/WebCore/accessibility/AXObjectCache.h Log Message: --- AX: aria-controls-with-tabs fails in ITM https://bugs.webkit.org/show_bug.cgi?id=260621 rdar://problem/114334241 Reviewed by Tyler Wilcock. This patch addresses an issue where tabpanels with focus do not update the tabs that aria-control them. This is addressed by adding a new method to traverse upwards in the tree to find a tabpanel ancestor and recompute isSelected for its associated tab when the focus changes. This traversal happens twice: once for the newly focused node and once for the previously focused node. * LayoutTests/accessibility-isolated-tree/TestExpectations: * LayoutTests/accessibility/aria-controls-with-tabs.html: Test updated to use expectAsync rather than expect. * Source/WebCore/accessibility/AXObjectCache.cpp: * Source/WebCore/accessibility/AXObjectCache.h: (WebCore::AXObjectCache::handleTabPanelSelected): New method to handle tabpanels gaining focus, called when the focus changes. Canonical link: https://commits.webkit.org/267391@main ___ webkit-changes mailing list webkit-changes@lists.webkit.org https://lists.webkit.org/mailman/listinfo/webkit-changes
[webkit-changes] [WebKit/WebKit] 7378cf: AX: dialog-showModal fails in ITM
Branch: refs/heads/main Home: https://github.com/WebKit/WebKit Commit: 7378cf3a2fd2c653477f6d58d9fdbbe4a3e1216a https://github.com/WebKit/WebKit/commit/7378cf3a2fd2c653477f6d58d9fdbbe4a3e1216a Author: hoffmanjoshua Date: 2023-08-28 (Mon, 28 Aug 2023) Changed paths: M LayoutTests/accessibility-isolated-tree/TestExpectations M LayoutTests/accessibility/dialog-showModal-expected.txt M LayoutTests/accessibility/dialog-showModal.html Log Message: --- AX: dialog-showModal fails in ITM https://bugs.webkit.org/show_bug.cgi?id=260727 rdar://problem/114463793 Reviewed by Chris Fleizach. This fixes accessibility/dialog-showModal.html in isolated tree mode by waiting for async updates to the "ok" button before querying. The test was also modified to follow updated patterns in test outputs. * LayoutTests/accessibility/dialog-showModal.html: * LayoutTests/accessibility/dialog-showModal-expected.txt: Changes dialog-ShowModal to wait for the ok button to update asynchronously. Also replaced debug() and description() usage with concatenating output string pattern. Canonical link: https://commits.webkit.org/267357@main ___ webkit-changes mailing list webkit-changes@lists.webkit.org https://lists.webkit.org/mailman/listinfo/webkit-changes
[webkit-changes] [WebKit/WebKit] 5e54c0: AX: aria-selected-menu-items test is flaky in ITM ...
Branch: refs/heads/main Home: https://github.com/WebKit/WebKit Commit: 5e54c0b0e654c190747995a9eb69b9fe8aff90ee https://github.com/WebKit/WebKit/commit/5e54c0b0e654c190747995a9eb69b9fe8aff90ee Author: hoffmanjoshua Date: 2023-08-24 (Thu, 24 Aug 2023) Changed paths: M LayoutTests/accessibility-isolated-tree/TestExpectations M LayoutTests/accessibility/aria-selected-menu-items.html M LayoutTests/platform/glib/accessibility/aria-selected-menu-items-expected.txt M LayoutTests/platform/mac/accessibility/aria-selected-menu-items-expected.txt M Source/WebCore/accessibility/AXObjectCache.cpp M Source/WebCore/accessibility/isolatedtree/AXIsolatedTree.cpp Log Message: --- AX: aria-selected-menu-items test is flaky in ITM mode https://bugs.webkit.org/show_bug.cgi?id=260278 rdar://113979223 Reviewed by Chris Fleizach. This change fixes aria-selected-menu-items in isolated tree mode by adding a traversal up for the newly selected child so that its ancestor also updates its SelectedChildren property. The traversal happens during a new case in AXObjectCache::updateIsolatedTree where the notification AXMenuListItemSelected is now handled. * LayoutTests/accessibility-isolated-tree/TestExpectations * LayoutTests/accessibility/aria-selected-menu-items.html * LayoutTests/platform/mac/accessibility/aria-selected-menu-items-expected.txt * LayoutTests/platform/glib/accessibility/aria-selected-menu-items-expected.txt Tests updated to be async for ITM. * Source/WebCore/accessibility/AXObjectCache.cpp (WebCore::AXObjectCache::updateIsolatedTree): Logic to handle AXMenuListItemSelected notifications. * Source/WebCore/accessibility/isolatedtree/AXIsolatedTree.cpp Handle AXPropertyName::SelectedChildren in updateNodeProperties. Canonical link: https://commits.webkit.org/267221@main ___ webkit-changes mailing list webkit-changes@lists.webkit.org https://lists.webkit.org/mailman/listinfo/webkit-changes
[webkit-changes] [WebKit/WebKit] d15d7a: AX: aria-labelledby-on-password-input fails in ITM
Branch: refs/heads/main Home: https://github.com/WebKit/WebKit Commit: d15d7af722dcc95a4245508c7f41cb84edaf3d11 https://github.com/WebKit/WebKit/commit/d15d7af722dcc95a4245508c7f41cb84edaf3d11 Author: hoffmanjoshua Date: 2023-08-21 (Mon, 21 Aug 2023) Changed paths: M LayoutTests/accessibility-isolated-tree/TestExpectations M LayoutTests/accessibility/aria-labelledby-on-password-input.html A LayoutTests/accessibility/aria-labelledby-text-expected.txt A LayoutTests/accessibility/aria-labelledby-text.html M LayoutTests/platform/glib/TestExpectations M Source/WebCore/accessibility/AXObjectCache.cpp Log Message: --- AX: aria-labelledby-on-password-input fails in ITM https://bugs.webkit.org/show_bug.cgi?id=260190 rdar://113885331 Reviewed by Andres Gonzalez. Previously in ITM, if an element had `aria-labelledby`, changes to the labeling element would not update the node of the labeled element. This patch adds logic inside the `handleChildrenChanged` method to notify the labeled elements when the value of a labeling element changes. * LayoutTests/accessibility-isolated-tree/TestExpectations * LayoutTests/accessibility/aria-labelledby-on-password-input.html: Update layout tests to wait for async value change. * LayoutTests/platform/glib/TestExpectations Skip on GTK/WPE. * Source/WebCore/accessibility/AXObjectCache.cpp (WebCore::AXObjectCache::handleChildrenChanged): Checks if self or ancestors label other elements, and updats the labeled (related) elements. * LayoutTests/accessibility/aria-labelledby-text-expected.txt: Added. * LayoutTests/accessibility/aria-labelledby-text.html: Added. New tests to check that text changes, attribute changes, for labelledby elements update properly. Canonical link: https://commits.webkit.org/267086@main ___ webkit-changes mailing list webkit-changes@lists.webkit.org https://lists.webkit.org/mailman/listinfo/webkit-changes
[webkit-changes] [WebKit/WebKit] 4e6fd1: AX: Improve smart pointer usage in AXObjectCache
Branch: refs/heads/main Home: https://github.com/WebKit/WebKit Commit: 4e6fd1fb546159e206da017789dde1841886e177 https://github.com/WebKit/WebKit/commit/4e6fd1fb546159e206da017789dde1841886e177 Author: hoffmanjoshua Date: 2023-08-18 (Fri, 18 Aug 2023) Changed paths: M Source/WebCore/accessibility/AXObjectCache.cpp Log Message: --- AX: Improve smart pointer usage in AXObjectCache https://bugs.webkit.org/show_bug.cgi?id=260389 rdar://problem/114090467 Reviewed by Tyler Wilcock. Improve the usage of smart pointers in AXObjectCache in accordance with WebKit guidelines https://github.com/WebKit/WebKit/wiki/Smart-Pointer-Usage-Guidelines. * Source/WebCore/accessibility/AXObjectCache.cpp: Canonical link: https://commits.webkit.org/267064@main ___ webkit-changes mailing list webkit-changes@lists.webkit.org https://lists.webkit.org/mailman/listinfo/webkit-changes
[webkit-changes] [WebKit/WebKit] 28bfc9: AX: Fix multiple-label-input test in ITM mode
Branch: refs/heads/main Home: https://github.com/WebKit/WebKit Commit: 28bfc960f4a128c6a21f54c9a950edcb5b09f544 https://github.com/WebKit/WebKit/commit/28bfc960f4a128c6a21f54c9a950edcb5b09f544 Author: hoffmanjoshua Date: 2023-08-15 (Tue, 15 Aug 2023) Changed paths: M LayoutTests/accessibility-isolated-tree/TestExpectations M LayoutTests/accessibility/multiple-label-input-expected.txt M LayoutTests/accessibility/multiple-label-input.html M LayoutTests/platform/glib/accessibility/multiple-label-input-expected.txt M Source/WebCore/accessibility/AXObjectCache.cpp M Source/WebCore/accessibility/isolatedtree/AXIsolatedTree.cpp Log Message: --- AX: Fix multiple-label-input test in ITM mode https://bugs.webkit.org/show_bug.cgi?id=260174 rdar://113872525 Reviewed by Andres Gonzalez. This patch resolves an issue where innerHTML and innerText changes to labels were not updating their corresponding input element's AX title. * LayoutTests/accessibility-isolated-tree/TestExpectations * LayoutTests/platform/glib/accessibility/multiple-label-input-expected.txt * LayoutTests/accessibility/multiple-label-input.html * LayoutTests/accessibility/multiple-label-input-expected.txt: Added check for using innerHTML—only checked for innerText functionality previously. * Source/WebCore/accessibility/AXObjectCache.cpp: (WebCore::AXObjectCache::updateIsolatedTree): If static text changes and its parent is a , update the corresponding control. * Source/WebCore/accessibility/isolatedtree/AXIsolatedTree.cpp: (WebCore::AXIsolatedTree::updateNodeAndDependentProperties): Check if a label is being modified (using innerText). If it is, update the corresponding control. Canonical link: https://commits.webkit.org/266919@main ___ webkit-changes mailing list webkit-changes@lists.webkit.org https://lists.webkit.org/mailman/listinfo/webkit-changes
[webkit-changes] [WebKit/WebKit] bb3bc0: AX: Test style cleanup for aria-current.html
Branch: refs/heads/main Home: https://github.com/WebKit/WebKit Commit: bb3bc0cc27779ea17a27768441e2a1ce69c49733 https://github.com/WebKit/WebKit/commit/bb3bc0cc27779ea17a27768441e2a1ce69c49733 Author: hoffmanjoshua Date: 2023-08-15 (Tue, 15 Aug 2023) Changed paths: M LayoutTests/accessibility/aria-current-expected.txt M LayoutTests/accessibility/aria-current.html Log Message: --- AX: Test style cleanup for aria-current.html https://bugs.webkit.org/show_bug.cgi?id=260104 rdar://113775205 Reviewed by Andres Gonzalez. This patch includes style cleanup for the aria-current.html test, and updates the expected result accordingly. * modified: LayoutTests/accessibility/aria-current-expected.txt * modified: LayoutTests/accessibility/aria-current.html Canonical link: https://commits.webkit.org/266913@main ___ webkit-changes mailing list webkit-changes@lists.webkit.org https://lists.webkit.org/mailman/listinfo/webkit-changes
[webkit-changes] [WebKit/WebKit] a5ea28: AX: aria-current.html fails in isolated tree mode
Branch: refs/heads/main Home: https://github.com/WebKit/WebKit Commit: a5ea28813307f7a458ea3e7303a685ddfbe4fbd3 https://github.com/WebKit/WebKit/commit/a5ea28813307f7a458ea3e7303a685ddfbe4fbd3 Author: hoffmanjoshua Date: 2023-08-10 (Thu, 10 Aug 2023) Changed paths: M LayoutTests/accessibility-isolated-tree/TestExpectations M LayoutTests/accessibility/aria-current.html Log Message: --- AX: aria-current.html fails in isolated tree mode https://bugs.webkit.org/show_bug.cgi?id=260026 rdar://113698662 Reviewed by Tyler Wilcock. Fixes aria-current test in isolated tree mode by directly accessing the accessibility element, rather than using the focused element. This prevents an async issue that occurs when accessing the focused element. Also contains cleanup, querying elements by anchor tag rather than class. * LayoutTests/accessibility-isolated-tree/TestExpectations * LayoutTests/accessibility/aria-current.html Canonical link: https://commits.webkit.org/266808@main ___ webkit-changes mailing list webkit-changes@lists.webkit.org https://lists.webkit.org/mailman/listinfo/webkit-changes