diff --git a/mozilla/accessible/src/base/nsAccessible.cpp b/mozilla/accessible/src/base/nsAccessible.cpp index 703444bc9d8..4fbd006e0bf 100644 --- a/mozilla/accessible/src/base/nsAccessible.cpp +++ b/mozilla/accessible/src/base/nsAccessible.cpp @@ -1489,20 +1489,21 @@ NS_IMETHODIMP nsAccessible::GetXULAccName(nsAString& _retval) // // This should keep search times down and still get the relevant // labels. + nsAutoString controlID; + domElement->GetAttribute(NS_LITERAL_STRING("id"), controlID); nsCOMPtr parent; - if (NS_SUCCEEDED(rv = mDOMNode->GetParentNode(getter_AddRefs(parent)))) { + if (!controlID.IsEmpty() && NS_SUCCEEDED(rv = mDOMNode->GetParentNode(getter_AddRefs(parent)))) { nsCOMPtr xulElement(do_QueryInterface(parent)); NS_ASSERTION(xulElement, "No xulElement for parent DOM Node!"); if (xulElement) { - nsAutoString controlID; - nsCOMPtrlabelList; + nsCOMPtr labelList; if (NS_SUCCEEDED(rv = xulElement->GetElementsByAttribute(NS_LITERAL_STRING("control"), controlID, getter_AddRefs(labelList)))) { PRUint32 length = 0; if (NS_SUCCEEDED(rv = labelList->GetLength(&length)) && length > 0) { - for (PRUint32 i = 0; i < length; ++i) { + for (PRUint32 index = 0; index < length; ++index) { nsCOMPtr child; - if (NS_SUCCEEDED(rv = labelList->Item(i, getter_AddRefs(child) ))) { + if (NS_SUCCEEDED(rv = labelList->Item(index, getter_AddRefs(child) ))) { rv = AppendLabelText(child, label); } } diff --git a/mozilla/accessible/src/xul/nsXULFormControlAccessible.cpp b/mozilla/accessible/src/xul/nsXULFormControlAccessible.cpp index 250c8a52798..6d3806512a4 100644 --- a/mozilla/accessible/src/xul/nsXULFormControlAccessible.cpp +++ b/mozilla/accessible/src/xul/nsXULFormControlAccessible.cpp @@ -42,7 +42,6 @@ #include "nsIDOMNodeList.h" #include "nsIDOMXULButtonElement.h" #include "nsIDOMXULCheckboxElement.h" -#include "nsIDOMXULDescriptionElement.h" #include "nsIDOMXULDocument.h" #include "nsIDOMXULLabelElement.h" #include "nsIDOMXULMenuListElement.h" @@ -437,7 +436,7 @@ NS_IMETHODIMP nsXULGroupboxAccessible::GetAccName(nsAString& _retval) */ nsXULProgressMeterAccessible::nsXULProgressMeterAccessible(nsIDOMNode* aNode, nsIWeakReference* aShell): -nsAccessible(aNode, aShell) +nsFormControlAccessible(aNode, aShell) { } @@ -461,7 +460,8 @@ NS_IMETHODIMP nsXULProgressMeterAccessible::GetAccValue(nsAString& _retval) nsCOMPtr element(do_QueryInterface(mDOMNode)); NS_ASSERTION(element, "No element for DOM node!"); element->GetAttribute(NS_LITERAL_STRING("value"), _retval); - _retval.Append(NS_LITERAL_STRING("%")); + if (!_retval.IsEmpty() && _retval.Last() != '%') + _retval.Append(NS_LITERAL_STRING("%")); return NS_OK; } diff --git a/mozilla/accessible/src/xul/nsXULFormControlAccessible.h b/mozilla/accessible/src/xul/nsXULFormControlAccessible.h index 99e1a65c121..616c089a4ff 100644 --- a/mozilla/accessible/src/xul/nsXULFormControlAccessible.h +++ b/mozilla/accessible/src/xul/nsXULFormControlAccessible.h @@ -95,7 +95,7 @@ public: NS_IMETHOD GetAccName(nsAString& _retval); }; -class nsXULProgressMeterAccessible : public nsAccessible +class nsXULProgressMeterAccessible : public nsFormControlAccessible { public: nsXULProgressMeterAccessible(nsIDOMNode* aNode, nsIWeakReference* aShell);