Linux Windows
 A cross-platform interface that supports platform-specific 
 accessibility APIs like MSAA and ATK. Contains the sum of what's needed
 to support IAccessible as well as ATK's generic accessibility objects.
 Can also be used by in-process accessibility clients to get information
 about objects in the accessible tree. The accessible tree is a subset of 
 nodes in the DOM tree -- such as documents, focusable elements and text.
 Mozilla creates the implementations of nsIAccessible on demand.
 See http://www.mozilla.org/projects/ui/accessibility for more information.

 @status UNDER_REVIEW
[scriptable, uuid(c81d8f8c-8585-4094-bc7c-71dd01494906)]
interface nsIAccessible : nsISupports

Attributes

 Attributes of accessible
readonly attribute nsIPersistentProperties attributes
 Number of accessible children
readonly attribute long childCount
 Array of all this element's children.
readonly attribute nsIArray children
 Provides localized string of global keyboard accelerator for default
 action, such as Ctrl+O for Open file
readonly attribute AString defaultKeyBinding
 Accessible description -- long text associated with this node
readonly attribute AString description
 First child in accessible tree
readonly attribute nsIAccessible firstChild
 Focused accessible child of node
readonly attribute nsIAccessible focusedChild
 Help text associated with node
readonly attribute AString help
 The 0-based index of this accessible in its parent's list of children,
 or -1 if this accessible does not have a parent.
readonly attribute long indexInParent
 Provides localized string of accesskey name, such as Alt+D.
 The modifier may be affected by user and platform preferences.
 Usually alt+letter, or just the letter alone for menu items. 
readonly attribute AString keyboardShortcut
 Last child in accessible tree
readonly attribute nsIAccessible lastChild
 Accessible name -- the main text equivalent for this node. The name is
 specified by ARIA or by native markup. Example of ARIA markup is
 aria-labelledby attribute placed on element of this accessible. Example
 of native markup is HTML label linked with HTML element of this accessible.

 Value can be string or null. A null value indicates that AT may attempt to
 compute the name. Any string value, including the empty string, should be
 considered author-intentional, and respected.
attribute AString name
 Next sibling in accessible tree
readonly attribute nsIAccessible nextSibling
 The number of accessible actions associated with this accessible
readonly attribute PRUint8 numActions
 Parent node in accessible tree.
readonly attribute nsIAccessible parent
 Previous sibling in accessible tree
readonly attribute nsIAccessible previousSibling
 Returns the number of accessible relations for this object.
readonly attribute unsigned long relationsCount
 Enumerated accessible role (see the constants defined in nsIAccessibleRole).

 @note  The values might depend on platform because of variations. Widgets
        can use ARIA role attribute to force the final role.
readonly attribute unsigned long role
 Accessible value -- a number or a secondary text equivalent for this node
 Widgets that use role attribute can force a value using the valuenow attribute
readonly attribute AString value

Methods

 Perform the accessible action at the given zero-based index
 Action number 0 is the default action
void doAction(in PRUint8 index)
 Extend the current selection from its current accessible anchor node
 to this accessible
void extendSelection()
 Accessible node geometrically above this one
nsIAccessible getAccessibleAbove()
 Accessible node geometrically below this one
nsIAccessible getAccessibleBelow()
 Accessible node geometrically to the left of this one
nsIAccessible getAccessibleToLeft()
 Accessible node geometrically to the right of this one
nsIAccessible getAccessibleToRight()
 The description of the accessible action at the given zero-based index
AString getActionDescription(in PRUint8 aIndex)
 The name of the accessible action at the given zero-based index
AString getActionName(in PRUint8 index)
 Return accessible's x and y coordinates relative to the screen and
 accessible's width and height.
void getBounds(out long x, out long y, out long width, out long height)
 Nth accessible child using zero-based index or last child if index less than zero
nsIAccessible getChildAt(in long aChildIndex)
 Accessible child which contains the coordinate at (x, y) in screen pixels.
 If the point is in the current accessible but not in a child, the
 current accessible will be returned.
 If the point is in neither the current accessible or a child, then
 null will be returned.

 @param x  screen's x coordinate
 @param y  screen's y coordinate
 @return   the deepest accessible child containing the given point
nsIAccessible getChildAtPoint(in long x, in long y)
 Deepest accessible child which contains the coordinate at (x, y) in screen
 pixels. If the point is in the current accessible but not in a child, the
 current accessible will be returned. If the point is in neither the current
 accessible or a child, then null will be returned.

 @param x  screen's x coordinate
 @param y  screen's y coordinate
 @return   the deepest accessible child containing the given point
nsIAccessible getDeepestChildAtPoint(in long x, in long y)
 Provides array of localized string of global keyboard accelerator for
 the given action index supported by accessible.

 @param aActionIndex - index of the given action
nsIDOMDOMStringList getKeyBindings(in PRUint8 aActionIndex)
 Get a pointer to accessibility interface for this node, which is specific 
 to the OS/accessibility toolkit we're running on.
[noscript] void getNativeInterface(out voidPtr aOutAccessible)
 Returns one accessible relation for this object.

 @param index - relation index (0-based)
nsIAccessibleRelation getRelation(in unsigned long index)
 Return accessible relation by the given relation type (see.
 constants defined in nsIAccessibleRelation).
nsIAccessibleRelation getRelationByType(in unsigned long aRelationType)
 Returns multiple accessible relations for this object.
nsIArray getRelations()
 Accessible states -- bit fields which describe boolean properties of node.
 Many states are only valid given a certain role attribute that supports
 them.

 @param aState - the first bit field (see nsIAccessibleStates::STATE_*
                 constants)
 @param aExtraState - the second bit field
                      (see nsIAccessibleStates::EXT_STATE_* constants)
void getState(out unsigned long aState, out unsigned long aExtraState)
 Returns grouping information. Used for tree items, list items, tab panel
 labels, radio buttons, etc. Also used for collectons of non-text objects.

 @param groupLevel - 1-based, similar to ARIA 'level' property
 @param similarItemsInGroup - 1-based, similar to ARIA 'setsize' property,
                              inclusive of the current item
 @param positionInGroup - 1-based, similar to ARIA 'posinset' property
void groupPosition(out long aGroupLevel, out long aSimilarItemsInGroup, out long aPositionInGroup)
 Add or remove this accessible to the current selection
void setSelected(in boolean isSelected)
 Focus this accessible node,
 The state STATE_FOCUSABLE indicates whether this node is normally focusable.
 It is the callers responsibility to determine whether this node is focusable.
 accTakeFocus on a node that is not normally focusable (such as a table),
 will still set focus on that node, although normally that will not be visually 
 indicated in most style sheets.
void takeFocus()
 Select this accessible node only
void takeSelection()