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(