Skip to content

Commit

Permalink
AX: Remove 32 ASSERT_NOT_REACHED AXIsolatedObject functions from the …
Browse files Browse the repository at this point in the history
…AXCoreObject interface

https://bugs.webkit.org/show_bug.cgi?id=246593
rdar://problem/101223521

Reviewed by Chris Fleizach.

This patch:

  - Removes a couple completely unused functions.

  - Moves many functions out of the AXCoreObject interface, instead
    making them virtual at the AccessibilityObject level.

  - Makes some functions completely non-virtual (since they were only
    virtual because of their AXIsolatedObject implementation). This
    should help performance.

  - Moves the caching of AXPropertyName::IsSelectedOptionActive to an
    `#if PLATFORM(ATSPI)` block since that platform is the the only one
    that uses this property.

* Source/WebCore/accessibility/AccessibilityLabel.h:
(isType):
* Source/WebCore/accessibility/AccessibilityMediaObject.h:
(isType):
* Source/WebCore/accessibility/AccessibilityObject.cpp:
(WebCore::AccessibilityObject::scrollViewAncestor const): Deleted.
(WebCore::AccessibilityObject::firstAnonymousBlockChild const): Deleted.
* Source/WebCore/accessibility/AccessibilityObject.h:
(WebCore::AccessibilityObject::init):
(WebCore::AccessibilityObject::isAccessibilityScrollbar const):
(WebCore::AccessibilityObject::isAccessibilityScrollViewInstance const):
(WebCore::AccessibilityObject::isAccessibilityTableColumnInstance const):
(WebCore::AccessibilityObject::isSliderThumb const):
(WebCore::AccessibilityObject::isLabel const):
(WebCore::AccessibilityObject::isNativeSpinButton const):
(WebCore::AccessibilityObject::isSpinButtonPart const):
(WebCore::AccessibilityObject::isMediaObject const):
(WebCore::AccessibilityObject::stepValueForRange const):
(WebCore::AccessibilityObject::parentObjectIfExists const):
(WebCore::AccessibilityObject::observableObject const):
(WebCore::AccessibilityObject::isPresentationalChildOfAriaRole const):
(WebCore::AccessibilityObject::ariaRoleHasPresentationalChildren const):
(WebCore::AccessibilityObject::helpText const):
(WebCore::AccessibilityObject::isARIAStaticText const):
(WebCore::AccessibilityObject::ariaLabeledByAttribute const):
(WebCore::AccessibilityObject::ariaDescribedByAttribute const):
(WebCore::AccessibilityObject::anchorElement const):
(WebCore::AccessibilityObject::shouldFocusActiveDescendant const):
(WebCore::AccessibilityObject::index const):
* Source/WebCore/accessibility/AccessibilityObjectInterface.h:
(WebCore::AXCoreObject::objectID const):
(WebCore::AXCoreObject::isSpinButton const):
* Source/WebCore/accessibility/AccessibilityProgressIndicator.h:
* Source/WebCore/accessibility/AccessibilityRenderObject.cpp:
* Source/WebCore/accessibility/AccessibilityRenderObject.h:
* Source/WebCore/accessibility/AccessibilityScrollView.h:
(isType):
* Source/WebCore/accessibility/AccessibilityScrollbar.h:
(isType):
* Source/WebCore/accessibility/AccessibilitySlider.h:
(isType):
* Source/WebCore/accessibility/AccessibilitySpinButton.h:
(isType):
* Source/WebCore/accessibility/AccessibilityTableColumn.h:
(isType):
* Source/WebCore/accessibility/isolatedtree/AXIsolatedObject.cpp:
(WebCore::AXIsolatedObject::initializeProperties):
(WebCore::AXIsolatedObject::init): Deleted.
(WebCore::AXIsolatedObject::plainTextRangeForVisiblePositionRange const): Deleted.
(WebCore::AXIsolatedObject::index const): Deleted.
(WebCore::AXIsolatedObject::isAccessibilityScrollbar const): Deleted.
(WebCore::AXIsolatedObject::isAccessibilityScrollViewInstance const): Deleted.
(WebCore::AXIsolatedObject::isAccessibilityTableColumnInstance const): Deleted.
(WebCore::AXIsolatedObject::isAccessibilityProgressIndicatorInstance const): Deleted.
(WebCore::AXIsolatedObject::isSliderThumb const): Deleted.
(WebCore::AXIsolatedObject::isInputSlider const): Deleted.
(WebCore::AXIsolatedObject::isLabel const): Deleted.
(WebCore::AXIsolatedObject::isNativeSpinButton const): Deleted.
(WebCore::AXIsolatedObject::isSpinButtonPart const): Deleted.
(WebCore::AXIsolatedObject::isMediaObject const): Deleted.
(WebCore::AXIsolatedObject::isARIATextControl const): Deleted.
(WebCore::AXIsolatedObject::defaultObjectInclusion const): Deleted.
(WebCore::AXIsolatedObject::accessibilityIsIgnoredByDefault const): Deleted.
(WebCore::AXIsolatedObject::stepValueForRange const): Deleted.
(WebCore::AXIsolatedObject::parentObjectIfExists const): Deleted.
(WebCore::AXIsolatedObject::observableObject const): Deleted.
(WebCore::AXIsolatedObject::isPresentationalChildOfAriaRole const): Deleted.
(WebCore::AXIsolatedObject::ariaRoleHasPresentationalChildren const): Deleted.
(WebCore::AXIsolatedObject::helpText const): Deleted.
(WebCore::AXIsolatedObject::isARIAStaticText const): Deleted.
(WebCore::AXIsolatedObject::ariaLabeledByAttribute const): Deleted.
(WebCore::AXIsolatedObject::ariaDescribedByAttribute const): Deleted.
(WebCore::AXIsolatedObject::anchorElement const): Deleted.
(WebCore::AXIsolatedObject::textIteratorBehaviorForTextRange const): Deleted.
(WebCore::AXIsolatedObject::frame const): Deleted.
(WebCore::AXIsolatedObject::mainFrame const): Deleted.
(WebCore::AXIsolatedObject::topDocument const): Deleted.
(WebCore::AXIsolatedObject::scrollViewAncestor const): Deleted.
(WebCore::AXIsolatedObject::shouldFocusActiveDescendant const): Deleted.
(WebCore::AXIsolatedObject::firstAnonymousBlockChild const): Deleted.
* Source/WebCore/accessibility/isolatedtree/AXIsolatedObject.h:

