Accessibility/Comparisons:States: Difference between revisions

From MozillaWiki
Jump to navigation Jump to search
(updated per a11y newsgroup discussion)
Line 24: Line 24:
       <th>Closest UA Attribute(s) (NSAccessibility*Attribute)</th>
       <th>Closest UA Attribute(s) (NSAccessibility*Attribute)</th>
       <th>Description</th>
       <th>Description</th>
    </tr>
    <tr class="maybe">
      <td>ANIMATED</td>
      <td>ANIMATED (proposed) or add custom state</td>
      <td>Image + custom description?</td>
      <td>Object's visual representation is changing or moving
rapidly; it is dynamic not static. This state may be applied to an
object during an animated 'effect' and be removed from the object once
its visual representation becomes static. Note:
Some applications, notably content viewers, may not be able to detect
all kinds of animated content. Therefore the absence of this state
should not be taken as definitive evidence that the object's visual
representation is static; this state is advisory.</td>
     </tr>
     </tr>
     <tr>
     <tr>
Line 46: Line 33:
they are in a state of transition. </td>
they are in a state of transition. </td>
     </tr>
     </tr>
     <tr>
     <tr class="OK">
       <td class="OK">CHECKED</td>
       <td>CHECKED</td>
       <td class="OK">CHECKED</td>
       <td>CHECKED</td>
       <td class="OK">Value attribute is "1"</td>
       <td>Value attribute is "1"</td>
       <td class="OK">Checkbox, radio button, or toggle
       <td>Checkbox, radio button, or toggle
button is checked.</td>
button is checked.</td>
     </tr>
     </tr>
     <tr>
     <tr class="OK">
       <td class="OK">COLLAPSED</td>
       <td>COLLAPSED</td>
       <td class="OK">!EXPANDED, COLLAPSED</td>
       <td>!EXPANDED, COLLAPSED</td>
       <td class="OK">Disclosing (for tables/outliners),
       <td>Disclosing (for tables/outliners),
ShowMenu action for
ShowMenu action for
popupsbuttons/menus.</td>
popupsbuttons/menus.</td>
       <td class="OK">Expandable objects that provide
       <td>Expandable objects that provide
progressive disclosure,
progressive disclosure,
like a tree list or drop-down list is currently not expanded (i.e. the
like a tree list or drop-down list is currently not expanded (i.e. the
children are not showing or visible).</td>
children are not showing or visible).</td>
     </tr>
     </tr>
     <tr>
     <tr class="OK">
       <td class="OK">DEFAULT</td>
       <td>DEFAULT</td>
       <td class="OK">Use a text attribute or add a custom
       <td>Use a text attribute or add a custom
state?</td>
state?</td>
       <td class="OK">DefaultButton</td>
       <td>DefaultButton</td>
       <td class="OK">Default button or menu item.</td>
       <td>Default button or menu item.</td>
     </tr>
     </tr>
     <tr class="OK">
     <tr class="OK">
Line 78: Line 65:
progressive disclosure, like trees and drop-down lists are currently
progressive disclosure, like trees and drop-down lists are currently
showing and visible.</td>
showing and visible.</td>
    </tr>
    <tr class="irrelevant">
      <td>EXTSELECTABLE</td>
      <td>add custom state</td>
      <td>Needed?</td>
      <td>Object can extend its selection.</td>
    </tr>
    <tr>
      <td>FLOATING</td>
      <td>add custom state</td>
      <td></td>
      <td>Object is not clipped to the boundary of the parent
(i.e. it does not auto-move with the parent).</td>
     </tr>
     </tr>
     <tr class="OK">
     <tr class="OK">
Line 115: Line 89:
       <td>Object has a popup, but in ATK the popup children need
       <td>Object has a popup, but in ATK the popup children need
to establish the relationship with the parent. </td>
to establish the relationship with the parent. </td>
    </tr>
    <tr class="irrelevant">
      <td>HOTTRACKED</td>
      <td>add custom state</td>
      <td>Really needed?</td>
      <td>Object's appearance has changed for a mouseover.</td>
     </tr>
     </tr>
     <tr class="maybe">
     <tr class="maybe">
Line 126: Line 94:
       <td>!VISIBLE</td>
       <td>!VISIBLE</td>
       <td>Parent can tell if this object is in the
       <td>Parent can tell if this object is in the
VisibleChildren attr</td>
VisibleChildren attr. We can also see if the NSView is visible.</td>
       <td>The object is hidden, whether on-screen or off-screen. </td>
       <td>The object is hidden, whether on-screen or off-screen. </td>
     </tr>
     </tr>
     <tr>
     <tr class="OK">
       <td class="OK">LINKED</td>
       <td>LINKED</td>
       <td class="OK">Implement AtkHyperlink and
       <td >Implement AtkHyperlink and
