Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: 1907a445147bf44d8a54bd25067bc62ecc06b63f
      
https://github.com/WebKit/WebKit/commit/1907a445147bf44d8a54bd25067bc62ecc06b63f
  Author: Tyler Wilcock <[email protected]>
  Date:   2024-10-27 (Sun, 27 Oct 2024)

  Changed paths:
    M Source/WebCore/accessibility/AccessibilityObject.h
    M Source/WebCore/accessibility/AccessibilityRenderObject.h
    M Source/WebCore/accessibility/AccessibilityTable.cpp
    M Source/WebCore/accessibility/AccessibilityTable.h

  Log Message:
  -----------
  AX: AccessibilityTable should use m_role like every other AccessibilityObject 
subclass
https://bugs.webkit.org/show_bug.cgi?id=282136
rdar://138698416

Reviewed by Chris Fleizach.

Prior to this commit, every object besides AccessibilityTable initializes 
AccessibilityObject::m_role in
AccessibilityObject::init(), and has an implementation of roleValue() that 
simply returns this m_role. It's both
confusing and inefficient (for some reasons listed in the next paragraph) for 
AccessibilityTable to be the exception,
so this commit fixes that.

Fixing this is advantageous for performance in several ways:

  1. AccessibilityTable's override of `roleValue()` is now removed. This means 
that any time the compiler has a type of
     AccessibilityObject (rather than AXCoreObject), it can de-virtualize the 
`roleValue()` call. This is very important
     because roleValue() is called all over the place.

  2. AccessibilityTable::roleValue() is now cheaper, since it just reads from a 
member variable. Again, roleValue() is
     called all the time, so it's important that it's as cheap as possible.

  3. updateRoleAfterChildrenCreation() and updateRole() are now non-virtual, 
further improving the compiliers ability
     to perform optimizations.

This commit also includes a drive-by change to remove a redundant 
hasNonTableARIARole() check in computeIsTableExposableThroughAccessibility().
isDataTable() already checks this.

* Source/WebCore/accessibility/AccessibilityObject.h:
* Source/WebCore/accessibility/AccessibilityRenderObject.h:
* Source/WebCore/accessibility/AccessibilityTable.cpp:
(WebCore::AccessibilityTable::init):
(WebCore::AccessibilityTable::recomputeIsExposable):
(WebCore::AccessibilityTable::determineAccessibilityRole):
(WebCore::AccessibilityTable::computeIsTableExposableThroughAccessibility 
const): Deleted.
(WebCore::AccessibilityTable::roleValue const): Deleted.
* Source/WebCore/accessibility/AccessibilityTable.h:
(WebCore::AccessibilityTable::computeIsTableExposableThroughAccessibility 
const):

Canonical link: https://commits.webkit.org/285749@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

Reply via email to