Accessibility/Traversal
Jump to navigation
Jump to search
This page outlines a proposed core API for accessible tree traversal and document navigation.
nsIAccessibleTreeWalker
interface nsIAccessibleTreeWalker : nsISupports
{
readonly attribute nsIAccessible root;
readonly attribute nsIAccessibleFilter filter;
attribute nsIAccessible currentNode;
short setFilter(in nsIAccessibleFilter filter);
/* linear navigation */
nsIAccessible previous();
nsIAccessible next();
nsIAccessible first();
nsIAccessible last();
}
nsIAccessibleFilter
interface nsIAccessibleFilter : nsISupports
{
const short FILTER_ACCEPT = 1;
const short FILTER_REJECT = 2;
const short FILTER_SKIP = 3;
static nsIArray roles;
static nsIArray states;
short acceptAccessible(in nsIAccessible acc);
}
Retrieving and Creating Walkers
interface nsIAccessibleRetrieval : nsISupports
{
...
nsIAccessibleTreeWalker createTreeWalker(in nsIAccessible root,
in nsIAccessibleFilter filter);
}
Example Usage
Some examples of how this API would be used.
// Create filter
var LinkFilter = {
roles = [Components.interfaces.nsIAccessibleRole.ROLE_LINK]
QueryInterface: XPCOMUtils.generateQI([Components.interfaces.nsIAccessibleFilter])
}
// Create tree walker
var gAccRetrieval = Cc["@mozilla.org/accessibleRetrieval;1"]
.getService(Ci.nsIAccessibleRetrieval);
var treeWalker = gAccRetrieval.createTreeWalker(docAcc, LinkFilter);
// Walk it
docAcc.getTreeWalker().next();