Diff
Modified: trunk/Source/WebCore/ChangeLog (284768 => 284769)
--- trunk/Source/WebCore/ChangeLog 2021-10-24 20:57:44 UTC (rev 284768)
+++ trunk/Source/WebCore/ChangeLog 2021-10-24 22:28:37 UTC (rev 284769)
@@ -1,3 +1,73 @@
+2021-10-24 Tyler Wilcock <[email protected]>
+
+ AX: AccessibilityObject::m_haveChildren and AXCoreObject::hasChildren() are misleadingly named
+ https://bugs.webkit.org/show_bug.cgi?id=232130
+
+ Reviewed by Chris Fleizach.
+
+ The names of `AccessibilityObject::m_haveChildren` and `AXCoreObject::hasChildren()`
+ imply that the given object has one or more children. However, what these
+ really indicate is whether the object has tried to initialize its children.
+ Both `m_haveChildren` and `hasChildren()` can be true for objects that have no children,
+ which is confusing.
+
+ This patch:
+
+ - Renames `m_haveChildren` to `m_childrenInitialized` and
+ `hasChildren()` to `childrenInitialized()`.
+
+ - Removes `AXPropertyName::HasChildren` rather than
+ renaming it because isolated object children are always initialized.
+
+ - Fixes a bug in `AccessibilityRenderObject::updateRoleAfterChildrenCreation`
+ caused by the poor names (we intended to change the role if there
+ were no children, not if `!hasChildren()`).
+
+ * accessibility/AccessibilityARIAGrid.cpp:
+ (WebCore::AccessibilityARIAGrid::addChildren):
+ * accessibility/AccessibilityListBox.cpp:
+ (WebCore::AccessibilityListBox::addChildren):
+ (WebCore::AccessibilityListBox::selectedChildren):
+ (WebCore::AccessibilityListBox::visibleChildren):
+ * accessibility/AccessibilityMenuList.cpp:
+ (WebCore::AccessibilityMenuList::addChildren):
+ * accessibility/AccessibilityMenuListPopup.cpp:
+ (WebCore::AccessibilityMenuListPopup::addChildren):
+ (WebCore::AccessibilityMenuListPopup::childrenChanged):
+ * accessibility/AccessibilityNodeObject.cpp:
+ (WebCore::AccessibilityNodeObject::addChildren):
+ * accessibility/AccessibilityObject.cpp:
+ (WebCore::AccessibilityObject::updateChildrenIfNecessary):
+ (WebCore::AccessibilityObject::clearChildren):
+ * accessibility/AccessibilityObject.h:
+ * accessibility/AccessibilityObjectInterface.h:
+ (WebCore::AXCoreObject::isDescendantOfObject const):
+ * accessibility/AccessibilityRenderObject.cpp:
+ (WebCore::AccessibilityRenderObject::addCanvasChildren):
+ (WebCore::AccessibilityRenderObject::updateRoleAfterChildrenCreation):
+ (WebCore::AccessibilityRenderObject::addChildren):
+ (WebCore::AccessibilityRenderObject::ariaListboxVisibleChildren):
+ * accessibility/AccessibilityScrollView.cpp:
+ (WebCore::AccessibilityScrollView::addChildren):
+ * accessibility/AccessibilitySlider.cpp:
+ (WebCore::AccessibilitySlider::addChildren):
+ * accessibility/AccessibilitySpinButton.cpp:
+ (WebCore::AccessibilitySpinButton::incrementButton):
+ (WebCore::AccessibilitySpinButton::decrementButton):
+ (WebCore::AccessibilitySpinButton::addChildren):
+ * accessibility/AccessibilityTable.cpp:
+ (WebCore::AccessibilityTable::addChildren):
+ * accessibility/AccessibilityTableColumn.cpp:
+ (WebCore::AccessibilityTableColumn::addChildren):
+ * accessibility/AccessibilityTableHeaderContainer.cpp:
+ (WebCore::AccessibilityTableHeaderContainer::addChildren):
+ * accessibility/isolatedtree/AXIsolatedObject.cpp:
+ Stop setting `AXPropertyName::HasChildren` because it no longer exists.
+ (WebCore::AXIsolatedObject::initializeAttributeData):
+ * accessibility/isolatedtree/AXIsolatedObject.h:
+ * accessibility/isolatedtree/AXIsolatedTree.h:
+ Delete `AXPropertyName::HasChildren`.
+
2021-10-24 Fujii Hironori <[email protected]>
The code decoding std::optional<ImagePaintingOptions> can't be compiled by PlayStation due to the ImagePaintingOptions template constructor
Modified: trunk/Source/WebCore/accessibility/AccessibilityARIAGrid.cpp (284768 => 284769)
--- trunk/Source/WebCore/accessibility/AccessibilityARIAGrid.cpp 2021-10-24 20:57:44 UTC (rev 284768)
+++ trunk/Source/WebCore/accessibility/AccessibilityARIAGrid.cpp 2021-10-24 22:28:37 UTC (rev 284769)
@@ -94,7 +94,7 @@
void AccessibilityARIAGrid::addChildren()
{
- ASSERT(!m_haveChildren);
+ ASSERT(!m_childrenInitialized);
if (!isExposable()) {
AccessibilityRenderObject::addChildren();
@@ -101,7 +101,7 @@
return;
}
- m_haveChildren = true;
+ m_childrenInitialized = true;
if (!m_renderer)
return;
Modified: trunk/Source/WebCore/accessibility/AccessibilityListBox.cpp (284768 => 284769)
--- trunk/Source/WebCore/accessibility/AccessibilityListBox.cpp 2021-10-24 20:57:44 UTC (rev 284768)
+++ trunk/Source/WebCore/accessibility/AccessibilityListBox.cpp 2021-10-24 22:28:37 UTC (rev 284769)
@@ -71,7 +71,7 @@
if (!selectNode)
return;
- m_haveChildren = true;
+ m_childrenInitialized = true;
for (const auto& listItem : downcast<HTMLSelectElement>(*selectNode).listItems())
addChild(listBoxOptionAccessibilityObject(listItem), DescendIfIgnored::No);
@@ -105,9 +105,9 @@
{
ASSERT(result.isEmpty());
- if (!hasChildren())
+ if (!childrenInitialized())
addChildren();
-
+
for (const auto& child : m_children) {
if (downcast<AccessibilityListBoxOption>(*child).isSelected())
result.append(child.get());
@@ -118,7 +118,7 @@
{
ASSERT(result.isEmpty());
- if (!hasChildren())
+ if (!childrenInitialized())
addChildren();
unsigned length = m_children.size();
Modified: trunk/Source/WebCore/accessibility/AccessibilityMenuList.cpp (284768 => 284769)
--- trunk/Source/WebCore/accessibility/AccessibilityMenuList.cpp 2021-10-24 20:57:44 UTC (rev 284768)
+++ trunk/Source/WebCore/accessibility/AccessibilityMenuList.cpp 2021-10-24 22:28:37 UTC (rev 284769)
@@ -81,7 +81,7 @@
return;
}
- m_haveChildren = true;
+ m_childrenInitialized = true;
addChild(list);
list->addChildren();
}
Modified: trunk/Source/WebCore/accessibility/AccessibilityMenuListPopup.cpp (284768 => 284769)
--- trunk/Source/WebCore/accessibility/AccessibilityMenuListPopup.cpp 2021-10-24 20:57:44 UTC (rev 284768)
+++ trunk/Source/WebCore/accessibility/AccessibilityMenuListPopup.cpp 2021-10-24 22:28:37 UTC (rev 284769)
@@ -94,7 +94,7 @@
if (!selectNode)
return;
- m_haveChildren = true;
+ m_childrenInitialized = true;
for (const auto& listItem : downcast<HTMLSelectElement>(*selectNode).listItems()) {
if (auto* menuListOptionObject = menuListOptionAccessibilityObject(listItem)) {
@@ -116,7 +116,7 @@
}
m_children.clear();
- m_haveChildren = false;
+ m_childrenInitialized = false;
addChildren();
}
Modified: trunk/Source/WebCore/accessibility/AccessibilityNodeObject.cpp (284768 => 284769)
--- trunk/Source/WebCore/accessibility/AccessibilityNodeObject.cpp 2021-10-24 20:57:44 UTC (rev 284768)
+++ trunk/Source/WebCore/accessibility/AccessibilityNodeObject.cpp 2021-10-24 22:28:37 UTC (rev 284769)
@@ -342,12 +342,12 @@
{
// If the need to add more children in addition to existing children arises,
// childrenChanged should have been called, leaving the object with no children.
- ASSERT(!m_haveChildren);
+ ASSERT(!m_childrenInitialized);
if (!m_node)
return;
- m_haveChildren = true;
+ m_childrenInitialized = true;
// The only time we add children from the DOM tree to a node with a renderer is when it's a canvas.
if (renderer() && !m_node->hasTagName(canvasTag))
Modified: trunk/Source/WebCore/accessibility/AccessibilityObject.cpp (284768 => 284769)
--- trunk/Source/WebCore/accessibility/AccessibilityObject.cpp 2021-10-24 20:57:44 UTC (rev 284768)
+++ trunk/Source/WebCore/accessibility/AccessibilityObject.cpp 2021-10-24 22:28:37 UTC (rev 284769)
@@ -1686,7 +1686,7 @@
void AccessibilityObject::updateChildrenIfNecessary()
{
- if (!hasChildren()) {
+ if (!childrenInitialized()) {
// Enable the cache in case we end up adding a lot of children, we don't want to recompute axIsIgnored each time.
AXAttributeCacheEnabler enableCache(axObjectCache());
addChildren();
@@ -1700,7 +1700,7 @@
child->detachFromParent();
m_children.clear();
- m_haveChildren = false;
+ m_childrenInitialized = false;
}
AccessibilityObject* AccessibilityObject::anchorElementForNode(Node* node)
Modified: trunk/Source/WebCore/accessibility/AccessibilityObject.h (284768 => 284769)
--- trunk/Source/WebCore/accessibility/AccessibilityObject.h 2021-10-24 20:57:44 UTC (rev 284768)
+++ trunk/Source/WebCore/accessibility/AccessibilityObject.h 2021-10-24 22:28:37 UTC (rev 284769)
@@ -495,7 +495,7 @@
void insertChild(AXCoreObject*, unsigned, DescendIfIgnored = DescendIfIgnored::Yes) override;
bool canHaveChildren() const override { return true; }
- bool hasChildren() const override { return m_haveChildren; }
+ bool childrenInitialized() const override { return m_childrenInitialized; }
void updateChildrenIfNecessary() override;
void setNeedsToUpdateChildren() override { }
void setNeedsToUpdateSubtree() override { }
@@ -811,7 +811,7 @@
AXID m_id { 0 };
protected: // FIXME: Make the data members private.
AccessibilityChildrenVector m_children;
- mutable bool m_haveChildren { false };
+ mutable bool m_childrenInitialized { false };
AccessibilityRole m_role { AccessibilityRole::Unknown };
private:
AccessibilityObjectInclusion m_lastKnownIsIgnoredValue { AccessibilityObjectInclusion::DefaultBehavior };
Modified: trunk/Source/WebCore/accessibility/AccessibilityObjectInterface.h (284768 => 284769)
--- trunk/Source/WebCore/accessibility/AccessibilityObjectInterface.h 2021-10-24 20:57:44 UTC (rev 284768)
+++ trunk/Source/WebCore/accessibility/AccessibilityObjectInterface.h 2021-10-24 22:28:37 UTC (rev 284769)
@@ -1249,7 +1249,7 @@
Vector<AXID> childrenIDs();
virtual bool canHaveChildren() const = 0;
- virtual bool hasChildren() const = 0;
+ virtual bool childrenInitialized() const = 0;
virtual void updateChildrenIfNecessary() = 0;
virtual void setNeedsToUpdateChildren() = 0;
virtual void setNeedsToUpdateSubtree() = 0;
@@ -1625,7 +1625,7 @@
inline bool AXCoreObject::isDescendantOfObject(const AXCoreObject* axObject) const
{
- return axObject && axObject->hasChildren()
+ return axObject && axObject->childrenInitialized()
&& Accessibility::findAncestor<AXCoreObject>(*this, false, [axObject] (const AXCoreObject& object) {
return &object == axObject;
}) != nullptr;
Modified: trunk/Source/WebCore/accessibility/AccessibilityRenderObject.cpp (284768 => 284769)
--- trunk/Source/WebCore/accessibility/AccessibilityRenderObject.cpp 2021-10-24 20:57:44 UTC (rev 284768)
+++ trunk/Source/WebCore/accessibility/AccessibilityRenderObject.cpp 2021-10-24 22:28:37 UTC (rev 284769)
@@ -3385,9 +3385,9 @@
return;
// If it's a canvas, it won't have rendered children, but it might have accessible fallback content.
- // Clear m_haveChildren because AccessibilityNodeObject::addChildren will expect it to be false.
+ // Clear m_childrenInitialized because AccessibilityNodeObject::addChildren will expect it to be false.
ASSERT(!m_children.size());
- m_haveChildren = false;
+ m_childrenInitialized = false;
AccessibilityNodeObject::addChildren();
}
@@ -3490,7 +3490,7 @@
if (!menuItemCount)
m_role = AccessibilityRole::Group;
}
- if (role == AccessibilityRole::SVGRoot && !hasChildren())
+ if (role == AccessibilityRole::SVGRoot && !children().size())
m_role = AccessibilityRole::Image;
}
@@ -3498,9 +3498,9 @@
{
// If the need to add more children in addition to existing children arises,
// childrenChanged should have been called, leaving the object with no children.
- ASSERT(!m_haveChildren);
+ ASSERT(!m_childrenInitialized);
- m_haveChildren = true;
+ m_childrenInitialized = true;
if (!canHaveChildren())
return;
@@ -3689,7 +3689,7 @@
void AccessibilityRenderObject::ariaListboxVisibleChildren(AccessibilityChildrenVector& result)
{
- if (!hasChildren())
+ if (!childrenInitialized())
addChildren();
for (const auto& child : children()) {
Modified: trunk/Source/WebCore/accessibility/AccessibilityScrollView.cpp (284768 => 284769)
--- trunk/Source/WebCore/accessibility/AccessibilityScrollView.cpp 2021-10-24 20:57:44 UTC (rev 284768)
+++ trunk/Source/WebCore/accessibility/AccessibilityScrollView.cpp 2021-10-24 22:28:37 UTC (rev 284769)
@@ -185,8 +185,8 @@
void AccessibilityScrollView::addChildren()
{
- ASSERT(!m_haveChildren);
- m_haveChildren = true;
+ ASSERT(!m_childrenInitialized);
+ m_childrenInitialized = true;
addChild(webAreaObject());
updateScrollbars();
Modified: trunk/Source/WebCore/accessibility/AccessibilitySlider.cpp (284768 => 284769)
--- trunk/Source/WebCore/accessibility/AccessibilitySlider.cpp 2021-10-24 20:57:44 UTC (rev 284768)
+++ trunk/Source/WebCore/accessibility/AccessibilitySlider.cpp 2021-10-24 22:28:37 UTC (rev 284769)
@@ -86,9 +86,9 @@
void AccessibilitySlider::addChildren()
{
- ASSERT(!m_haveChildren);
+ ASSERT(!m_childrenInitialized);
- m_haveChildren = true;
+ m_childrenInitialized = true;
AXObjectCache* cache = m_renderer->document().axObjectCache();
Modified: trunk/Source/WebCore/accessibility/AccessibilitySpinButton.cpp (284768 => 284769)
--- trunk/Source/WebCore/accessibility/AccessibilitySpinButton.cpp 2021-10-24 20:57:44 UTC (rev 284768)
+++ trunk/Source/WebCore/accessibility/AccessibilitySpinButton.cpp 2021-10-24 22:28:37 UTC (rev 284769)
@@ -45,9 +45,9 @@
AXCoreObject* AccessibilitySpinButton::incrementButton()
{
- if (!m_haveChildren)
+ if (!m_childrenInitialized)
addChildren();
- if (!m_haveChildren)
+ if (!m_childrenInitialized)
return nullptr;
ASSERT(m_children.size() == 2);
@@ -57,9 +57,9 @@
AXCoreObject* AccessibilitySpinButton::decrementButton()
{
- if (!m_haveChildren)
+ if (!m_childrenInitialized)
addChildren();
- if (!m_haveChildren)
+ if (!m_childrenInitialized)
return nullptr;
ASSERT(m_children.size() == 2);
@@ -86,7 +86,7 @@
if (!cache)
return;
- m_haveChildren = true;
+ m_childrenInitialized = true;
auto& incrementor = downcast<AccessibilitySpinButtonPart>(*cache->create(AccessibilityRole::SpinButtonPart));
incrementor.setIsIncrementor(true);
Modified: trunk/Source/WebCore/accessibility/AccessibilityTable.cpp (284768 => 284769)
--- trunk/Source/WebCore/accessibility/AccessibilityTable.cpp 2021-10-24 20:57:44 UTC (rev 284768)
+++ trunk/Source/WebCore/accessibility/AccessibilityTable.cpp 2021-10-24 22:28:37 UTC (rev 284769)
@@ -381,9 +381,9 @@
return;
}
- ASSERT(!m_haveChildren);
+ ASSERT(!m_childrenInitialized);
- m_haveChildren = true;
+ m_childrenInitialized = true;
if (!is<RenderTable>(renderer()))
return;
Modified: trunk/Source/WebCore/accessibility/AccessibilityTableColumn.cpp (284768 => 284769)
--- trunk/Source/WebCore/accessibility/AccessibilityTableColumn.cpp 2021-10-24 20:57:44 UTC (rev 284768)
+++ trunk/Source/WebCore/accessibility/AccessibilityTableColumn.cpp 2021-10-24 22:28:37 UTC (rev 284769)
@@ -181,9 +181,9 @@
void AccessibilityTableColumn::addChildren()
{
- ASSERT(!m_haveChildren);
+ ASSERT(!m_childrenInitialized);
- m_haveChildren = true;
+ m_childrenInitialized = true;
if (!is<AccessibilityTable>(m_parent))
return;
Modified: trunk/Source/WebCore/accessibility/AccessibilityTableHeaderContainer.cpp (284768 => 284769)
--- trunk/Source/WebCore/accessibility/AccessibilityTableHeaderContainer.cpp 2021-10-24 20:57:44 UTC (rev 284768)
+++ trunk/Source/WebCore/accessibility/AccessibilityTableHeaderContainer.cpp 2021-10-24 22:28:37 UTC (rev 284769)
@@ -63,9 +63,9 @@
void AccessibilityTableHeaderContainer::addChildren()
{
- ASSERT(!m_haveChildren);
+ ASSERT(!m_childrenInitialized);
- m_haveChildren = true;
+ m_childrenInitialized = true;
if (!is<AccessibilityTable>(m_parent))
return;
Modified: trunk/Source/WebCore/accessibility/isolatedtree/AXIsolatedObject.cpp (284768 => 284769)
--- trunk/Source/WebCore/accessibility/isolatedtree/AXIsolatedObject.cpp 2021-10-24 20:57:44 UTC (rev 284768)
+++ trunk/Source/WebCore/accessibility/isolatedtree/AXIsolatedObject.cpp 2021-10-24 22:28:37 UTC (rev 284769)
@@ -163,7 +163,6 @@
setProperty(AXPropertyName::LayoutCount, object.layoutCount());
setProperty(AXPropertyName::EstimatedLoadingProgress, object.estimatedLoadingProgress());
setProperty(AXPropertyName::SupportsARIAOwns, object.supportsARIAOwns());
- setProperty(AXPropertyName::HasChildren, object.hasChildren());
setProperty(AXPropertyName::HasPopup, object.hasPopup());
setProperty(AXPropertyName::PopupValue, object.popupValue().isolatedCopy());
setProperty(AXPropertyName::PressedIsPresent, object.pressedIsPresent());
Modified: trunk/Source/WebCore/accessibility/isolatedtree/AXIsolatedObject.h (284768 => 284769)
--- trunk/Source/WebCore/accessibility/isolatedtree/AXIsolatedObject.h 2021-10-24 20:57:44 UTC (rev 284768)
+++ trunk/Source/WebCore/accessibility/isolatedtree/AXIsolatedObject.h 2021-10-24 22:28:37 UTC (rev 284769)
@@ -610,7 +610,7 @@
void addChild(AXCoreObject*, DescendIfIgnored = DescendIfIgnored::Yes) override;
void insertChild(AXCoreObject*, unsigned, DescendIfIgnored = DescendIfIgnored::Yes) override;
bool canHaveChildren() const override;
- bool hasChildren() const override { return boolAttributeValue(AXPropertyName::HasChildren); }
+ bool childrenInitialized() const override { return true; }
void setNeedsToUpdateChildren() override;
void setNeedsToUpdateSubtree() override;
void clearChildren() override;
Modified: trunk/Source/WebCore/accessibility/isolatedtree/AXIsolatedTree.h (284768 => 284769)
--- trunk/Source/WebCore/accessibility/isolatedtree/AXIsolatedTree.h 2021-10-24 20:57:44 UTC (rev 284768)
+++ trunk/Source/WebCore/accessibility/isolatedtree/AXIsolatedTree.h 2021-10-24 22:28:37 UTC (rev 284769)
@@ -118,7 +118,6 @@
HasARIAValueNow,
HasApplePDFAnnotationAttribute,
HasBoldFont,
- HasChildren,
HasHighlighting,
HasItalicFont,
HasPlainText,