Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

add arianotify draft #2211

Draft
wants to merge 3 commits into
base: main
Choose a base branch
from
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
112 changes: 112 additions & 0 deletions core-aam/index.html
Original file line number Diff line number Diff line change
Expand Up @@ -11055,6 +11055,118 @@ <h3>Special Events for Menus</h3>
</table>
</section>
</section>
<section id="mapping_algorithms">
<h2>Algorithms</h2>
<p>Some <abbr title="Application Programming Interfaces">APIs</abbr>, provide <a class="termref">methods</a> which require...</p>
<h3>ARIANotifyMixin Algorithm Mapping Tables</h3>
<h4 id="arianotifymixin-map-arianotify">ariaNotify</h4>
<p>To <code>aria notify</code> given <var>node</var>, <var>announcement</var>, <var>priority</var>, <var>interrupt</var>, and <var>id</var>:</p>
<table aria-labelledby="arianotifymixin-map-arianotify">
<tbody>
<tr>
<th>ARIA Specification</th>
<td>
<a class="method-reference" href="#arianotify"><code>aria notify</code></a>
</td>
</tr>
<tr>
<th>MSAA + IAccessible2</th>
<td></td>
</tr>
<tr>
<th><abbr title="User Interface Automation">UIA</abbr></th>
<td>
<ol>
<li>
<p>Let <var>notificationProcessing</var> be <code>null</code>.</p>
</li>
<li>
<p>
If <var>interrupt</var> is "<code>none</code>" and <var>priority</var> is "<code>none</code>" set <var>notificationProcessing</var> to <code>NotificationProcessing_All</code>.
</p>
</li>
<li>
<p>
If <var>interrupt</var> is "<code>none</code>" and <var>priority</var> is "<code>important</code>" set <var>notificationProcessing</var> to
<code>NotificationProcessing_ImportantAll</code>.
</p>
</li>
<li>
<p>
If <var>interrupt</var> is "<code>all</code>" and <var>priority</var> is "<code>none</code>" set <var>notificationProcessing</var> to
<code>NotificationProcessing_MostRecent</code>.
</p>
</li>
<li>
<p>
If <var>interrupt</var> is "<code>all</code>" and <var>priority</var> is "<code>important</code>" set <var>notificationProcessing</var> to
<code>NotificationProcessing_ImportantMostRecent</code>.
</p>
</li>
<li>
<p>
If <var>interrupt</var> is "<code>pending</code>" and <var>priority</var> is "<code>none</code>" set <var>notificationProcessing</var> to
<code>NotificationProcessing_CurrentThenMostRecent</code>.
</p>
</li>
<li>
<p>
If <var>interrupt</var> is "<code>pending</code>" and <var>priority</var> is "<code>important</code>" set <var>notificationProcessing</var> to
<code>NotificationProcessing_ImportantMostRecent</code>.
</p>
</li>
<li>
<p>Assert: <var>notificationProcessing</var> is not <code>null</code>.</p>
</li>
<li>
<p>
Call <code>UiaRaiseNotificationEvent</code> with given <var>node</var>, <code>NotificationKind_ActionCompleted</code>, <var>notificationProcessing</var>, <var>announcement</var>,
and <var>id</var>.
</p>
</li>
</ol>
</td>
</tr>
<tr>
<th><abbr title="Accessibility Toolkit">ATK</abbr>/<abbr title="Assistive Technology - Service Provider Interface">AT-SPI</abbr></th>
<td>
<ol>
<!-- TODO! -->
</ol>
</td>
</tr>
<tr>
<th><abbr title="macOS Accessibility Protocol">AX API</abbr></th>
<td>
<ol>
<li>
<p>Let <var>document</var> be <var>node</var>'s associated document.</p>
</li>
<li>
<p>Let <var>window</var> be <var>document</var>'s associated window.</p>
</li>
<li>
<p>Let <var>notification</var> be <code>NSAccessibilityAnnouncementRequestedNotification</code>.</p>
</li>
<li>
<p>Let <var>mapped_priority</var> be <code>NSAccessibilityPriorityHigh</code> if <var>priority</var> is "important", otherwise <code>NSAccessibilityPriorityMedium</code>.</p>
</li>
<li>
<p>Let <var>userInfo</var> be a <code>NSDictionary</code> with the following keys:</p>
<ol>
<li><code>NSAccessibilityAnnouncementKey</code> as <var>announcement</var></li>
<li><code>NSAccessibilityPriorityKey</code> as <var>mapped_priority</var></li>
</ol>
</li>
<li>
<p>Call <code>NSAccessibilityPostNotificationWithUserInfo</code> with given <var>window</var>, <var>notification</var>, and <var>userInfo</var>.</p>
</li>
</ol>
</td>
</tr>
</tbody>
</table>
</section>
</section>

