Accessibility/Traversal
From MozillaWiki
This page outlines a proposed core API for accessible tree traversal and document navigation.
Contents
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();