Skip to content

Commit 969f93d

Browse files
committed
AX: Split out isInert from isAXHidden on AccessibilityObject
https://bugs.webkit.org/show_bug.cgi?id=230680 Reviewed by Antti Koivisto. Reasons to do this are: - Naming of isAXHidden is a bit of a lie - We don't want to inherit inert state from parent to child like we do for aria-hidden, especially in the document is blocked by modal dialog case, where the modal should be interactable unlike its ancestors/siblings. * accessibility/AccessibilityObject.cpp: (WebCore::AccessibilityObject::isAXHidden const): (WebCore::AccessibilityObject::isInert const): (WebCore::AccessibilityObject::defaultObjectInclusion const): * accessibility/AccessibilityObject.h: * accessibility/AccessibilityObjectInterface.h: * accessibility/isolatedtree/AXIsolatedObject.cpp: (WebCore::AXIsolatedObject::isInert const): * accessibility/isolatedtree/AXIsolatedObject.h: Canonical link: https://commits.webkit.org/242046@main git-svn-id: https://svn.webkit.org/repository/webkit/trunk@282956 268f45cc-cd09-0410-ab3c-d52691b4dbfc
1 parent 504e80f commit 969f93d

6 files changed

Lines changed: 38 additions & 5 deletions

File tree

Source/WebCore/ChangeLog

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,25 @@
1+
2021-09-23 Tim Nguyen <ntim@apple.com>
2+
3+
AX: Split out isInert from isAXHidden on AccessibilityObject
4+
https://bugs.webkit.org/show_bug.cgi?id=230680
5+
6+
Reviewed by Antti Koivisto.
7+
8+
Reasons to do this are:
9+
- Naming of isAXHidden is a bit of a lie
10+
- We don't want to inherit inert state from parent to child like we do for aria-hidden, especially
11+
in the document is blocked by modal dialog case, where the modal should be interactable unlike its ancestors/siblings.
12+
13+
* accessibility/AccessibilityObject.cpp:
14+
(WebCore::AccessibilityObject::isAXHidden const):
15+
(WebCore::AccessibilityObject::isInert const):
16+
(WebCore::AccessibilityObject::defaultObjectInclusion const):
17+
* accessibility/AccessibilityObject.h:
18+
* accessibility/AccessibilityObjectInterface.h:
19+
* accessibility/isolatedtree/AXIsolatedObject.cpp:
20+
(WebCore::AXIsolatedObject::isInert const):
21+
* accessibility/isolatedtree/AXIsolatedObject.h:
22+
123
2021-09-23 Tim Nguyen <ntim@apple.com>
224

325
Replace `axObject->isAXHidden() || axObject->isDOMHidden()` with `axObject->isHidden()`

Source/WebCore/accessibility/AccessibilityObject.cpp

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -3227,9 +3227,6 @@ bool AccessibilityObject::accessibilityIsIgnoredByDefault() const
32273227
// http://www.w3.org/TR/wai-aria/terms#def_hidden
32283228
bool AccessibilityObject::isAXHidden() const
32293229
{
3230-
if (node() && node()->isInert())
3231-
return true;
3232-
32333230
if (isFocused())
32343231
return false;
32353232

@@ -3250,6 +3247,11 @@ bool AccessibilityObject::isDOMHidden() const
32503247
return style.display() == DisplayType::None || style.visibility() != Visibility::Visible;
32513248
}
32523249

3250+
bool AccessibilityObject::isInert() const
3251+
{
3252+
return node() && node()->isInert();
3253+
}
3254+
32533255
bool AccessibilityObject::isShowingValidationMessage() const
32543256
{
32553257
if (is<HTMLFormControlElement>(node()))
@@ -3271,7 +3273,7 @@ AccessibilityObjectInclusion AccessibilityObject::defaultObjectInclusion() const
32713273
if (useParentData ? m_isIgnoredFromParentData.isAXHidden : isAXHidden())
32723274
return AccessibilityObjectInclusion::IgnoreObject;
32733275

3274-
if (ignoredFromModalPresence())
3276+
if (isInert() || ignoredFromModalPresence())
32753277
return AccessibilityObjectInclusion::IgnoreObject;
32763278

32773279
if (useParentData ? m_isIgnoredFromParentData.isPresentationalChildOfAriaRole : isPresentationalChildOfAriaRole())

Source/WebCore/accessibility/AccessibilityObject.h

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -700,7 +700,8 @@ class AccessibilityObject : public AXCoreObject {
700700
// Visibility.
701701
bool isAXHidden() const override;
702702
bool isDOMHidden() const override;
703-
bool isHidden() const override { return isAXHidden() || isDOMHidden(); }
703+
bool isInert() const override;
704+
bool isHidden() const override { return isAXHidden() || isDOMHidden() || isInert(); }
704705

705706
#if PLATFORM(COCOA)
706707
void overrideAttachmentParent(AXCoreObject* parent) override;

Source/WebCore/accessibility/AccessibilityObjectInterface.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1438,6 +1438,7 @@ class AXCoreObject : public ThreadSafeRefCounted<AXCoreObject> {
14381438
// Visibility.
14391439
virtual bool isAXHidden() const = 0;
14401440
virtual bool isDOMHidden() const = 0;
1441+
virtual bool isInert() const = 0;
14411442
virtual bool isHidden() const = 0;
14421443

14431444
#if ENABLE(ACCESSIBILITY)

Source/WebCore/accessibility/isolatedtree/AXIsolatedObject.cpp

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2317,6 +2317,12 @@ bool AXIsolatedObject::isDOMHidden() const
23172317
return false;
23182318
}
23192319

2320+
bool AXIsolatedObject::isInert() const
2321+
{
2322+
ASSERT_NOT_REACHED();
2323+
return false;
2324+
}
2325+
23202326
bool AXIsolatedObject::isHidden() const
23212327
{
23222328
ASSERT_NOT_REACHED();

Source/WebCore/accessibility/isolatedtree/AXIsolatedObject.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -642,6 +642,7 @@ class AXIsolatedObject final : public AXCoreObject {
642642
bool isMathMultiscriptObject(AccessibilityMathMultiscriptObjectType) const override;
643643
bool isAXHidden() const override;
644644
bool isDOMHidden() const override;
645+
bool isInert() const override;
645646
bool isHidden() const override;
646647
void overrideAttachmentParent(AXCoreObject* parent) override;
647648
bool accessibilityIgnoreAttachment() const override;

0 commit comments

Comments
 (0)