tor-browser

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

commit 55dc166a4676cc886a9d410781458dfa3ae6ed2f
parent 602b7684509a5b8df2b9bfa7fe2dc67cd78fa5e2
Author: Eitan Isaacson <eitan@monotonous.org>
Date:   Thu, 20 Nov 2025 03:53:14 +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; }; /**