Canonical link: https://commits.webkit.org/255610@main
  • Loading branch information
twilco committed Oct 17, 2022
1 parent bb8c8f0 commit 2d8149b
Show file tree
Hide file tree
Showing 15 changed files with 58 additions and 334 deletions.
4 changes: 3 additions & 1 deletion Source/WebCore/accessibility/AccessibilityLabel.h
Expand Up @@ -55,4 +55,6 @@ class AccessibilityLabel final : public AccessibilityRenderObject {

} // namespace WebCore

SPECIALIZE_TYPE_TRAITS_ACCESSIBILITY(AccessibilityLabel, isLabel())
SPECIALIZE_TYPE_TRAITS_BEGIN(WebCore::AccessibilityLabel) \
static bool isType(const WebCore::AccessibilityObject& object) { return object.isLabel(); } \
SPECIALIZE_TYPE_TRAITS_END()
4 changes: 3 additions & 1 deletion Source/WebCore/accessibility/AccessibilityMediaObject.h
Expand Up @@ -67,5 +67,7 @@ class AccessibilityMediaObject final : public AccessibilityRenderObject {

} // namespace WebCore

SPECIALIZE_TYPE_TRAITS_ACCESSIBILITY(AccessibilityMediaObject, isMediaObject())
SPECIALIZE_TYPE_TRAITS_BEGIN(WebCore::AccessibilityMediaObject) \
static bool isType(const WebCore::AccessibilityObject& object) { return object.isMediaObject(); } \
SPECIALIZE_TYPE_TRAITS_END()
#endif // PLATFORM(IOS_FAMILY)
17 changes: 0 additions & 17 deletions Source/WebCore/accessibility/AccessibilityObject.cpp
Expand Up @@ -1825,14 +1825,6 @@ const AccessibilityScrollView* AccessibilityObject::ancestorAccessibilityScrollV
}));
}

