Closed Bug 81454 Opened 24 years ago Closed 24 years ago

Active Accessibility: expose tag name and attribs

Categories

(SeaMonkey :: General, defect, P1)

x86
Windows NT
defect

Tracking

(Not tracked)

RESOLVED FIXED
mozilla0.9.3

People

(Reporter: aaronlev, Assigned: aaronlev)

References

Details

(Keywords: access, Whiteboard: patch has r=,sr=)

Attachments

(5 files)

Active accessibility's IAccessible interface doesn't allow screen reader vendors to get the actual tag name and attributes of a component. Allow a QueryInterface from IAccessible to our own component, IAccessibleMoz, that has the tag name, attributes and possibly style info for a node.
Keywords: access
Status: NEW → ASSIGNED
Priority: -- → P1
Target Milestone: --- → mozilla0.9.2
Attached patch Patch v1.0Splinter Review
I also have the original AccessibleMoz.idl file. It imports oleacc.idl, which we can't distribute. You have to get it from the Microsoft Platform SDK. It generates AccessibleMoz.h and AccessibleMoz_i.c, both of which are used here and needed by vendors who use IAccessibleMoz. It also builds the proxy stub .dll, which an installer needs to call regsvr32.exe on if this interface is to be used across process. That creates a problem, because now either we have to prebuild the .dll and include that in the tree somehow, or we have to convice Microsoft to let us distribute oleacc.dll with their source. Anyway where should I put this stuff? We need to store it somewhere. How about widget/src/windows/accessiblemoz_idl
There have been big changes The new public interface is called IMozNode. It basically mirrors the Mozilla content DOM, but accross process boundaries. It can be built as part of the mozilla project from .idl files. I'll need a review from leaf or granrose or someone, otherwise I might break some weird Windows platform.
There are potential build system breakages in this patch. Leaf, when can you take a look at it>
that may have to wait til after 0.9.1 as leaf has a few 0.9.1 bugs to finish and then we'll be in the 0.9.1 maelstrom.
Attached patch Patch v. 1.2Splinter Review
Leaf says dveditz can review the makefile.win file in this patch. I need this right away, to work with another software development company. dveditz, are you available?
1) Don't use NS_WITH_SERVICE there is a different way. Look at nsTableCell::GetAccessible to see how its done. 2) nsDOMTreeWalker::GetAccessible is called a lot. Its called on every node in the tree. It could be potentially expensive to get the service each time. We should see what the overhead is. I rather would have the DOMTreeWalker hold a cached nsCOMPtr to the service that is set on construction. To make this call more efficient. get_firstChild, get_lastChild, get_previousSibling, get_nextSibling, don't use MakeMozNode but should.
Attached patch Patch v1.4Splinter Review
r=evaughan
i've sent a makefile.win for the new expose directory, when that makes it into the patch, r=leaf
Could you please summarize your changes for someone who isn't really all that familiar with accessability? Also, please enumerate the new build- and run-time dependencies that you're adding (have you tested this on Win95? Win98? NT4.0?). If there are new dependencies, can we add a switch to _not_ build this stuff? (I'm nervous about the ``need file X from the platform SDK'' comment, above. That could make it hard for a lot of people to build this, no?)
I managed to build this on win98, and i'm not sure i even have any supplemental sdk's installed. It'd be nice to verify this on a machine that is *known* for certain to not have supplemental sdks, but i'm not sure where such a machine lives.
Chris, It turns out we don't need that file from the platform SDK anymore. What I've done is built an IMozNode interface that you can QI to from an IAccessible. Normally what happens is: a screen reader or some other type of accessibility aid sends us a WM_GETOBJECT window message, and we return an IAccessible, implemented by Accessible.cpp. This gives them basic information about some nodes in our content tree, such as role, name and state - sometimes it has to traverse the frame tree instead. It's kind of a hybrid between the two - not all nodes are exposed, and not all data are exposed. You don't get attributes or tag names or styles. You get whatever Microsoft thought you should get for a widget - basically predifined enums that the raw data has been funneled into. Accessible.cpp just proxies to nsAccessible.cpp to get all of that - which is in the Accessibility.dll. That doesn't get loaded until this whole process gets set in motion. All of that stuff works already and is in the tree. This change is in here, because for some vendors, IAccessible doesn't have enough - I needed to create an MS COM interface so that they could grab exposed information about the actual DOM nodes in our content tree. That way they can get attributes, tag names and style data. This interface is called IMozNode which is implemented by MozNode.cpp in the class MozNode. Now Accessible just inherits from MozNode. MozNode lets you walk the entire DOM tree, not just the selected pieces that IAccessible allowed.
Status: ASSIGNED → NEW
Ok, makes sense. Thanks. sr=waterson
Blocks: 65632
Blocks: 86517
What is holding up checkin of this patch?
Whiteboard: patch has r=,sr=
It's part of our branch, being sr'd by waterson
Status: NEW → ASSIGNED
Keywords: nsBranch
Target Milestone: mozilla0.9.2 → mozilla0.9.3
In trunk and branch.
Status: ASSIGNED → RESOLVED
Closed: 24 years ago
Resolution: --- → FIXED
Product: Browser → Seamonkey
You need to log in before you can comment on or make changes to this bug.

Attachment

General

Created:
Updated:
Size: