Branch: refs/heads/main
Home: https://github.com/WebKit/WebKit
Commit: 3d864212d2b1150cee5712c950dceac2b52b6b83
https://github.com/WebKit/WebKit/commit/3d864212d2b1150cee5712c950dceac2b52b6b83
Author: Joshua Hoffman <[email protected]>
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
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes