From a5ebf1856ceba10cfd6d67a70860179f095bfc7e Mon Sep 17 00:00:00 2001 From: Eitan Isaacson Date: Sat, 23 Aug 2025 00:25:04 +0000 Subject: [PATCH] Bug 1975696 - Revert suppression of AXTitle introduced in bug 1901324. r=Jamie a=RyanVM Original Revision: https://phabricator.services.mozilla.com/D261165 Differential Revision: https://phabricator.services.mozilla.com/D261203 --- accessible/mac/mozAccessible.mm | 11 ++------ .../browser/mac/browser_radio_position.js | 25 +++++++++++-------- 2 files changed, 17 insertions(+), 19 deletions(-) diff --git a/accessible/mac/mozAccessible.mm b/accessible/mac/mozAccessible.mm index cab61875d257..c527052ce985 100644 --- a/accessible/mac/mozAccessible.mm +++ b/accessible/mac/mozAccessible.mm @@ -496,9 +496,8 @@ struct RoleDescrComparator { } if (![self providesLabelNotTitle]) { - Relation rel = mGeckoAccessible->RelationByType(RelationType::LABELLED_BY); - if (rel.Next() && !rel.Next()) { - // A single label relation. + NSArray* relations = [self getRelationsByType:RelationType::LABELLED_BY]; + if ([relations count] == 1) { return nil; } } @@ -514,12 +513,6 @@ struct RoleDescrComparator { return nil; } - Relation rel = mGeckoAccessible->RelationByType(RelationType::LABELLED_BY); - if (rel.Next() && !rel.Next()) { - // A single label relation. Use AXUITitleElement instead of AXTitle - return nil; - } - nsAutoString title; mGeckoAccessible->Name(title); if (nsCoreUtils::IsWhitespaceString(title)) { diff --git a/accessible/tests/browser/mac/browser_radio_position.js b/accessible/tests/browser/mac/browser_radio_position.js index a51f3798ad23..76f518a91e81 100644 --- a/accessible/tests/browser/mac/browser_radio_position.js +++ b/accessible/tests/browser/mac/browser_radio_position.js @@ -18,16 +18,9 @@ function getChildRoles(parent) { } function getLinkedTitles(element) { - return element.getAttributeValue("AXLinkedUIElements").map(linkedElem => { - let labelElem = linkedElem.getAttributeValue("AXTitleUIElement"); - let labelText = labelElem - ? labelElem - .getAttributeValue("AXChildren") - .map(c => c.getAttributeValue("AXValue")) - .join("") - : null; - return labelText ? labelText : linkedElem.getAttributeValue("AXTitle"); - }); + return element + .getAttributeValue("AXLinkedUIElements") + .map(c => c.getAttributeValue("AXTitle")); } /** @@ -159,6 +152,12 @@ addAccessibleTask( let catdog = getNativeInterface(accDoc, "catdog"); let titleList = ["Cat", "Dog", "CatDog"]; + Assert.deepEqual( + titleList, + [cat, dog, catdog].map(x => x.getAttributeValue("AXTitle")), + "Title list matches" + ); + let linkedElems = cat.getAttributeValue("AXLinkedUIElements"); is(linkedElems.length, 3, "Cat has three linked UI elems"); Assert.deepEqual( @@ -237,6 +236,12 @@ addAccessibleTask( let catdog = getNativeInterface(accDoc, "catdog"); let titleList = ["Cat", "Dog", "CatDog"]; + Assert.deepEqual( + titleList, + [cat, dog, catdog].map(x => x.getAttributeValue("AXTitle")), + "Title list matches" + ); + let linkedElems = cat.getAttributeValue("AXLinkedUIElements"); is(linkedElems.length, 3, "Cat has three linked UI elems"); Assert.deepEqual(