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.

[scriptable, uuid(db717db4-37e9-42f1-a3b0-2579dd7c3814)]
interface nsIAccessible : nsISupports


 MSAA State flags - used for bitfield. More than 1 allowed.
const unsigned long STATE_UNAVAILABLE = 1

const unsigned long STATE_SELECTED = 2

const unsigned long STATE_FOCUSED = 4

const unsigned long STATE_PRESSED = 8

const unsigned long STATE_CHECKED = 16

const unsigned long STATE_MIXED = 32

const unsigned long STATE_READONLY = 64

const unsigned long STATE_HOTTRACKED = 128

const unsigned long STATE_DEFAULT = 256

const unsigned long STATE_EXPANDED = 512

const unsigned long STATE_COLLAPSED = 1024

const unsigned long STATE_BUSY = 2048

const unsigned long STATE_FLOATING = 4096

const unsigned long STATE_MARQUEED = 8192

const unsigned long STATE_ANIMATED = 16384

const unsigned long STATE_INVISIBLE = 32768

const unsigned long STATE_OFFSCREEN = 65536

const unsigned long STATE_SIZEABLE = 131072

const unsigned long STATE_MOVEABLE = 262144

const unsigned long STATE_SELFVOICING = 524288

const unsigned long STATE_FOCUSABLE = 1048576

const unsigned long STATE_SELECTABLE = 2097152

const unsigned long STATE_LINKED = 4194304

const unsigned long STATE_TRAVERSED = 8388608

const unsigned long STATE_MULTISELECTABLE = 16777216

const unsigned long STATE_EXTSELECTABLE = 33554432

const unsigned long STATE_ALERT_LOW = 67108864

const unsigned long STATE_ALERT_MEDIUM = 134217728

const unsigned long STATE_ALERT_HIGH = 268435456

const unsigned long STATE_PROTECTED = 536870912

const unsigned long STATE_HASPOPUP = 1073741824

const unsigned long STATE_REQUIRED = 67108864

const unsigned long STATE_IMPORTANT = 134217728

const unsigned long STATE_INVALID = 268435456

const unsigned long STATE_CHECKABLE = 8192
 Extended state flags (for now non-MSAA, for Java and Gnome/ATK support)
 "Extended state flags" has seperate value space from "MSAA State flags".
const unsigned long EXT_STATE_EDITABLE = 2097152

const unsigned long EXT_STATE_ACTIVE = 4194304

const unsigned long EXT_STATE_EXPANDABLE = 8388608

const unsigned long EXT_STATE_MODAL = 16777216

const unsigned long EXT_STATE_MULTI_LINE = 33554432

const unsigned long EXT_STATE_SENSITIVE = 67108864

const unsigned long EXT_STATE_SHOWING = 268435456

const unsigned long EXT_STATE_SINGLE_LINE = 536870912

const unsigned long EXT_STATE_TRANSIENT = 1073741824

const unsigned long EXT_STATE_VERTICAL = 2147483648
 Relation Types -- most of these come from ATK's atkrelationtype.h
 RELATION_CONTROLLED_BY:    Controlled by one or more target objects.
 RELATION_CONTROLLER_FOR:   Controller for one or more target objects.
 RELATION_LABEL_FOR:        Label for one or more target objects.
 RELATION_LABELLED_BY:      Labelled by one or more target objects.
 RELATION_MEMBER_OF:        Member of a group of one or more target objects.
 RELATION_NODE_CHILD_OF:    Cell in a treetable which is displayed because a
                            cell in the same col is expanded & identifies it.
 RELATION_FLOWS_TO:         Has content that flows logically to another
                            object in a sequential way, e.g. text flow.
 RELATION_FLOWS_FROM:       Has content that flows logically from another
                            object in a sequential way, e.g. text flow.
 RELATION_SUBWINDOW_OF:     Subwindow attached to a component but otherwise 
                            not connected in the UI hierarchy to that component.
 RELATION_EMBEDS:           Visually embeds another object's content, i.e.
                            this object's content flows around another's content.
 RELATION_EMBEDDED_BY:      Inverse of RELATION_EMBEDS; this object's content
                            is visually embedded in another object.
 RELATION_POPUP_FOR:        Popup for another object.
 RELATION_PARENT_WINDOW_OF: Parent window of another object.
 RELATION_DEFAULT_BUTTON:   Part of a form/dialog with a related default button.
 RELATION_DESCRIBED_BY:     Described by one or more target objects.
 RELATION_DESCRIPTION_FOR:  Description for one or more target objects.
const unsigned long RELATION_NUL = 0

const unsigned long RELATION_CONTROLLED_BY = 1

const unsigned long RELATION_CONTROLLER_FOR = 2

const unsigned long RELATION_LABEL_FOR = 3

const unsigned long RELATION_LABELLED_BY = 4

const unsigned long RELATION_MEMBER_OF = 5

const unsigned long RELATION_NODE_CHILD_OF = 6

const unsigned long RELATION_FLOWS_TO = 7

const unsigned long RELATION_FLOWS_FROM = 8

const unsigned long RELATION_SUBWINDOW_OF = 9

const unsigned long RELATION_EMBEDS = 10

const unsigned long RELATION_EMBEDDED_BY = 11

const unsigned long RELATION_POPUP_FOR = 12

const unsigned long RELATION_PARENT_WINDOW_OF = 13

const unsigned long RELATION_DEFAULT_BUTTON = 16384

const unsigned long RELATION_DESCRIBED_BY = 16385

const unsigned long RELATION_DESCRIPTION_FOR = 16386


 Number of accessible children
readonly attribute long childCount
 Accessible description -- long text associated with this node
readonly attribute AString description
 Extended accessible states -- second bit field describing node
readonly attribute unsigned long extState
 Enumerated accessible role. The values depend on platform because of variations.
 See the ROLE_* constants defined later in this file.
 Widgets can use role attribute to force the final role
readonly attribute unsigned long finalRole
 Accessible states -- bit field which describes boolean properties of node. 
 See the STATE_* constants defined later in this file.
 Many states are only valid given a certain role attribute that supports them
readonly attribute unsigned long finalState
 Accessible value -- a number or a secondary text equivalent for this node
 Widgets that use a role attribute can force a value using the valuenow attribute
readonly attribute AString finalValue
 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 global keyboard accelerator, such
 as Ctrl+O for Open file
readonly attribute AString keyBinding
 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
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
 Natural enumerated accessible role for the associated element.
 The values depend on platform because of variations.
 See the ROLE_* constants defined later in this file.
 This does not take into account role attribute as the finalRole does.
readonly attribute unsigned long role


 Add this accessible to the current selection
void addSelection()
 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 related to this one 
nsIAccessible getAccessibleRelated(in unsigned long aRelationType)
 Accessible node geometrically to the left of this one
nsIAccessible getAccessibleToLeft()
 Accessible node geometrically to the right of this one
nsIAccessible getAccessibleToRight()
 The name of the accessible action at the given zero-based index
AString getActionName(in PRUint8 index)

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
nsIAccessible getChildAtPoint(in long x, in long y)
 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)
 Remove this accessible from the current selection
void removeSelection()
 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()