diff --git a/accessible/src/xul/nsXULTextAccessible.cpp b/accessible/src/xul/nsXULTextAccessible.cpp index eaa8ae91940f..6ab1afbb578a 100644 --- a/accessible/src/xul/nsXULTextAccessible.cpp +++ b/accessible/src/xul/nsXULTextAccessible.cpp @@ -38,6 +38,7 @@ * ***** END LICENSE BLOCK ***** */ // NOTE: alphabetically ordered +#include "nsAccessibilityAtoms.h" #include "nsIDOMXULDescriptionElement.h" #include "nsXULTextAccessible.h" @@ -56,10 +57,13 @@ NS_IMETHODIMP nsXULTextAccessible::GetName(nsAString& aName) if (!content) { return NS_ERROR_FAILURE; // Node shut down } - if (content->Tag() == nsAccessibilityAtoms::label) { - return content->GetAttr(kNameSpaceID_None, nsAccessibilityAtoms::value, aName); + nsresult rv = content->GetAttr(kNameSpaceID_None, nsAccessibilityAtoms::value, aName); + if (rv == NS_CONTENT_ATTR_NOT_THERE) { + // if the value doesn't exist, flatten the inner content as the name (for descriptions) + return AppendFlatStringFromSubtree(content, &aName); } - return nsTextAccessibleWrap::GetName(aName); + // otherwise, use the value attribute as the name (for labels) + return NS_OK; } NS_IMETHODIMP nsXULTextAccessible::GetState(PRUint32 *_retval)