nsresult nsTextEquivUtils::GetTextEquivFromIDRefs(nsIAccessible *aAccessible, nsIAtom *aIDRefsAttr, nsAString& aTextEquiv) { aTextEquiv.Truncate(); nsCOMPtr<nsIAccessNode> accessNode(do_QueryInterface(aAccessible)); nsCOMPtr<nsIDOMNode> DOMNode; accessNode->GetDOMNode(getter_AddRefs(DOMNode)); nsCOMPtr<nsIContent> content = nsCoreUtils::GetRoleContent(DOMNode); if (!content) return NS_OK; nsCOMPtr<nsIArray> refElms; nsCoreUtils::GetElementsByIDRefsAttr(content, aIDRefsAttr, getter_AddRefs(refElms)); if (!refElms) return NS_OK; PRUint32 count = 0; nsresult rv = refElms->GetLength(&count); NS_ENSURE_SUCCESS(rv, rv); nsCOMPtr<nsIContent> refContent; for (PRUint32 idx = 0; idx < count; idx++) { refContent = do_QueryElementAt(refElms, idx, &rv); NS_ENSURE_SUCCESS(rv, rv); if (!aTextEquiv.IsEmpty()) aTextEquiv += ' '; rv = AppendTextEquivFromContent(aAccessible, refContent, &aTextEquiv); NS_ENSURE_SUCCESS(rv, rv); } return NS_OK; }
nsresult nsTextEquivUtils::GetTextEquivFromIDRefs(nsAccessible *aAccessible, nsIAtom *aIDRefsAttr, nsAString& aTextEquiv) { aTextEquiv.Truncate(); nsIContent* content = aAccessible->GetContent(); if (!content) return NS_OK; nsIContent* refContent = nsnull; IDRefsIterator iter(content, aIDRefsAttr); while ((refContent = iter.NextElem())) { if (!aTextEquiv.IsEmpty()) aTextEquiv += ' '; nsresult rv = AppendTextEquivFromContent(aAccessible, refContent, &aTextEquiv); NS_ENSURE_SUCCESS(rv, rv); } return NS_OK; }