Branch: refs/heads/main Home: https://github.com/WebKit/WebKit Commit: 3d864212d2b1150cee5712c950dceac2b52b6b83 https://github.com/WebKit/WebKit/commit/3d864212d2b1150cee5712c950dceac2b52b6b83 Author: Joshua Hoffman <jhoffma...@apple.com> 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