diff --git a/accessible/src/html/nsHTMLFormControlAccessible.cpp b/accessible/src/html/nsHTMLFormControlAccessible.cpp index 8dddc6c0a2bf..9450bfacdeeb 100644 --- a/accessible/src/html/nsHTMLFormControlAccessible.cpp +++ b/accessible/src/html/nsHTMLFormControlAccessible.cpp @@ -401,6 +401,26 @@ NS_IMETHODIMP nsHTMLTextFieldAccessible::GetRole(PRUint32 *aRole) return NS_OK; } +NS_IMETHODIMP nsHTMLTextFieldAccessible::GetName(nsAString& aName) +{ + nsCOMPtr content = do_QueryInterface(mDOMNode); + if (!content) { + return NS_ERROR_FAILURE; + } + nsresult rv = GetHTMLName(aName, PR_FALSE); + if (NS_FAILED(rv) || !aName.IsEmpty() || !content->GetBindingParent()) { + return rv; + } + + // There's a binding parent. + // This means we're part of another control, so use parent accessible for name. + // This ensures that a textbox inside of a XUL widget gets + // an accessible name. + nsCOMPtr parent; + rv = GetParent(getter_AddRefs(parent)); + return parent ? parent->GetName(aName) : rv; +} + NS_IMETHODIMP nsHTMLTextFieldAccessible::GetValue(nsAString& _retval) { PRUint32 state; diff --git a/accessible/src/html/nsHTMLFormControlAccessible.h b/accessible/src/html/nsHTMLFormControlAccessible.h index 37d83343700e..b8bf679216bc 100644 --- a/accessible/src/html/nsHTMLFormControlAccessible.h +++ b/accessible/src/html/nsHTMLFormControlAccessible.h @@ -109,6 +109,7 @@ public: NS_IMETHOD Init(); NS_IMETHOD Shutdown(); NS_IMETHOD GetRole(PRUint32 *_retval); + NS_IMETHOD GetName(nsAString& aName); NS_IMETHOD GetValue(nsAString& _retval); NS_IMETHOD GetState(PRUint32 *aState, PRUint32 *aExtraState); NS_IMETHOD GetNumActions(PRUint8 *_retval); diff --git a/browser/components/search/content/search.xml b/browser/components/search/content/search.xml index b753546dd6c0..fb0846afd690 100644 --- a/browser/components/search/content/search.xml +++ b/browser/components/search/content/search.xml @@ -45,6 +45,8 @@ %searchBarDTD; %globalDTD; + +%browserDTD; ]> - + +