ScrollView* AccessibilityObject::scrollViewAncestor() const
{
if (auto parentScrollView = ancestorAccessibilityScrollView(true/* includeSelf */))
return parentScrollView->scrollView();

return nullptr;
}

#if PLATFORM(COCOA)
RemoteAXObjectRef AccessibilityObject::remoteParentObject() const
{
Expand Down Expand Up @@ -2363,15 +2355,6 @@ AccessibilityOrientation AccessibilityObject::orientation() const
return AccessibilityOrientation::Undefined;
}

AccessibilityObject* AccessibilityObject::firstAnonymousBlockChild() const
{
for (AccessibilityObject* child = firstChild(); child; child = child->nextSibling()) {
if (child->renderer() && child->renderer()->isAnonymousBlock())
return child;
}
return nullptr;
}

using ARIARoleMap = HashMap<String, AccessibilityRole, ASCIICaseInsensitiveHash>;
using ARIAReverseRoleMap = HashMap<AccessibilityRole, String, DefaultHash<int>, WTF::UnsignedWithZeroKeyHashTraits<int>>;

Expand Down
62 changes: 29 additions & 33 deletions Source/WebCore/accessibility/AccessibilityObject.h
Expand Up @@ -80,7 +80,7 @@ class AccessibilityObject : public AXCoreObject, public CanMakeWeakPtr<Accessibi
// After constructing an AccessibilityObject, it must be given a
// unique ID, then added to AXObjectCache, and finally init() must
// be called last.
void init() override { }
virtual void init() { }

// Prefer using the dedicated functions over consuming these flag values directly, as the flags can sometimes be uninitialized.
// Also, the dedicated functions traverse for you if the flags aren't yet initialized.
Expand Down Expand Up @@ -109,15 +109,14 @@ class AccessibilityObject : public AXCoreObject, public CanMakeWeakPtr<Accessibi

bool isAccessibilityNodeObject() const override { return false; }
bool isAccessibilityRenderObject() const override { return false; }
bool isAccessibilityScrollbar() const override { return false; }
bool isAccessibilityScrollViewInstance() const override { return false; }
virtual bool isAccessibilityScrollbar() const { return false; }
virtual bool isAccessibilityScrollViewInstance() const { return false; }
virtual bool isAccessibilitySVGRoot() const { return false; }
bool isAccessibilityTableInstance() const override { return false; }
bool isAccessibilityTableColumnInstance() const override { return false; }
virtual bool isAccessibilityTableColumnInstance() const { return false; }
bool isAccessibilityARIAGridInstance() const override { return false; }
bool isAccessibilityARIAGridRowInstance() const override { return false; }
bool isAccessibilityARIAGridCellInstance() const override { return false; }
bool isAccessibilityProgressIndicatorInstance() const override { return false; }
bool isAccessibilityListBoxInstance() const override { return false; }
bool isAXIsolatedObjectInstance() const override { return false; }

Expand All @@ -140,10 +139,9 @@ class AccessibilityObject : public AXCoreObject, public CanMakeWeakPtr<Accessibi
bool isInputImage() const override { return false; }
bool isProgressIndicator() const override { return false; }
bool isSlider() const override { return false; }
bool isSliderThumb() const override { return false; }
bool isInputSlider() const override { return false; }
virtual bool isSliderThumb() const { return false; }
bool isControl() const override { return false; }
bool isLabel() const override { return false; }
virtual bool isLabel() const { return false; }

