tor-browser

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

commit 95638bb76c40df06da5c07a0a77bfaf58e4af060
parent 25a9efa9b2cc3127dd745f22283d36d40a948cd1
Author: Eitan Isaacson <eitan@monotonous.org>
Date:   Thu, 20 Nov 2025 20:05:22 +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; }; /**