From 994f14de442f7ab2e81317fbdc2c0142c9f2ea04 Mon Sep 17 00:00:00 2001 From: "aaronleventhal%moonset.net" Date: Mon, 2 May 2005 13:11:01 +0000 Subject: [PATCH] Bug 290260. Allow xhtml2:role for XUL elements with no nsIAccessibleProvider implementation. r=kyle.yuan, sr=neil, a=asa --- accessible/src/base/nsAccessibilityService.cpp | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) diff --git a/accessible/src/base/nsAccessibilityService.cpp b/accessible/src/base/nsAccessibilityService.cpp index 0d4d6f6e9d6..52ca099714c 100644 --- a/accessible/src/base/nsAccessibilityService.cpp +++ b/accessible/src/base/nsAccessibilityService.cpp @@ -1863,12 +1863,19 @@ NS_IMETHODIMP nsAccessibilityService::GetAccessible(nsIDOMNode *aNode, // --- Try creating accessible non-HTML (XUL, etc.) --- // XUL elements may implement nsIAccessibleProvider via XBL // This allows them to say what kind of accessible to create + // Non-HTML elements must have an nsIAccessibleProvider, tabindex + // or XHTML2 role or they're not in the accessible tree. nsCOMPtr accProv(do_QueryInterface(aNode)); - // Non-HTML elements must have an nsIAccessibleProvider or they're not in - // accessible tree. - if (!accProv) + if (accProv) { + accProv->GetAccessible(getter_AddRefs(newAcc)); + } + else if (content->HasAttr(kNameSpaceID_None, nsAccessibilityAtoms::tabindex) || + content->HasAttr(kNameSpaceID_XHTML2_Unofficial, nsAccessibilityAtoms::role)) { + newAcc = new nsAccessibleWrap(aNode, aWeakShell); // Create generic accessible + } + else { return NS_ERROR_FAILURE; - accProv->GetAccessible(getter_AddRefs(newAcc)); + } } else { // --- Try creating accessible for HTML ---