AtkHypertext</td>
AtkHypertext</td>
       <td class="OK">LinkedUIElements (objects associated
       <td>LinkedUIElements (objects associated
with each other), TextLink role/attribute for text links.</td>
with each other), TextLink role/attribute for text links, and WebKit has a Link extension role</td>
       <td class="OK">The object links to another object. </td>
       <td>The object links to another object. </td>
     </tr>
     </tr>
     <tr>
     <tr class="OK">
       <td>MARQUEED</td>
       <td>MIXED</td>
      <td>ANIMATED (proposed)</td>
       <td>INDETERMINATE or
      <td>Same as animated</td>
      <td>The object is constantly changing and fleeting across
the screen.</td>
    </tr>
    <tr>
      <td class="OK">MIXED</td>
       <td class="OK">INDETERMINATE or
add custom state</td>
add custom state</td>
       <td class="OK">Checkbox's value attribute is set to
       <td>Checkbox's value attribute is set to
"2"</td>
"2"</td>
       <td class="OK">A checkbox object is in a state other
       <td>A checkbox object is in a state other
than checked or
than checked or
not checked, such as a tr-state checkbox might be. </td>
not checked, such as a tri-state checkbox might be. </td>
     </tr>
     </tr>
     <tr class="irrelevant">
     <tr class="OK">
      <td>MOVEABLE</td>
      <td>add custom state</td>
      <td></td>
      <td>Object can be moved or dragged around the screen. </td>
    </tr>
    <tr class="maybe">
       <td>MULTISELECTABLE</td>
       <td>MULTISELECTABLE</td>
       <td>MULTISELECTABLE</td>
       <td>MULTISELECTABLE</td>
       <td>has a selectedchildren attr?</td>
       <td>There should be a property of the outliner/table view to see if it supports this.</td>
       <td>Object allows more than one of its children to be
       <td>Object allows more than one of its children to be
selected at the same time. </td>
selected at the same time. </td>
     </tr>
     </tr>
    <tr>
     <tr class="OK">
      <td>NORMAL</td>
      <td>ACTIVE</td>
      <td>Same as focused?</td>
      <td>A window is currently the active window, or is an
active sub-element within a container or table. Includes windows,
dialogs, frames, etc. In addition, this state is used to indicate the
currently active child of a component such as a list, table, or tree.
For example, the active child of a list is the child that is drawn with
a rectangle around it. </td>
    </tr>
     <tr class="maybe">
       <td>OFFSCREEN</td>
       <td>OFFSCREEN</td>
       <td>!SHOWING</td>
       <td>!SHOWING</td>
       <td>Check if we're part of the parent's VisibleChildren
       <td>Same as INVISIBLE above</td>
attr?</td>
       <td>An object is currently not visible and not on-screen. </td>
       <td>An object is currently not visible and not on-screen. </td>
     </tr>
     </tr>
     <tr class="irrelevant">
     <tr class="OK">
       <td>PRESSED</td>
       <td>PRESSED</td>
       <td>PRESSED</td>
       <td>PRESSED</td>
       <td>Really needed?</td>
       <td>Use non-UA API to check the value of a Toggle or OnOffButton</td>
       <td>Object is currently pressed down. </td>
       <td>Object is currently pressed down. </td>
     </tr>
     </tr>
Line 219: Line 162:
children to be selected, and this child is selected. </td>
children to be selected, and this child is selected. </td>
     </tr>
     </tr>
    <tr>
     <tr class="OK">
      <td>SELFVOICING</td>
      <td>add custom state</td>
      <td></td>
      <td>Object is self-voiced by the application, so an AT
should not speak this object. </td>
    </tr>
     <tr class="maybe">
       <td>SIZEABLE</td>
       <td>SIZEABLE</td>
       <td>RESIZABLE</td>
       <td>RESIZABLE</td>
Line 244: Line 180:
       <td>UNAVAILABLE</td>
       <td>UNAVAILABLE</td>
       <td>!ENABLED</td>
       <td>!ENABLED</td>
       <td>Same as unfocused or !enabled</td>
       <td>Same as !enabled</td>
       <td>Object is grayed out and not available at this time. </td>
       <td>Object is grayed out and not available at this time. </td>
     </tr>
     </tr>
    <tr class="irrelevant">
<tr>
      <td></td>
  <td></td>
      <td>ARMED</td>
  <td>DEFUNCT</td>
      <td>What's the difference from pressed?
  <td></td>