bool isList() const override { return false; }
virtual bool isUnorderedList() const { return false; }
Expand Down Expand Up @@ -199,16 +197,16 @@ class AccessibilityObject : public AXCoreObject, public CanMakeWeakPtr<Accessibi
bool isMenuList() const override { return false; }
bool isMenuListPopup() const override { return false; }
bool isMenuListOption() const override { return false; }
bool isNativeSpinButton() const override { return false; }
virtual bool isNativeSpinButton() const { return false; }
AXCoreObject* incrementButton() override { return nullptr; }
AXCoreObject* decrementButton() override { return nullptr; }
bool isSpinButtonPart() const override { return false; }
virtual bool isSpinButtonPart() const { return false; }
virtual bool isIncrementor() const { return false; }
bool isMockObject() const override { return false; }
virtual bool isMediaControlLabel() const { return false; }
bool isMediaObject() const override { return false; }
virtual bool isMediaObject() const { return false; }
bool isTextControl() const override;
bool isARIATextControl() const override;
bool isARIATextControl() const;
bool isNonNativeTextControl() const override;
bool isButton() const override;
bool isLandmark() const override;
Expand Down Expand Up @@ -278,8 +276,8 @@ class AccessibilityObject : public AXCoreObject, public CanMakeWeakPtr<Accessibi
virtual bool computeAccessibilityIsIgnored() const { return true; }
bool accessibilityIsIgnored() const override;
void recomputeIsIgnored();
AccessibilityObjectInclusion defaultObjectInclusion() const override;
bool accessibilityIsIgnoredByDefault() const override;
virtual AccessibilityObjectInclusion defaultObjectInclusion() const;
bool accessibilityIsIgnoredByDefault() const;

bool isShowingValidationMessage() const;
String validationMessage() const;
Expand All @@ -291,7 +289,7 @@ class AccessibilityObject : public AXCoreObject, public CanMakeWeakPtr<Accessibi
float valueForRange() const override { return 0.0f; }
float maxValueForRange() const override { return 0.0f; }
float minValueForRange() const override { return 0.0f; }
float stepValueForRange() const override { return 0.0f; }
virtual float stepValueForRange() const { return 0.0f; }
AXCoreObject* selectedRadioButton() override { return nullptr; }
AXCoreObject* selectedTabItem() override { return nullptr; }
AccessibilityObject* selectedListItem();
Expand Down Expand Up @@ -359,7 +357,7 @@ class AccessibilityObject : public AXCoreObject, public CanMakeWeakPtr<Accessibi
AccessibilityObject* parentObject() const override { return nullptr; }
AccessibilityObject* displayContentsParent() const;
AccessibilityObject* parentObjectUnignored() const override;
AccessibilityObject* parentObjectIfExists() const override { return nullptr; }
virtual AccessibilityObject* parentObjectIfExists() const { return nullptr; }
static AccessibilityObject* firstAccessibleObjectFromNode(const Node*);
void findMatchingObjects(AccessibilitySearchCriteria*, AccessibilityChildrenVector&) override;
virtual bool isDescendantOfBarrenParent() const { return false; }
Expand All @@ -370,16 +368,16 @@ class AccessibilityObject : public AXCoreObject, public CanMakeWeakPtr<Accessibi
Vector<SimpleRange> findTextRanges(const AccessibilitySearchTextCriteria&) const override;
Vector<String> performTextOperation(const AccessibilityTextOperation&) override;

AccessibilityObject* observableObject() const override { return nullptr; }
virtual AccessibilityObject* observableObject() const { return nullptr; }
AccessibilityChildrenVector linkedObjects() const override { return { }; }
AccessibilityObject* titleUIElement() const override { return nullptr; }
AccessibilityObject* correspondingLabelForControlElement() const override { return nullptr; }
AccessibilityObject* correspondingControlForLabelElement() const override { return nullptr; }
AccessibilityObject* scrollBar(AccessibilityOrientation) override { return nullptr; }

AccessibilityRole ariaRoleAttribute() const override { return AccessibilityRole::Unknown; }
bool isPresentationalChildOfAriaRole() const override { return false; }
bool ariaRoleHasPresentationalChildren() const override { return false; }
virtual bool isPresentationalChildOfAriaRole() const { return false; }
virtual bool ariaRoleHasPresentationalChildren() const { return false; }
bool inheritsPresentationalRole() const override { return false; }

// Accessibility Text
Expand All @@ -394,16 +392,16 @@ class AccessibilityObject : public AXCoreObject, public CanMakeWeakPtr<Accessibi
// Accessibility Text - (To be deprecated).
String accessibilityDescription() const override { return String(); }
String title() const override { return String(); }
String helpText() const override { return String(); }
virtual String helpText() const { return String(); }

