From e88ecf17aaa5c8fd75e8bf6086e83fb912cda360 Mon Sep 17 00:00:00 2001 From: "aaronl%netscape.com" Date: Sun, 10 Mar 2002 05:14:24 +0000 Subject: [PATCH] Bug 129606 - Active accessibility: support STATE_DEFAULT. r=jgaunt. sr=alecf. a=asa. Bug 124450 (reopened) - Active Accessibility: support fieldset and legend. r=jgaunt. sr=hewitt. a=asa git-svn-id: svn://10.0.0.236/trunk@116289 18797224-902f-48f8-a5cc-f745e15eee43 --- .../src/base/nsAccessibilityService.cpp | 4 +-- mozilla/accessible/src/base/nsAccessible.cpp | 2 +- .../src/html/nsHTMLFormControlAccessible.cpp | 30 +++++++++++++++++-- .../src/html/nsHTMLFormControlAccessible.h | 1 + .../src/html/nsHTMLSelectAccessible.cpp | 4 +-- .../src/xul/nsXULFormControlAccessible.cpp | 7 +++++ 6 files changed, 40 insertions(+), 8 deletions(-) diff --git a/mozilla/accessible/src/base/nsAccessibilityService.cpp b/mozilla/accessible/src/base/nsAccessibilityService.cpp index accebb05f8a..eb673e8ce1c 100644 --- a/mozilla/accessible/src/base/nsAccessibilityService.cpp +++ b/mozilla/accessible/src/base/nsAccessibilityService.cpp @@ -1220,7 +1220,7 @@ NS_IMETHODIMP nsAccessibilityService::GetAccessibleFor(nsIDOMNode *aNode, NS_ASSERTION(content, "GetAccessibleFor() called with no content."); - // ---- Try using frame to get IAccessible ---- + // ---- Try using frame to get nsIAccessible ---- nsIFrame* frame = nsnull; shell->GetPrimaryFrameFor(content, &frame); if (!frame) @@ -1242,7 +1242,7 @@ NS_IMETHODIMP nsAccessibilityService::GetAccessibleFor(nsIDOMNode *aNode, if (!newAcc) { nsCOMPtr optionElement(do_QueryInterface(aNode)); if (optionElement) { - // nsHTMLSelectionOptionAccessible's must be created via the parent + // nsHTMLSelectOptionAccessible's must be created via the parent nsCOMPtr parentNode; aNode->GetParentNode(getter_AddRefs(parentNode)); if (parentNode) { diff --git a/mozilla/accessible/src/base/nsAccessible.cpp b/mozilla/accessible/src/base/nsAccessible.cpp index 976c24ce90c..71e342d350e 100644 --- a/mozilla/accessible/src/base/nsAccessible.cpp +++ b/mozilla/accessible/src/base/nsAccessible.cpp @@ -651,7 +651,7 @@ PRBool nsAccessible::IsPartiallyVisible() float p2t; presContext->GetPixelsToTwips(&p2t); PRBool isVisible = PR_FALSE; - viewManager->IsRectVisible(containingView, relFrameRect, kMinPixels * p2t, &isVisible); + viewManager->IsRectVisible(containingView, relFrameRect, NS_STATIC_CAST(PRUint16, (kMinPixels * p2t)), &isVisible); return isVisible; } diff --git a/mozilla/accessible/src/html/nsHTMLFormControlAccessible.cpp b/mozilla/accessible/src/html/nsHTMLFormControlAccessible.cpp index ee2e44c1897..cfb0fc50f89 100644 --- a/mozilla/accessible/src/html/nsHTMLFormControlAccessible.cpp +++ b/mozilla/accessible/src/html/nsHTMLFormControlAccessible.cpp @@ -187,6 +187,20 @@ NS_IMETHODIMP nsHTMLButtonAccessible::AccDoAction(PRUint8 index) return NS_ERROR_INVALID_ARG; } +NS_IMETHODIMP nsHTMLButtonAccessible::GetAccState(PRUint32 *_retval) +{ + nsFormControlAccessible::GetAccState(_retval); + nsCOMPtr element(do_QueryInterface(mDOMNode)); + NS_ASSERTION(element, "No nsIDOMElement for button node!"); + + nsAutoString buttonType; + element->GetAttribute(NS_LITERAL_STRING("type"), buttonType); + if (buttonType.EqualsIgnoreCase("submit")) + *_retval |= STATE_DEFAULT; + + return NS_OK; +} + NS_IMETHODIMP nsHTMLButtonAccessible::GetAccRole(PRUint32 *_retval) { *_retval = ROLE_PUSHBUTTON; @@ -255,6 +269,15 @@ NS_IMETHODIMP nsHTML4ButtonAccessible::GetAccState(PRUint32 *_retval) { nsAccessible::GetAccState(_retval); *_retval |= STATE_FOCUSABLE; + + nsCOMPtr element(do_QueryInterface(mDOMNode)); + NS_ASSERTION(element, "No nsIDOMElement for button node!"); + + nsAutoString buttonType; + element->GetAttribute(NS_LITERAL_STRING("type"), buttonType); + if (buttonType.EqualsIgnoreCase("submit")) + *_retval |= STATE_DEFAULT; + return NS_OK; } @@ -402,8 +425,6 @@ NS_IMETHODIMP nsHTMLGroupboxAccessible::GetAccState(PRUint32 *_retval) NS_IMETHODIMP nsHTMLGroupboxAccessible::GetAccName(nsAWritableString& _retval) { - _retval.Assign(NS_LITERAL_STRING("")); // Default name is blank - nsCOMPtr element(do_QueryInterface(mDOMNode)); if (element) { nsCOMPtr legends; @@ -412,7 +433,10 @@ NS_IMETHODIMP nsHTMLGroupboxAccessible::GetAccName(nsAWritableString& _retval) nsCOMPtr legendNode; legends->Item(0, getter_AddRefs(legendNode)); nsCOMPtr legendContent(do_QueryInterface(legendNode)); - return AppendFlatStringFromSubtree(legendContent, &_retval); + if (legendContent) { + _retval.Assign(NS_LITERAL_STRING("")); // Default name is blank + return AppendFlatStringFromSubtree(legendContent, &_retval); + } } } return NS_OK; diff --git a/mozilla/accessible/src/html/nsHTMLFormControlAccessible.h b/mozilla/accessible/src/html/nsHTMLFormControlAccessible.h index 31d64874d1b..9dfce358f95 100644 --- a/mozilla/accessible/src/html/nsHTMLFormControlAccessible.h +++ b/mozilla/accessible/src/html/nsHTMLFormControlAccessible.h @@ -72,6 +72,7 @@ class nsHTMLButtonAccessible : public nsFormControlAccessible public: nsHTMLButtonAccessible(nsIDOMNode* aNode, nsIWeakReference* aShell); NS_IMETHOD GetAccRole(PRUint32 *_retval); + NS_IMETHOD GetAccState(PRUint32 *_retval); NS_IMETHOD GetAccName(nsAWritableString& _retval); NS_IMETHOD GetAccNumActions(PRUint8 *_retval); NS_IMETHOD GetAccActionName(PRUint8 index, nsAWritableString& _retval); diff --git a/mozilla/accessible/src/html/nsHTMLSelectAccessible.cpp b/mozilla/accessible/src/html/nsHTMLSelectAccessible.cpp index b2316db7058..72cbaad4528 100644 --- a/mozilla/accessible/src/html/nsHTMLSelectAccessible.cpp +++ b/mozilla/accessible/src/html/nsHTMLSelectAccessible.cpp @@ -60,7 +60,7 @@ * * Listbox: * - nsHTMLListboxAccessible - * - nsHTMLSelctListAccessible + * - nsHTMLSelectListAccessible * - nsHTMLSelectOptionAccessible * * Comboboxes: @@ -68,7 +68,7 @@ * - nsHTMLComboboxTextFieldAccessible * - nsHTMLComboboxButtonAccessible * - nsHTMLComboboxWindowAccessilbe - * - nsHTMLSelctListAccessible + * - nsHTMLSelectListAccessible * - nsHTMLSelectOptionAccessible */ diff --git a/mozilla/accessible/src/xul/nsXULFormControlAccessible.cpp b/mozilla/accessible/src/xul/nsXULFormControlAccessible.cpp index 0fcdee2c0dd..dd906824990 100644 --- a/mozilla/accessible/src/xul/nsXULFormControlAccessible.cpp +++ b/mozilla/accessible/src/xul/nsXULFormControlAccessible.cpp @@ -152,6 +152,13 @@ NS_IMETHODIMP nsXULButtonAccessible::GetAccState(PRUint32 *_retval) } } + nsCOMPtr element(do_QueryInterface(mDOMNode)); + NS_ASSERTION(element, "No nsIDOMElement for button node!"); + PRBool isDefault = PR_FALSE; + element->HasAttribute(NS_LITERAL_STRING("default"), &isDefault) ; + if (isDefault) + *_retval |= STATE_DEFAULT; + return NS_OK; }