<section>
Expand Down
31 changes: 29 additions & 2 deletions index.html
Original file line number Diff line number Diff line change
Expand Up @@ -13538,8 +13538,8 @@ <h3>Presentational Roles Conflict Resolution</h3>
</section>
</section>
<section id="idl-interface" class="normative">
<h2>IDL Interface</h2>
<p>Conforming user agents MUST implement the following IDL interface.</p>
<h2>IDL Interfaces</h2>
<p>Conforming user agents MUST implement the following IDL interfaces.</p>
<section id="ARIAMixin" class="normative" data-dfn-for="ARIAMixin" data-link-for="ARIAMixin">
<h2>Interface Mixin <dfn>ARIAMixin</dfn></h2>
<pre class="idl" data-cite="webidl">
Expand Down Expand Up @@ -13610,7 +13610,33 @@ <h2>Interface Mixin <dfn>ARIAMixin</dfn></h2>

<p class="note">In practice, this means that, e.g., the <code>role</code> IDL attribute on <code>Element</code> reflects the <code>role</code> content attribute; the <code>ariaValueMin</code> IDL attribute reflects the <pref>aria-valuemin</pref> content attribute; etc. Ambiguity clarifications (such as <code>ariaPosInSet</code>) are listed in <a href="#idl_attr_exceptions">IDL Attribute Name Notes or Exceptions</a>.</p>
</section>
<section id="ARIANotifyMixin" class="normative" data-dfn-for="ARIANotifyMixin" data-link-for="ARIANotifyMixin">
<h2>Interface Mixin <dfn>ARIANotifyMixin</dfn></h2>
<pre class="idl" data-cite="webidl">
enum AriaNotifyInterrupt { "none", "all", "pending" };
enum AriaNotifyPriority { "none", "important" };

dictionary AriaNotificationOptions {
AriaNotifyInterrupt interrupt = "none";
AriaNotifyPriority priority = "none";
DOMString notificationId = "";
};
interface mixin ARIANotifyMixin {
void ariaNotify(DOMString announcement, optional AriaNotificationOptions options = {});
};
Element includes ARIANotifyMixin;
Document includes ARIANotifyMixin;
</pre>

<p>User Agent processing for the <dfn method for=ARIANotifyMixin><code>ariaNotify(<var>announcement</var>, <var>options</var>)</code></dfn> method steps are:</p>
<ol>
<li><p>Let <var>priority</var> be <var>options</var>["<code>priority</code>"].</p></li>
<li><p>Let <var>interrupt</var> be <var>options</var>["<code>interrupt</code>"].</p></li>
<li><p>Let <var>id</var> be <var>options</var>["<code>notifyId</code>"].</p></li>
<li><p>Run the aria notify steps given <var>node</var>, <var>announcement</var>, <var>priority</var>, <var>interrupt</var>, and <var>id</var>.</p></li>
</ol>

</section>
<section id="accessibilityroleandproperties-correspondence" class="normative" data-dfn-for="ARIAMixin" data-link-for="ARIAMixin">
<h2>ARIA Attribute Correspondence</h2>
<p>The following table provides a correspondence between IDL attribute names and content attribute names, for use by <code>ARIAMixin</code>.</p>
Expand Down Expand Up @@ -13729,6 +13755,7 @@ <h2>Example IDL Attribute Usage</h2>
</section>

</section>

<section class="informative">
<h2>Security Considerations</h2>
<p>This specification introduces no new security considerations.</p>
Expand Down
Loading