// Methods for determining accessibility text.
bool isARIAStaticText() const override { return ariaRoleAttribute() == AccessibilityRole::StaticText; }
bool isARIAStaticText() const { return ariaRoleAttribute() == AccessibilityRole::StaticText; }
String stringValue() const override { return String(); }
String textUnderElement(AccessibilityTextUnderElementMode = AccessibilityTextUnderElementMode()) const override { return String(); }
String text() const override { return String(); }
int textLength() const override { return 0; }
String ariaLabeledByAttribute() const override { return String(); }
String ariaDescribedByAttribute() const override { return String(); }
virtual String ariaLabeledByAttribute() const { return String(); }
virtual String ariaDescribedByAttribute() const { return String(); }
const String placeholderValue() const override;
bool accessibleNameDerivesFromContent() const;
String brailleLabel() const override { return getAttribute(HTMLNames::aria_braillelabelAttr); }
Expand Down Expand Up @@ -431,7 +429,7 @@ class AccessibilityObject : public AXCoreObject, public CanMakeWeakPtr<Accessibi

static AccessibilityObject* anchorElementForNode(Node*);
static AccessibilityObject* headingElementForNode(Node*);
Element* anchorElement() const override { return nullptr; }
virtual Element* anchorElement() const { return nullptr; }
bool supportsPressAction() const override;
Element* actionElement() const override { return nullptr; }
LayoutRect boundingBoxRect() const override { return LayoutRect(); }
Expand All @@ -441,7 +439,7 @@ class AccessibilityObject : public AXCoreObject, public CanMakeWeakPtr<Accessibi
Path elementPath() const override { return Path(); }
bool supportsPath() const override { return false; }

TextIteratorBehaviors textIteratorBehaviorForTextRange() const override;
TextIteratorBehaviors textIteratorBehaviorForTextRange() const;
PlainTextRange selectedTextRange() const override { return { }; }
int insertionPointLineNumber() const override { return -1; }

Expand All @@ -464,11 +462,10 @@ class AccessibilityObject : public AXCoreObject, public CanMakeWeakPtr<Accessibi
Page* page() const override;
Document* document() const override;
FrameView* documentFrameView() const override;
Frame* frame() const override;
Frame* mainFrame() const override;
Document* topDocument() const override;
Frame* frame() const;
Frame* mainFrame() const;
Document* topDocument() const;
ScrollView* scrollView() const override { return nullptr; }
ScrollView* scrollViewAncestor() const override;
String language() const override;
// 1-based, to match the aria-level spec.
unsigned hierarchicalLevel() const override { return 0; }
Expand Down Expand Up @@ -521,9 +518,8 @@ class AccessibilityObject : public AXCoreObject, public CanMakeWeakPtr<Accessibi
void setSelectedChildren(const AccessibilityChildrenVector&) override { }
void visibleChildren(AccessibilityChildrenVector&) override { }
void tabChildren(AccessibilityChildrenVector&) override { }
bool shouldFocusActiveDescendant() const override { return false; }
virtual bool shouldFocusActiveDescendant() const { return false; }
AccessibilityObject* activeDescendant() const override { return nullptr; }
AccessibilityObject* firstAnonymousBlockChild() const override;

WEBCORE_EXPORT static AccessibilityRole ariaRoleToWebCoreRole(const String&);
virtual bool hasAttribute(const QualifiedName&) const;
Expand Down Expand Up @@ -577,8 +573,8 @@ class AccessibilityObject : public AXCoreObject, public CanMakeWeakPtr<Accessibi
int indexForVisiblePosition(const VisiblePosition&) const override { return 0; }

int lineForPosition(const VisiblePosition&) const override;
PlainTextRange plainTextRangeForVisiblePositionRange(const VisiblePositionRange&) const override;
int index(const VisiblePosition&) const override { return -1; }
PlainTextRange plainTextRangeForVisiblePositionRange(const VisiblePositionRange&) const;
virtual int index(const VisiblePosition&) const { return -1; }

PlainTextRange doAXRangeForLine(unsigned) const override { return PlainTextRange(); }
PlainTextRange doAXRangeForPosition(const IntPoint&) const override;
Expand Down

0 comments on commit 2d8149b

Please sign in to comment.