Compare Revisions

WAI ARIA Live Region Library

Revision 186856:

Revision 186856 by Aaronlev on

Revision 186857:

Revision 186857 by Parente on

Title:
WAI ARIA Live Region Library
WAI ARIA Live Region Library
Slug:
AJAX/WAI_ARIA_Live_Region_Library
AJAX/WAI_ARIA_Live_Region_Library
Content:

Revision 186856
Revision 186857
nn7    <h2 name="Purpose">
8      Purpose
9    </h2>
n8      Here are some rough ideas for a live region library, which n11      To develop an expert system recommending actions an AT migh
>would manage the queue.>t take in response to a queue of live region changes over time.
nn13    <h2 name="Proposed_API">
14      Proposed API
15    </h2>
n11      Settings:n17      Here are some rough ideas for a live region library, which 
 >would manage the queue. For the moment, I'd like to assume the li
 >brary is written in Python for the sake of syntax.
nn19    <h3 name="Processing_a_change">
20      Processing a change
21    </h3>
22    <pre>
23def processEvent(node, event_type):
24  '''
25  Processes a live region event by adding a recommendation to the
 > queue for later use by the AT.
26 
27  @param node: A hashable object representing the live region
28  @type node: hashable
29  @param event_type: Constant representing the kind of change: no
 >de addition, node removal
30  or text insert/delete
31  @type event_type: integer
32  '''
33</pre>
34    <h3 name="Getting_a_recommendation">
35      Getting a recommendation
36    </h3>
37    <pre>
38def getNextRecommendation():
39  '''
40  Retrieves the next recommendation from the queue.
41 
42  @return: Recommendation of how to announce a live region change
43  @rtype: Recommendation
44  '''
45</pre>
46    <pre>
47def clearQueue():
48  '''
49  Clears the queue of recommendations.
50  '''
51</pre>
52    <h3 name="Accessibility_callbacks">
53      Accessibility callbacks
54    </h3>
55    <p>
56      Allows the AT to register methods the library should call t
 >o get information about accessibles. These callbacks allow the li
 >brary to be cross-platform.
57    </p>
58    <pre>
59def registerGetParent(func):
60  '''
61  Registers a callback for getting the parent of a given node.
62  
63  @param func: Function that returns a parent node of the given n
 >ode.
64  @type func: callable
65  '''
66</pre>
n14      <li>registerGlobalSetting() // Call when user changes a glon68      <li>registerGetControlsRelation(func)
>bal setting or a new page loads with per-page settings 
n16      <li>registerNodeSetting( AccessibleNode node, settings) // n70      <li>registerGetLabelledByRelation(func)
>When user sets a per-liveregion setting 
n18      <li>clearNodeSettings(AccessibleNode node, settings) // Clen72      <li>registerGetDescribedByRelation(func)
>ar settings -- use when a new page loads to start from scratch 
73      </li>
74      <li>registerGetLiveRegionAttrsProperties()
75      </li>
76      <li>
77        <b>What else?</b>
nn80    <h3 name="Rude_change_callbacks">
81      Rude change callbacks
82    </h3>
n22      Informing the library of a change:n84      Original spec by Aaron. <b>But don't the rude changes get p
 >ushed to the library via the processEvent method anyways? Couldn'
 >t the return value on that method indicate whether getNextRecomme
 >ndation should be called immediately or not?</b>
23    </p>
24    <ul>
25      <li>changeHasOccured(boolean show, AccessibleNode node)
26      </li>
27    </ul>
28    <p>
29      Providing tree walking mechanism (allows the library to be 
>cross-platform): 
30    </p>
31    <ul>
32      <li>registerGetParent()
33      </li>
34      <li>registerGetControlsRelation()
35      </li>
36      <li>...
37      </li>
38    </ul>
39    <p>
40      Getting next region to present from queue
41    </p>
42    <ul>
43      <li>pullNextRegionFromQueue() // Call when user activity ha
>s paused, and it's okay to receive a region for presenting to the 
> user 
44      </li>
45      <li>clearRegionQueue()
46      </li>
47    </ul>
48    <p>
49      Pushing of rude changes
tt92    <h3 name="Settings">
93      Settings
94    </h3>
95    <pre>
96def setGlobalSettings(settings):
97  '''
98  Updates settings for all live regions, either on the current pa
 >ge or across pages.
99 
100  @param settings: Name/value setting pairs. Either all settings 
 >or a subset to update.
101  @type settings: dictionary
102  '''
103</pre>
104    <pre>
105def setNodeSettings(node, settings):
106  '''
107  Updates settings for a particular live region. Any settings not
 > defined here fall
108  back to using the global equivalents. Setting any particular se
 >tting name to value
109  None removes that setting from this node, and forces it to use 
 >the global value for
110  the setting.
111 
112  @param node: A hashable object representing the live region
113  @type node: hashable
114  @param settings: Name/value setting pairs. Either all settings 
 >or a subset to update.
115  @type settings: dictionary
116  '''
117</pre>
118    <pre>
119def clearNodeSettings(node):
120  '''
121  Forces the particular live region to use the global settings.
122 
123  @param node: A hashable object representing the live region
124  @type node: hashable
125  @param settings: Name/value setting pairs. Either all settings 
 >or a subset to update.
126  @type settings: dictionary
127  '''
128</pre>
129    <p>
130      <b>Probably need getters too.</b>
131    </p>
132    <h2 name="Recommendation_objects">
133      Recommendation objects
134    </h2>
135    <pre>
136class Recommendation(object):
137  '''
138  @ivar event_type: Type of event that triggered the recommendati
 >on
139  @type event_type: integer
140  @ivar node: Object the recommendation concerns
141  @type node: hashable
142  @ivar suggested_text: Suggested text to announce
143  @type suggested_text: string
144  @ivar all_text: All text in the live region
145  @type all_text: string
146  '''
147</pre>
148    <p>
149      <b>What else?</b>
150    </p>

Back to History