There's an UA action "press" that will execute the action; does not
  <td>User interface object corresponding to this object no
actually push down the button until the user says "stop". :-)</td>
longer exists. Important for ATs that may hold on to things in our DOM tree, if it has changed</td>
      <td>The object is armed. Usually used on buttons that have
</tr>
been pressed but not yet released, and the mouse pointer is still over
the button. </td>
    </tr>
    <tr class="irrelevant">
      <td></td>
      <td>DEFUNCT</td>
      <td>Really needed?</td>
      <td>User interface object corresponding to this object no
longer exists. </td>
    </tr>
     <tr class="OK">
     <tr class="OK">
       <td></td>
       <td></td>
Line 281: Line 207:
       <td></td>
       <td></td>
       <td>EXPANDABLE</td>
       <td>EXPANDABLE</td>
       <td>Same as collapsed, and that is has children?</td>
       <td>Use Disclosing attribute</td>
       <td>The children items of this object that provide
       <td>The children items of this object that provide
progressive disclosure, like trees and drop-down lists, can be showing
progressive disclosure, like trees and drop-down lists, can be showing
Line 289: Line 215:
       <td></td>
       <td></td>
       <td>HAS_TOOLTIP</td>
       <td>HAS_TOOLTIP</td>
       <td>There's a Help attr, or Description attr?</td>
       <td>There's a Help attr. Otherwise some other Cocoa API should be able to help us probably.</td>
       <td>Object has an associated tooltip.</td>
       <td>Object has an associated tooltip.</td>
     </tr>
     </tr>
Line 305: Line 231:
       <td>Object is minimized and represented only by an icon. </td>
       <td>Object is minimized and represented only by an icon. </td>
     </tr>
     </tr>
     <tr class="irrelevant">
     <tr>
       <td></td>
       <td></td>
       <td>INVALID</td>
       <td>INVALID</td>
       <td>Really needed?</td>
       <td></td>
       <td>Object is in an invalid state. </td>
       <td>Object is in an invalid state. Important for XForms, for validating values entered.</td>
     </tr>
     </tr>
     <tr>
     <tr>
       <td></td>
       <td></td>
       <td>INVALID_ENTRY (proposed)</td>
       <td>INVALID_ENTRY (proposed)</td>
       <td>There's a "AllowedValues" attribute array...</td>
       <td></td>
       <td>This object has indicated an error condition due to
       <td>This object has indicated an error condition due to
failure of input validation. For instance, a form control may acquire
failure of input validation. For instance, a form control may acquire
this state in response to invalid or malformed user input.</td>
this state in response to invalid or malformed user input.</td>
     </tr>
     </tr>
     <tr>
     <tr class="maybe">
       <td></td>
       <td></td>
       <td>MANAGES_DESCENDANTS</td>
       <td>MANAGES_DESCENDANTS</td>
Line 330: Line 256:
subcomponents directly. </td>
subcomponents directly. </td>
     </tr>
     </tr>
     <tr class="OK maybe">
     <tr>
       <td></td>
       <td></td>
       <td>MODAL</td>
       <td>MODAL</td>
       <td>Modal (for windows)</td>
       <td></td>
       <td>Something must be done with this object before the user
       <td>Something must be done with this object before the user
can interact with an object in a different window.</td>
can interact with an object in a different window.</td>
Line 342: Line 268:
       <td>is a TextView role</td>
       <td>is a TextView role</td>
       <td>Text object can contain multiple lines of text. </td>
       <td>Text object can contain multiple lines of text. </td>
    </tr>
    <tr>
      <td></td>
      <td>OPAQUE</td>
      <td></td>
      <td>Object paints every pixel within its rectangular
region. A non-opaque component paints only some of its pixels, allowing
the pixels underneath it to "show through". A component that does not
fully paint its pixels therefore provides a degree of transparency. </td>
     </tr>
     </tr>
     <tr>
     <tr>
Line 370: Line 287:
While similar, text selection and subelement selection are distinct
While similar, text selection and subelement selection are distinct
operations.</td>
operations.</td>
    </tr>
    <tr>
      <td></td>
      <td>SENSITIVE</td>
      <td></td>
      <td>Object can be interactive, although it may currently be
read-only or not enabled (grayed out). STATE_SENSITIVE usually
accompanies STATE_ENABLED for user-actionable controls, but may be
found in the absence of STATE_ENABLED if the current visible state of
the control is "disconnected" from the application state. In such
cases, direct user interaction can often result in the object gaining
STATE_SENSITIVE, for instance if a user makes an explicit selection
using an object whose current state is ambiguous or undefined.</td>
     </tr>
     </tr>
     <tr>
     <tr>
