tor-browser

The Tor Browser
git clone https://git.dasho.dev/tor-browser.git
Log | Files | Refs | README | LICENSE

commit 1fbfdefceffac79038cbbcf9a4e045595a17f58e
parent 695b65952f5417409ff433990f5294466bc3930a
Author: Eitan Isaacson <eitan@monotonous.org>
Date:   Fri, 21 Nov 2025 06:38:05 +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:
Maccessible/base/nsTextEquivUtils.cpp | 22+++++++++++++++++-----
Maccessible/base/nsTextEquivUtils.h | 5+----
Maccessible/html/HTMLTableAccessible.cpp | 15---------------
Maccessible/html/HTMLTableAccessible.h | 3---
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; }; /**