commit 3dab20d177942848b8ff0bd4a03f7b53455b5391
parent 604d0b84a755e5aa81c87bc072603db226343acf
Author: Eitan Isaacson <eitan@monotonous.org>
Date: Fri, 21 Nov 2025 18:48:40 +0000
Bug 1998242 - P2: Don't rely on NativeName override to suppress subtree name calc. r=morgan
Suppressing name tree calculation in local subclasses is going to become
useless when we do name tree calculation remotely, so this decision
branch for HTML rows needs to happen elsewhere.
Depends on D271309
Differential Revision: https://phabricator.services.mozilla.com/D271310
Diffstat:
4 files changed, 18 insertions(+), 27 deletions(-)
diff --git a/accessible/base/nsTextEquivUtils.cpp b/accessible/base/nsTextEquivUtils.cpp
@@ -45,6 +45,18 @@ static nsTHashSet<const Accessible*>& GetReferencedAccs() {
////////////////////////////////////////////////////////////////////////////////
// nsTextEquivUtils. Public.
+bool nsTextEquivUtils::HasNameRule(const Accessible* aAccessible,
+ ETextEquivRule aRule) {
+ uint32_t rule = GetRoleRule(aAccessible->Role());
+ if (aAccessible->IsHTMLTableRow() && !aAccessible->HasStrongARIARole()) {
+ // For table row accessibles, we only want to calculate the name from the
+ // sub tree if an ARIA role is present.
+ rule = eNameFromSubtreeIfReqRule;
+ }
+
+ return (rule & aRule) == aRule;
+}
+
nsresult nsTextEquivUtils::GetNameFromSubtree(
const LocalAccessible* aAccessible, nsAString& aName) {
aName.Truncate();
@@ -69,7 +81,7 @@ nsresult nsTextEquivUtils::GetNameFromSubtree(
}
}
- if (GetRoleRule(aAccessible->Role()) == eNameFromSubtreeRule) {
+ if (HasNameRule(aAccessible, eNameFromSubtreeRule)) {
// XXX: is it necessary to care the accessible is not a document?
if (aAccessible->IsContent()) {
nsAutoString name;
@@ -317,7 +329,7 @@ nsresult nsTextEquivUtils::AppendFromAccessible(Accessible* aAccessible,
nsresult nsTextEquivUtils::AppendFromValue(Accessible* aAccessible,
nsAString* aString) {
- if (GetRoleRule(aAccessible->Role()) != eNameFromValueRule) {
+ if (!HasNameRule(aAccessible, eNameFromValueRule)) {
return NS_OK_NO_NAME_CLAUSE_HANDLED;
}
@@ -414,11 +426,11 @@ uint32_t nsTextEquivUtils::GetRoleRule(role aRole) {
bool nsTextEquivUtils::ShouldIncludeInSubtreeCalculation(
Accessible* aAccessible) {
- uint32_t nameRule = GetRoleRule(aAccessible->Role());
- if (nameRule == eNameFromSubtreeRule) {
+ if (HasNameRule(aAccessible, eNameFromSubtreeRule)) {
return true;
}
- if (!(nameRule & eNameFromSubtreeIfReqRule)) {
+
+ if (!HasNameRule(aAccessible, eNameFromSubtreeIfReqRule)) {
return false;
}
diff --git a/accessible/base/nsTextEquivUtils.h b/accessible/base/nsTextEquivUtils.h
@@ -59,10 +59,7 @@ class nsTextEquivUtils {
* @param aRule [in] a given name rule
* @return true if the accessible has the rule
*/
- static inline bool HasNameRule(Accessible* aAccessible,
- ETextEquivRule aRule) {
- return (GetRoleRule(aAccessible->Role()) & aRule) == aRule;
- }
+ static bool HasNameRule(const Accessible* aAccessible, ETextEquivRule aRule);
/**
* Calculates the name from the given accessible's subtree, if allowed.
diff --git a/accessible/html/HTMLTableAccessible.cpp b/accessible/html/HTMLTableAccessible.cpp
@@ -283,21 +283,6 @@ role HTMLTableHeaderCellAccessible::NativeRole() const {
}
////////////////////////////////////////////////////////////////////////////////
-// HTMLTableRowAccessible
-////////////////////////////////////////////////////////////////////////////////
-
-// LocalAccessible protected
-ENameValueFlag HTMLTableRowAccessible::NativeName(nsString& aName) const {
- // For table row accessibles, we only want to calculate the name from the
- // sub tree if an ARIA role is present.
- if (HasStrongARIARole()) {
- return AccessibleWrap::NativeName(aName);
- }
-
- return eNameOK;
-}
-
-////////////////////////////////////////////////////////////////////////////////
// HTMLTableAccessible
////////////////////////////////////////////////////////////////////////////////
diff --git a/accessible/html/HTMLTableAccessible.h b/accessible/html/HTMLTableAccessible.h
@@ -84,9 +84,6 @@ class HTMLTableRowAccessible : public HyperTextAccessible {
protected:
virtual ~HTMLTableRowAccessible() {}
-
- // LocalAccessible
- virtual ENameValueFlag NativeName(nsString& aName) const override;
};
/**