Accessibility Requirements

Document Status: Proposed Specification

See Firebolt Requirements Governance for more info.

Contributor Organization
Andrew Bennett Sky
Bart Catrysse LGI
Jeremy LaCivita Comcast
Joe Martin Comcast

1. Overview

As the number of assistive technologies grow and become more feature-rich, Firebolt platforms and the services upon which they are built are expected to provide reasonable accommodations to users with visual or audible impairments. These accomodations exist to allow users to more easily understand and interact with content via these assistive technologies.

Accessibility is and will continue to be a core foundational principal of the Firebolt project, and as such, Firebolt shall expose any functionality required to configure and drive these assitive technologies, allowing Firebolt clients to build rich experiences that are curated to each user’s specific needs.

1.1. User Stories

As an app, I want to…

2. Table of Contents

3. Constants, Types, and Schemas

3.1. Closed Captions Styles

The Firebolt Accessibility module MUST have a ClosedCaptionsStyles object of the following schema:

Name Type Required in Response Notes
backgroundColor string, null No Standard browser color name (e.g. black) or hexadecimal value (e.g. #000000)
backgroundOpacity string, null No Minimum value: 0, max: 100
fontColor string, null No Standard browser color name (e.g. white) or hexadecimal value (e.g. #FFFFFF)
fontEdge string, null No Allowed values: depressed, drop_shadow_left, drop_shadow_right, none, raised, uniform
fontEdgeColor string, null No Standard browser color name (e.g. grey) or hexadecimal value (e.g. #808080)
fontFamily string, null No Allowed values: casual, cursive, monospaced_sanserif, monospaced_serif, proportional_sanserif, proportional_serif, smallcaps
fontOpacity string, null No Minimum value: 0, max: 100
fontSize number, null No Minimum value: 0
textAlign string, null No Allowed values: left, center, right
textAlignVertical string, null No Allowed values: top, middle, bottom
windowColor string, null No Standard browser color name (e.g. white) or hexadecimal value (e.g. #FFFFFF)
windowOpacity string, null No Minimum value: 0, max: 100

4. Accessibility

Apps need to know what the user’s preferences are for the various assistive technologies that may be available on the platform.

To facilitate this, the Accessibility module will provide convenience methods that encapsulate various accessibility preferences of the user, such as their closed captioning or voice guidance preferences.

4.1. Audio Description Settings

The Accessibility module MUST include an audioDescriptionSettings method that returns an object describing the user’s audio description preferences.

This method’s response MUST support the following properties:

Property Type Description
enabled boolean Whether or not audio descriptions should be enabled by default

This method MUST have a corresponding onAudioDescriptionSettingsChanged event to notify listeners after a change to any properties have been made and that change has taken effect.

Access to these methods MUST require the use role of the xrn:firebolt:capability:accessibility:audiodescriptions capability.

Accessibility.audioDescriptionSettings()
//> {
//>   "enabled": true
//> }

4.2. Closed Captions Settings

The Accessibility module MUST include an closedCaptionsSettings method that returns an object describing the user’s closed captions preferences.

This method’s response MUST support the following properties:

Property Type Required in Response Description
enabled boolean Yes Whether or not audio descriptions should be enabled by default
preferredLanguages []string No A list of preferred ISO 639-2 language codes for closed captions.
styles ClosedCaptionsStyles No The default style to use when displaying closed-captions

This method MUST have a corresponding onClosedCaptionsSettingsChanged event to notify listeners after a change to any properties have been made and that change has taken effect.

Access to these methods MUST require the use role of the xrn:firebolt:capability:accessibility:closedcaptions capability.

Accessibility.closedCaptionsSettings()
//> {
//>   "enabled": true,
//>   "preferredLanguages": [
//>     "eng",
//>     "spa"
//>   ],
//>   "styles": {
//>     "backgroundColor": "#000000",
//>     "backgroundOpacity": 100,
//>     "fontColor": "#ffffff",
//>     "fontEdge": "none",
//>     "fontEdgeColor": "#7F7F7F",
//>     "fontFamily": "monospaced_serif",
//>     "fontOpacity": 100,
//>     "fontSize": 1,
//>     "textAlign": "center",
//>     "textAlignVertical": "middle",
//>     "windowColor": "white",
//>     "windowOpacity": 50
//>   }
//> }

4.3. High Contrast UI

The Accessibility module MUST include a highContrastUI method that returns a boolean denoting whether the user prefers the UI to be presented in a high contrast mode.

This method MUST have a corresponding onHighContrastUIChanged event to notify listeners after a change to the property has been made.

Access to these methods MUST require the use role of the xrn:firebolt:capability:accessibility:highcontrastui capability.

Accessibility.highContrastUI()
//> true

4.4. Voice Guidance Settings

The Accessibility module MUST include a voiceGuidanceSettings method that returns an object describing the user’s voice guidance preferences.

This method’s response MUST support the following properties:

Property Type Required in Response Description
enabled boolean Yes Whether or not voice guidance is enabled by default
navigationHints boolean No Whether or not voice guidance should include additional navigation hints
rate number Yes The rate at which voice guidance speech will be read back to the user
Allowed range: 0.1 -> 10

This method MUST have a corresponding onVoiceGuidanceSettingsChanged event to notify listeners after a change to any properties have been made and that change has taken effect.

Access to these methods MUST require the use role of the xrn:firebolt:capability:accessibility:voiceguidance capability.

Accessibility.voiceGuidanceSettings()
//> {
//>   "enabled": true,
//>   "navigationHints": false,
//>   "rate": 1.5
//> }

5. Voice Guidance Settings

Apps want to be able to modify and persist the user’s voice guidance preferences.

To facilitate this, the VoiceGuidance module will provide management access to the user’s voice guidance preferences.

4.1. Enabled

The VoiceGuidance module MUST include an enabled method that returns a boolean value denoting whether or not the user has enabled voice guidance.

This method MUST have a corresponding setEnabled method that accepts a boolean value denoting the new intended value for this property.

This method MUST have a corresponding onEnabledChanged event to notify listeners after a change to the property has been made and that change has taken effect.

Access to these methods MUST require the xrn:firebolt:capability:accessibility:voiceguidance capability.

VoiceGuidance.setEnabled(true)
//> true

4.2. Navigation Hints

The VoiceGuidance module MUST include a navigationHints method that returns a boolean value denoting whether or not the user prefers additional voice guidance navigation hints to be synthesized.

This method MUST have a corresponding setNavigationHints method that accepts a boolean value denoting the new intended value for this property.

This method MUST have a corresponding onNavigationHintsChanged event to notify listeners after a change to the property has been made and that change has taken effect.

Access to these methods MUST require the xrn:firebolt:capability:accessibility:voiceguidance capability.

VoiceGuidance.setNavigationHints(false)
//> false

4.2. Speech Rate

The VoiceGuidance module MUST include a rate method that returns a numeric value denoting the user’s desired speech rate.

This method MUST have a corresponding setRate method that accepts a numeric value denoting the new intended value for this property.

This method MUST have a corresponding onRateChanged event to notify listeners after a change to the property has been made and that change has taken effect.

Access to these methods MUST require the xrn:firebolt:capability:accessibility:voiceguidance capability.

VoiceGuidance.setRate(0.5)
//> 0.5