Line 395: Line 299:
       <td>textfield role</td>
       <td>textfield role</td>
       <td>Text object can only contain a single line of text. </td>
       <td>Text object can only contain a single line of text. </td>
    </tr>
    <tr>
      <td></td>
      <td>STALE</td>
      <td></td>
      <td>Index associated with this object has changed since the
user accessed the object. The information returned for this object may
no longer be synchronized with the application state. </td>
    </tr>
    <tr>
      <td></td>
      <td>SUPPORTS_TYPEAHEAD (proposed)</td>
      <td></td>
      <td>Object implements some form of
&uml;typeahead&uml; or pre-selection behavior whereby entering
the first character of one or more sub-elements causes those elements
to scroll into view or become selected. Subsequent character input may
narrow the selection further as long as one or more sub-elements match
the string. This state is normally only useful and encountered on
objects that implement [http://gnome.org/%7Ebillh/at-spi-new-idl/html/html/interfaceAccessibility_1_1Selection.html Selection].
In some cases the typeahead behavior may result in full or partial
&uml;completion&uml; of the data in the input field, in which
case these input events may trigger text-changed events from the source.</td>
    </tr>
    <tr>
      <td></td>
      <td>TRANSIENT</td>
      <td></td>
      <td>Object is changing or moving rapidly. An assistive
technology should not add a property change listener to an object with
transient state, as that object will never generate any events.
Transient objects are typically created to answer ATK accessibility
method queries, but otherwise do not remain linked to the underlying
object (for example, those objects underneath lists, tables, and trees,
where only one actual UI component does shared rendering duty for all
of the data objects underneath the actual list/table/tree elements). </td>
    </tr>
    <tr>
      <td></td>
      <td>TRUNCATED</td>
      <td></td>
      <td>Object is truncated, such as a numerical value in a
spreadsheet cell. </td>
     </tr>
     </tr>
     <tr class="OK">
     <tr class="OK">
Line 445: Line 306:
       <td>Orientation of this object is vertical. </td>
       <td>Orientation of this object is vertical. </td>
     </tr>
     </tr>
     <tr>
     <tr class="maybe">
       <td></td>
       <td></td>
       <td>VISIBLE</td>
       <td>VISIBLE</td>
       <td></td>
       <td>For widgets, we can check if the NSView is visible.</td>
       <td>Object is not hidden but may be off-screen.
       <td>Object is not hidden but may be off-screen.
STATE_VISIBLE is no guarantee that the object is actually unobscured on
STATE_VISIBLE is no guarantee that the object is actually unobscured on

Revision as of 14:39, 18 May 2006

Accessibility States Comparison

This is a comparison between the states available in each architecture.

Mac comparison in process

Please note, the colors represent the level of compatibility UA has with the rest. This is an aid for the ongoing Mac Accessibility effort.

Please leave comments to the newsgroup. Thanks! --HakanW 12:27, 9 May 2006 (PDT)

Color legend

Color legend
UA seems compatible
UA probably compatible
Seems irrelevant?
Not yet done / Undecided (white).

Comparison Table

MSAA 1.3 State (STATE_SYSTEM_*) Closest ATK State(s) (ATK_STATE_*) Closest UA Attribute(s) (NSAccessibility*Attribute) Description
BUSY BUSY Control cannot accept input at this time. Usually used

on objects such as progress bars, sliders, or scroll bars to indicate

they are in a state of transition.
CHECKED CHECKED Value attribute is "1" Checkbox, radio button, or toggle button is checked.
COLLAPSED !EXPANDED, COLLAPSED Disclosing (for tables/outliners),

ShowMenu action for

popupsbuttons/menus.
Expandable objects that provide

progressive disclosure, like a tree list or drop-down list is currently not expanded (i.e. the

children are not showing or visible).
DEFAULT Use a text attribute or add a custom state? DefaultButton Default button or menu item.
EXPANDED EXPANDED Expanded The children items of expandable objects that provide

progressive disclosure, like trees and drop-down lists are currently

showing and visible.
FOCUSABLE FOCUSABLE Check if the focused attribute is settable Object can accept keyboard focus, which means all

events resulting from typing on the keyboard will normally be passed to

it when it has focus.
FOCUSED FOCUSED Focused Object currently has the keyboard focus.
HASPOPUP Use ATK_RELATION_POPUP_FOR to point to

the parent of the popup. Would ATK_STATE_MANAGES_DESCENDANTS

apply?
The object supports the ShowMenu action Object has a popup, but in ATK the popup children need to establish the relationship with the parent.
INVISIBLE !VISIBLE Parent can tell if this object is in the VisibleChildren attr. We can also see if the NSView is visible. The object is hidden, whether on-screen or off-screen.
LINKED Implement AtkHyperlink and AtkHypertext LinkedUIElements (objects associated with each other), TextLink role/attribute for text links, and WebKit has a Link extension role The object links to another object.
MIXED INDETERMINATE or add custom state Checkbox's value attribute is set to "2" A checkbox object is in a state other

than checked or

not checked, such as a tri-state checkbox might be.
MULTISELECTABLE MULTISELECTABLE There should be a property of the outliner/table view to see if it supports this. Object allows more than one of its children to be selected at the same time.
OFFSCREEN !SHOWING Same as INVISIBLE above An object is currently not visible and not on-screen.
PRESSED PRESSED Use non-UA API to check the value of a Toggle or OnOffButton Object is currently pressed down.
PROTECTED Use ATK_PASSWORD_TEXT as the role See the SecureTextField role Object is a password field.
READONLY !EDITABLE & SENSITIVE Object is a StaticText role, or TextField not focused, etc. Also, if the value attr is not settable... Object is interactive (sensitive) but the contents currently cannot be edited (changed) by the user.
SELECTABLE SELECTABLE Has a settable Selected attr Object is the child of an object that allows its children to be selected, and this child is one that can be selected.
SELECTED SELECTED Selected, and SelectedChildren attr Object is the child of an object that allows its children to be selected, and this child is selected.
SIZEABLE RESIZABLE For windows, there's a GrowArea role for the part where you can resize it. The size of the object can be changed (i.e. it is not fixed.)
TRAVERSED Use a text attribute or add a custom state? The link object was traversed (visited).
UNAVAILABLE !ENABLED Same as !enabled Object is grayed out and not available at this time.
DEFUNCT User interface object corresponding to this object no longer exists. Important for ATs that may hold on to things in our DOM tree, if it has changed
EDITABLE For text: StaticText role vs Textfield/textarea roles. Also whether the "value" attribute is settable. The contents of this object can change.
ENABLED Enabled Object is not grayed out and can be interacted with if sensitive.
EXPANDABLE Use Disclosing attribute The children items of this object that provide

progressive disclosure, like trees and drop-down lists, can be showing

and visible (expanded) versus hidden (collapsed).
HAS_TOOLTIP There's a Help attr. Otherwise some other Cocoa API should be able to help us probably. Object has an associated tooltip.
HORIZONTAL Get from Orientation attribute of widget Orientation of this object is horizontal.
ICONIFIED There's a WindowMiniaturized notification for when a window is minimized. Object is minimized and represented only by an icon.
INVALID Object is in an invalid state. Important for XForms, for validating values entered.
INVALID_ENTRY (proposed) This object has indicated an error condition due to

failure of input validation. For instance, a form control may acquire

this state in response to invalid or malformed user input.
MANAGES_DESCENDANTS Indicates that "active-descendant-changed" event is

sent when children become 'active' (i.e. are selected or navigated to onscreen). Typically used for trees and tables that have a large number of subcomponents and where the objects are created only when needed and otherwise remain virtual. The application should not manage the

subcomponents directly.
MODAL Something must be done with this object before the user can interact with an object in a different window.
MULTI_LINE is a TextView role Text object can contain multiple lines of text.
REQUIRED Explicit user interaction with this object is required by the user interface.
SELECTABLE_TEXT (proposed) SelectedText attr exists in textviews and textfields. Object supports text selection. It should only be

exposed on objects which implement the Text interface, in order to distinguish this state from STATE_SELECTABLE, which infers that the object is a selectable child of an object which implements Selection. While similar, text selection and subelement selection are distinct

operations.
SHOWING same as visible? Object is visible and on-screen.
SINGLE_LINE textfield role Text object can only contain a single line of text.
VERTICAL Orientation attr Orientation of this object is vertical.
VISIBLE For widgets, we can check if the NSView is visible. Object is not hidden but may be off-screen.

STATE_VISIBLE is no guarantee that the object is actually unobscured on the screen, only that it is 'potentially' visible, barring obstruction, being scrolled or clipped out of the field of view, or having an ancestor container that has not yet made visible. A widget is potentially onscreen if it has both STATE_VISIBLE and STATE_SHOWING. The absence of STATE_VISIBLE and STATE_SHOWING is semantically

equivalent to saying that an object is 'hidden'.