Skip to content

Interop: Applying system accessibility preferences to WebVTT cues #536

@jernoble

Description

@jernoble

Safari and Chrome (on macOS) read system accessibility preferences and convert the user's preferred caption settings into CSS styles. These styles are then applied to the WebVTT cues rendered by the UA. Attached are examples of Chrome and Safari rendering with various accessibility preferences set.

Firefox (on macOS, at least) does not read system accessibility preferences.

Additionally, Safari and Chrome implement WebVTT rendering within the media element Shadow DOM, which is closed, and therefore inaccessible from the rest of the page. Queries of the type getComputedStyle(video, "::cue") fail to apply styles defined inside the Shadow DOM, which includes both system accessibility derived styles, as well as styles applied by the WebVTT file itself.

Concerns have been raised in PR #520 that UAs which apply users' system accessibility preferences to WebVTT rendering may cause fingerprinting issues due to exposing those users' distinguishing preferences to web content. Safari and Chrome's implementation details are intended to prevent that exposure, but they also introduce an interop issue.

Questions:

  • Should the specification include a note regarding system accessibility preferences?
  • Should the specification suggest or require those preferences to be hidden from the page?

Examples:

Default Caption Settings, Chrome Rendering, Safari Rendering:
Default Caption SettingsChrome Default Caption RenderingSafari Default Caption Rendering

Classic Caption Settings, Chrome Rendering, Safari Rendering:
Classic Caption Settings
Chrome Classic Caption Rendering:
Chrome Classic Caption Rendering
Safari Classic Caption Rendering:
Safari Classic Caption Rendering

Custom Caption Settings, Chrome Rendering, Safari Rendering:
Custom Caption SettingsChrome Custom Caption RenderingSafari Custom Caption Rendering

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions