nsresult nsTextEquivUtils::GetNameFromSubtree(nsIAccessible *aAccessible, nsAString& aName) { aName.Truncate(); if (gInitiatorAcc) return NS_OK; gInitiatorAcc = aAccessible; PRUint32 role = nsAccUtils::Role(aAccessible); PRUint32 nameRule = gRoleToNameRulesMap[role]; if (nameRule == eFromSubtree) { nsCOMPtr<nsIAccessNode> accessNode(do_QueryInterface(aAccessible)); nsCOMPtr<nsIDOMNode> DOMNode; accessNode->GetDOMNode(getter_AddRefs(DOMNode)); nsCOMPtr<nsIContent> content(do_QueryInterface(DOMNode)); if (content) { nsAutoString name; AppendFromAccessibleChildren(aAccessible, &name); name.CompressWhitespace(); if (!IsWhitespaceString(name)) aName = name; } } gInitiatorAcc = nsnull; return NS_OK; }
nsresult nsTextEquivUtils::GetNameFromSubtree(nsAccessible *aAccessible, nsAString& aName) { aName.Truncate(); if (gInitiatorAcc) return NS_OK; gInitiatorAcc = aAccessible; PRUint32 nameRule = gRoleToNameRulesMap[aAccessible->Role()]; if (nameRule == eFromSubtree) { //XXX: is it necessary to care the accessible is not a document? if (aAccessible->IsContent()) { nsAutoString name; AppendFromAccessibleChildren(aAccessible, &name); name.CompressWhitespace(); if (!IsWhitespaceString(name)) aName = name; } } gInitiatorAcc = nsnull; return NS_OK; }