WAI: Strategies, guidelines, resources to make the Web accessible to people with disabilities
October, 2008
This document describes initial test results for Accessibility Supported Uses of Microsoft Silverlight 2.0. These results are not complete and this document is a draft. It has been provided to the WCAG working group as an example of how a vendor might document the AT support of a new technology, as part of the WCAG 2.0 implementation package. This document also lists the titles of several techniques that could be used to provide accessible content with Silverlight 2.0.
Silverlight 2.0 was designed to provide accessibility support using the User Interface Automation API. This API is available natively on Windows Vista, and can be installed on earlier versions of Windows as part of .Net Framework 3.5. Bridges are available to Microsoft Active Accessibility (MSAA), which is an earlier Windows Accessibility API, and to Linux ATK. AT supporting those APIs should work with Silverlight.
Testing was done against an interactive application designed to exercise functionality that is difficult to make accessible in HTML and to demonstrate Level A and AA WCAG 2.0 requirements. A separate application was built to demonstrate Multimedia equivalents including captions, audio description and American Sign Language translation. Testing was also done against the set of controls that ships with Silverlight 2.0.
During initial development, testing was done using the UIA Verify tool to verify that information was being properly exposed to UIA, and with the Inspect32 tool to verify that information was being passed from UIA to MSAA correctly via the Windows UIA to MSAA Bridge.
Once we were confident that the information was exposed as expected via the APIs, testing was done on Windows Vista and XP with several Microsoft Active Accessibility based AT, and on Windows Vista using its built in accessibility features which rely on UIA. AT tested included: JAWS 9, NVDA, Windows Vista Narrator, Windows Vista Magnifier, and Windows Vista Speech. Testing was also done to ensure that Silverlight applications could be operated from the keyboard without assistive technology. This document lists 4 permutations, as needed for WCAG 2.0 Candidate Recommendation completion.
Information including name, role, value and state was exposed to both UIA and MSAA AT for most controls. It was possible to operate the UI of most controls from the keyboard in every permutation we tested.
In all the screen-readers we tried, non-focusable text areas and images were not read. It is fairly easy for the Silverlight application developer to work around this by making all text areas focusable and putting them in the tab sequence. Assistive Technology vendors can also eliminate this problem by implementing text-handling features for Silverlight controls as they do for other types of applications. These non-focusable elements are listed as partial support.
Windows XP with .Net Framework 3.5, JAWS 9, Internet Explorer 7
Add this text to the FsDomSrv.ini file:
[MS Silverlight Embedded in Internet Explorer using OBJECT Tag with
type]
DLLName=SDomNodeMSAA
; TagNameMatch | ParamAndValueMatch
MappingFlags=96
Param=application/x-silverlight-2
TagName=OBJECT
StartString=Silverlight application start
EndString=Silverlight
application end
ImplementationFlags=7
InteractionModeFlags=3
Windows Vista, NVDA, FireFox 2.0
Success Criteria |
Technique |
Use |
Permutation 1: Windows XP*, Internet Explorer 7, JAWS 9 |
Permutation 2: Windows Vista, Firefox 2.0, NVDA |
Permutation 3: Windows Vista, Internet Explorer 8, Windows Narrator |
Permutation 4: Windows Vista, Firefox, Windows Magnifier |
---|---|---|---|---|---|---|
1.1.1 |
SL 1 : Image equivalent |
<Image Automation |
Partial |
Partial |
Partial |
n/a |
1.3.1 |
SL2: Grouping Elements |
stackpanel |
Supported |
Supported | Supported | Supported |
1.3.1 |
SL2: Grouping Elements |
Grid |
Supported |
Supported | Supported | Supported |
1.3.1 |
SL2: Grouping Elements |
Items Control |
Supported |
Supported |
Supported |
Supported |
1.3.1 |
SL3: User Controls |
User control dialog |
Supported |
Supported |
Supported |
Supported |
1.3.2 |
SL4: XAML Order |
Placing elements in XAML order |
Supported |
Supported |
Supported |
n/a |
1.3.2 |
SL5: custom reading order |
Automation |
Supported |
Supported |
Supported |
n/a |
2.1.1 |
SL7: using built in controls |
button |
Supported |
Supported |
Supported |
Supported |
2.1.1 |
SL7: using built in controls |
checkbox |
Supported |
Supported |
Supported |
Supported |
2.1.1 | SL7: using built in controls | Calendar | Partial | Partial | Partial | not supported |
2.1.1 |
SL7: using built in controls |
combobox |
Partial |
Partial |
Supported |
Supported |
2.1.1 | SL7: using built in controls | comboboxitem | Partial | Partial | Supported | Supported |
2.1.1 |
SL7: using built in controls |
hyperlink Button |
Supported |
Supported |
Supported |
Supported |
2.1.1 |
SL7: using built in controls |
password box |
Supported |
Supported |
Supported |
Partial |
2.1.1 |
SL7: using built in controls |
radio button |
Supported |
Supported |
Supported |
Supported |
2.1.1 |
SL7: using built in controls |
textblock |
Partial |
Partial |
Partial |
not supported |
2.1.1 |
SL7: using built in controls |
textbox |
Supported |
Supported |
Supported |
Supported |
2.1.1 |
SL7: using built in controls |
Toggle button |
Supported |
Supported | Supported |
Supported |
2.1.1 |
SL8: inheriting from an existing control |
Inheriting keyboard behavior |
Supported |
Supported |
Supported |
Supported |
2.1.1 |
SL9: custom controls |
AutomationPeer |
Supported |
Supported |
Supported |
Supported |
2.1.1 | SL3: user controls | scoping keyboard behavior to a user control | Supported | Supported | Supported | Supported |
2.4.2 |
SL15: page title in HTML |
Html <title> |
Supported |
Supported |
Supported |
n/a |
2.4.3 |
SL4: XAML Order |
placing elements in order in the XAML |
Supported |
Supported |
Supported |
n/a |
2.4.3 |
SL17: tab Navigation |
using the tabNavigation attribute |
Supported |
Supported |
Supported |
n/a |
4.1.2 |
SL7: using built in controls |
button |
Supported |
Supported |
Supported |
n/a |
4.1.2 |
SL7: using built in controls |
checkbox |
Supported |
Supported |
Supported |
n/a |
4.1.2 |
SL7: using built in controls |
combobox |
partial |
Partial |
Supported |
n/a |
4.1.2 | SL7: using built in controls | comboboxitem | partial | Partial | Supported | n/a |
4.1.2 |
SL7: using built in controls |
hyperlink Button |
Supported |
Supported |
Supported |
n/a |
4.1.2 |
SL7: using built in controls |
password box |
Supported |
Supported |
Supported |
n/a |
4.1.2 |
SL7: using built in controls |
radio button |
Supported |
Supported |
Supported |
n/a |
4.1.2 |
SL7: using built in controls |
textblock |
Partial |
Partial |
Partial |
n/a |
4.1.2 |
SL7: using built in controls |
textbox |
Supported |
Supported |
Supported |
n/a |
4.1.2 |
SL8: Inheriting from an existing control |
Inheriting API support |
Supported |
Supported |
Supported |
n/a |
4.1.2 |
SL9: custom controls |
Using ApplicationPeer |
Supported |
Supported |
Supported |
n/a |
4.1.2 |
SL3: User controls |
reuse of objects in user controls |
Supported |
Supported |
Supported |
n/a |
Most AA success criteria deal with direct accessibility and do not rely on AT support.
Success Criteria |
Technique |
Use |
Permutation 1: Windows XP*, Internet Explorer 7, JAWS 9 |
Permutation 2: Windows Vista, Firefox 2.0, NVDA |
Permutation 3: Windows Vista, Internet Explorer 8, Windows Narrator |
Permutation 4: Windows Vista, Firefox, Windows Magnifier |
---|---|---|---|---|---|---|
3.1.2 |
SL26: language attribute |
*UIA support on Windows XP requires .Net Framework 3.5, which can be downloaded for free from Microsoft at the following URL: Download details- .NET Framework 3.5.
<Image AutomationProperties.Name="text equivalent">
SL USE: 1 <Image AutomationProperties.Name="text equivalent">
Image alternatives are exposed to MSAA and UIA. Currently, the AT we tested can only interact with focusable elements in Silverlight.
Example 1: Creating a Dialog with a user control.
This is natively supported and does not rely on AT
Not AT dependent, as long as it is used in conjunction with one of the SL techniques for 4.1.2, exposing the button to AT
Not AT dependent, as long as it is used in conjunction with one of the SL techniques for 4.1.2, exposing the button to AT
This technique will list events to avoid
This technique will list events to avoid
This is a direct accessibility technique which does not rely upon AT
This is a direct accessibility technique which does not rely upon AT. Controls used for switching would need to use SL3, SL7, SL8, or SL9
This is a direct accessibility technique which does not rely upon AT. Controls used for switching would need to use SL3, SL7, SL8, or SL9
Silverlight has nice, anti-aliased text and many layout and formatting features for it. There should rarely be a need to use an image of text.
This technique does not require AT support, although the controls used in the navigational elements would need to use other SL techniques in order to support AT
This technique does not require AT support, but the user controls would need to follow SL8