Outline and recommendation requests: Catherine Laws, IBM
ATK recommendations: Bill Haneman
August 23, 2005: Initial draft - Cathy Laws. Some content taken from Accessible Document Navigation using AT-SPI document.
Loretta Guarino Reid (Adobe) contributed to the list of desirable document
object and landmark roles.
Introduction
Implementing ATK Interface Classes
AtkAction
AtkComponent
AtkDocument
AtkEditableText
AtkGObjectAccessible
AtkHyperlink and AtkHyperText
AtkImage
AtkNoOpObject and NoOpObject Factory
AtkObject
AtkObjectFactory
AtkRegistry
AtkRelation and AtkRelationSet
AtkSelection
AtkState and AtkStateSet
AtkStreamableContent
AtkTable
AtkText
AtkUtil
AtkValue
Collections of Containers and Objects
Performance Considerations
Notification of Document Events
Mutation events
New document events
Keyboard Navigation Considerations
User Preferences Related to Accessibility
Point of Regard Considerations
Desirable Roles for Document Objects and Navigation
Using AT-SPI/ATK interfaces, developers of assistive technologies may face difficulties trying to implement logical navigation of the accessible content and structures of complex documents for users with vision, learning, physical, and cognitive impairments. Some of the challenges include:
To show the hierarchy and structure of documents, application developers
need to expose through ATK the document elements and their characteristics
as they appear in the document hierarchy, not just as a stream of text
and associated properties. Without this, contextual information is lost.
To help application developers provide better navigational user interfaces
and hierarchical relationships for complex documents, this paper outlines
recommendations for implementing ATK interfaces which expose accessible
document content, structure, navigation, and element characteristics. Additional
recommendations may be added at a later time to address searching for accessible
content, mutation events, and new document events.
Recommendations for exposing document objects and containers using the ATK interface classes for the following document types:
See Desirable Roles for Document Objects and Navigation for a list of document objects and containter types.
Discuss how to expose access keys for interactive elements in a document.
Recommendations?
Some document types are read-only (PDF in Adobe Reader, Web) except for form controls and dynamic content controlled by scripting, while other
documents have all content as read/write (word processing). Add recommendations for exposing edit controls and dynamic content which is editable.
Recommendations?
Recommend how to expose text and image links and image map areas and their characteristics, such as the text for a hypertext link, its URL, and any associated shortcut keys.
Client-side image maps are examples of Hyperlinks that have multiple 'anchors'; each anchor has a URI and backing object, and in the case of client-side image maps, the backing objects should implement Image and Action.
Within an object implementing Hypertext there may be multiple links. These are addressable in index order, with 0 being the first hyperlink in a text block, etc.
AtkImage
Recommend how to expose images and their alternative or descriptive text
and their source filename. For example, how to expose the alt and title
attributes for HTML images, image links, maps and map areas, and image
buttons, and the long description link for an image or image link (URL).
Also, how to expose the number of areas in a map.
And how to expose the caption for a figure.
If possible, discuss how to implement empty descriptive (alt) text from
no description available (no alt attribute) from a document author.
Discuss how to expose the language of the descriptive image text.
Recommendations?
Recommendations on how to implement the name, role, description, relationships, states, locale, etc for each object in a document. See Desirable Roles for Document Objects and Navigation for a list of document objects and containter types.
Discuss focus and change signals as they relate to document navigation.
Recommendations?
Recommendations?
AtkRelation and AtkRelationSet
Recommendations for exposing labels (label elements, title attributes, etc) for single controls as well as compound controls (like combo boxes, select menus, etc).
Recommendations for exposing groups of objects and controls (like group
boxes, groupings of objects, FIELDSET and LEGEND in HTML, OPTGROUP in HTML
select menus).
Recommendations using ATK_RELATION_CONTROLLER_FOR, such as describing the result of an event handler in addition to its action.
Discuss how to expose embedded objects in a document, such as images, pictures, diagrams, Flash content, Java applets, graphs, spreadsheets, and other document content imported from a different source file and/or document types.
Discuss how to indicate that interaction with a document object can result in a pop-up window.
Recommendations for how to expose states for all interactive elements,
whether controls are enabled or not, whether elements are visible or hidden,
whether elements are in the visual area or not, and whether the state of
a control is affected by other controls in a group or container.
Recommendations?
Discuss how to expose row and column headers, table summary, table caption, number of rows and columns, current row and column number, type of table (data or layout). Data tables in HTML documents should be distinguished from layout tables by the presence of a CAPTION, TH cells, header attributes, a role=”presentation”, and/or a summary attribute.
Recommendations related to how to expose a description for a text object,
such as a title attribute for an abbreviation or any other text element.
Discuss how to expose style and font attributes.
Discuss implementing text attributes using name-value pairs to expose structure
element types such as headings and their level, and lists and their indexes
and nesting, versus the use of role attributes. See Desirable Roles for Document Objects and Navigation for a list of document objects and containter types.
Also, how to expose the number of list items within a list, the start index for an ordered list, and the type of list (ordered, unordered, simple, definition).
Discuss how to expose the locale for any element in a document.
Discuss how to define characters, words, lines, and sentences in a document,
including internationalization considerations and how document structure
can impact line definitions. A line definition may be based on a specified
number of characters, which may be the visual width of the application’s
edit/container control or the visual width of a column within a single
element.
Recommendations?
Recommendations on how to implement the Document and Collection interfaces
to allow the AT to navigate objects and containers, including all items,
interactive elements, hyperlinks, forms and form controls, headings, table
tops and within tables, images and embedded objects, elements with access
keys, frames, sections identified by a document landmark, within tree-style
widgets. See Desirable Roles for Document Objects and Navigation for a more extensive list of document objects and containter types.
Discuss how to expose document versus tab order for interactive elements
within a document using the sort parameter of the Collection interface.
Discuss ATK implementations in the application which can help to improve AT performance in response to user requests, such as how to implement the bounds for documents and containers so that the AT can limit the scope of its requests. To improve AT performance during navigation and collection of objects and their attributes, discuss any kind of streaming techniques or ways to reduce the number of API calls that the application can implement.
Recommendations on how to notify an AT when part of a document changes and where it changed.
Recommendations on notification of new documents opening, including how to handle when multiple documents like frame documents are opened almost simultaneously.
Recommendations on how to send event notifications for alerts that are not top level windows and not focusable (from Aaron Leventhal regarding Firefox).
In the absence of the following keyboard navigation, an assistive technology may provide this navigation.
The application should maintain end user preferences and features related to visual presentation and events that can benefit everyone, such as a zoom feature, meta refresh rates, style sheets and fonts, the display of images, etc.
Within a document, the point of regard (POR) is a position that references an object or element, plus a character offset to reference a more specific character or word within the object. The current POR refers to the position in a document where an AT is currently retrieving element characteristics or location information which it intends to use to create an output rendering for the end user. The input focus position in a document does not necessarily match the current POR. An application's accessibility interface and the assistive technology must share a common definition for the POR.
Recommendations on how the application should implement and maintain its point of regard, and how it communicates with the AT about the current POR.
To support the identification, interaction, and navigation of custom widgets and objects in documents, such as DHTML widgets and document landmarks on Web pages, the application needs to expose meaningful roles, values, and states for every object in a document through the accessibility API (ATK). In XHTML 2.0, Web authors will be able to identify new widgets and document landmarks using the role attribute. Document landmarks include main content, secondary content like a portlet, navigation bars, content information like footnotes and copyright statements, advertisement and logo banners, and notes. However, even in today's Web, word processing, PDF, spreadsheet, and presentation documents, there are custom widgets, document landmarks, and text objects which the application developers need to identify for an AT using an extensible role value.
Below is an initial list of document object and landmark roles that application
developers should be able to implement for AT identification and navigation.
In addition to implementing these objects and landmarks as roles, application
developers need to implement characteristics for each, such as a name,
description, state, URL, index or level, number of contained elements,
relationships, etc. Some are already standard roles, others would be new
extensible roles.
Document
Preface
Appendix
Epilogue
Part
Article
Section
Division
BlockQuote
Caption
Table of contents
Table of figures
Table of tables
Index
Footnote
Endnote
Sidebar
Paragraph
Table, Table cell
List
Figure
Formula
Equation
Heading
Reference
Bibliography
Credits
Link
Example
Quotation
Instructions
Contact Information
Return Address
Salutation
Signature
Date
Form
Form Section or Subsection
Interactive field types
Form controls (radio button, check box, text field, text area, password
field, combo box, select list, multi-select)
Advertisement
Comments
Multi-media content (sound clips, movies, etc).
Abbreviation
Image, Graph, Chart, Diagram
Spreadsheet
Calendar
Menu
Tabbed section
Map, Map areas
Bookmark
XHTML 2.0 sections identified through role attribute