summaryrefslogtreecommitdiffstats
path: root/accessible/interfaces/nsIAccessible.idl
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--accessible/interfaces/nsIAccessible.idl343
1 files changed, 343 insertions, 0 deletions
diff --git a/accessible/interfaces/nsIAccessible.idl b/accessible/interfaces/nsIAccessible.idl
new file mode 100644
index 0000000000..aadd0402dc
--- /dev/null
+++ b/accessible/interfaces/nsIAccessible.idl
@@ -0,0 +1,343 @@
+/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*-
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+
+#include "nsISupports.idl"
+#include "nsIArray.idl"
+
+interface nsIPersistentProperties;
+interface nsIAccessibleDocument;
+interface nsIAccessibleRelation;
+
+webidl Node;
+
+%{C++
+namespace mozilla {
+namespace a11y {
+class Accessible;
+}
+}
+%}
+
+/**
+ * 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, builtinclass, uuid(de2869d9-563c-4943-996b-31a4daa4d097)]
+interface nsIAccessible : nsISupports
+{
+ /**
+ * Parent node in accessible tree.
+ */
+ readonly attribute nsIAccessible parent;
+
+ /**
+ * Next sibling in accessible tree
+ */
+ readonly attribute nsIAccessible nextSibling;
+
+ /**
+ * Previous sibling in accessible tree
+ */
+ readonly attribute nsIAccessible previousSibling;
+
+ /**
+ * First child in accessible tree
+ */
+ readonly attribute nsIAccessible firstChild;
+
+ /**
+ * Last child in accessible tree
+ */
+ readonly attribute nsIAccessible lastChild;
+
+ /**
+ * Array of all this element's children.
+ */
+ readonly attribute nsIArray children;
+
+ /**
+ * Number of accessible children
+ */
+ readonly attribute long childCount;
+
+ /**
+ * 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;
+
+ /**
+ * The unique identifier of the accessible. ID is only guaranteed to be unique
+ * per document (Windows IDs are unique even across documents, but that is
+ * Windows specific and not exposed to core).
+ */
+ readonly attribute long long uniqueID;
+
+ /**
+ * The DOM node this nsIAccessible is associated with.
+ */
+ readonly attribute Node DOMNode;
+
+ /**
+ * For remote accessibles the id of the related DOM node.
+ */
+ readonly attribute AString id;
+
+ /**
+ * The document accessible that this access node resides in.
+ */
+ readonly attribute nsIAccessibleDocument document;
+
+ /**
+ * The root document accessible that this access node resides in.
+ */
+ readonly attribute nsIAccessibleDocument rootDocument;
+
+ /**
+ * The language for the current DOM node, e.g. en, de, etc.
+ */
+ readonly attribute AString language;
+
+ /**
+ * 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.
+ */
+ readonly attribute AString name;
+
+ /**
+ * 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;
+
+ /**
+ * Accessible description -- long text associated with this node
+ */
+ readonly attribute AString description;
+
+ /**
+ * 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 accessKey;
+
+ /**
+ * Provides localized string of global keyboard accelerator for default
+ * action, such as Ctrl+O for Open file
+ */
+ readonly attribute AString keyboardShortcut;
+
+ /**
+ * 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 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);
+
+ /**
+ * Help text associated with node
+ *
+ * @note As of now, this just returns empty string.
+ */
+ readonly attribute AString help;
+
+ /**
+ * Focused accessible child of node
+ */
+ readonly attribute nsIAccessible focusedChild;
+
+ /**
+ * Attributes of accessible
+ */
+ readonly attribute nsIPersistentProperties attributes;
+
+ /**
+ * Platform specific interface for accessible
+ */
+ readonly attribute nsISupports nativeInterface;
+
+ /**
+ * 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);
+
+ /**
+ * 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 direct 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);
+
+/**
+ * Like GetDeepestChildAtPoint, but restricted to the current process.
+ * If the point is within a remote document, the accessible for the browser
+ * element containing that document will be returned; i.e. this will not
+ * descend into the document. If called on an accessible inside a remote
+ * document, this will fail.
+ *
+ * @param x screen's x coordinate
+ * @param y screen's y coordinate
+ * @return the deepest accessible child in this process containing the given
+ * point
+ */
+ nsIAccessible getDeepestChildAtPointInProcess(in long x, in long y);
+
+ /**
+ * Nth accessible child using zero-based index or last child if index less than zero
+ */
+ nsIAccessible getChildAt(in long aChildIndex);
+
+ /**
+ * 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();
+
+ /**
+ * Return accessible's x and y coordinates relative to the screen and
+ * accessible's width and height in Dev pixels.
+ */
+ void getBounds(out long x, out long y, out long width, out long height);
+
+ /**
+ * Return accessible's x and y coordinates relative to the screen and
+ * accessible's width and height in CSS pixels.
+ */
+ void getBoundsInCSSPixels(out long aX, out long aY, out long aWidth, out long aHeight);
+
+ /**
+ * Add or remove this accessible to the current selection
+ */
+ void setSelected(in boolean isSelected);
+
+ /**
+ * Select this accessible node only
+ */
+ void takeSelection();
+
+ /**
+ * 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();
+
+ /**
+ * The number of accessible actions associated with this accessible
+ */
+ readonly attribute uint8_t actionCount;
+
+ /**
+ * The name of the accessible action at the given zero-based index
+ */
+ AString getActionName(in uint8_t index);
+
+ /**
+ * The description of the accessible action at the given zero-based index
+ */
+ AString getActionDescription(in uint8_t aIndex);
+
+ /**
+ * Perform the accessible action at the given zero-based index
+ * Action number 0 is the default action
+ */
+ void doAction(in uint8_t index);
+
+ /**
+ * Makes an object visible on screen.
+ *
+ * @param scrollType - defines where the object should be placed on
+ * the screen (see nsIAccessibleScrollType for
+ * available constants).
+ */
+ [can_run_script]
+ void scrollTo(in unsigned long aScrollType);
+
+ /**
+ * Moves the top left of an object to a specified location.
+ *
+ * @param coordinateType [in] - specifies whether the coordinates are relative to
+ * the screen or the parent object (for available
+ * constants refer to nsIAccessibleCoordinateType)
+ * @param x [in] - defines the x coordinate
+ * @param y [in] - defines the y coordinate
+ */
+ void scrollToPoint(in unsigned long coordinateType, in long x, in long y);
+
+ /**
+ * Dispatches an ANNOUNCEMENT event with this accessible as target.
+ *
+ * @param announcement [in] - string to use in announcement.
+ * @param priority [in] - priority for announcement, could be
+ * nsIAccessibleAnnouncementEvent.POLITE or
+ * nsIAccessibleAnnouncementEvent.ASSERTIVE.
+ */
+ void announce(in AString announcement, in unsigned short priority);
+
+ %{C++
+ virtual mozilla::a11y::Accessible* ToInternalAccessible() const = 0;
+ %}
+
+};
+