| // Copyright 2021 The Fuchsia Authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| library fuchsia.ui.accessibility.view; |
| |
| using fuchsia.ui.views; |
| |
| /// Registry allows a privileged client to interpose an accessibility view between |
| /// the root view of the scene graph and the view which embeds the system shell. |
| @discoverable |
| protocol Registry { |
| /// Creates a new accessibility `ViewHolder` as a child of the root view |
| /// in the scene graph. The created ViewHolder holds an accessibility view. |
| /// The accessibility view does not render any content; it's only used to |
| /// vend capabilities to the accessibility manager that a view confers, e.g. |
| /// ability to request focus, consume and respond to input events, annotate |
| /// underlying views, and apply coordinate transforms to its subtree. |
| /// |
| /// Additionally, the a11y_view_ref can be used to inject input into the the |
| /// accessibility view's subgraph. |
| /// |
| /// Note that the caller must create a view using |a11y_view_ref| BEFORE |
| /// calling CreateAccessibilityViewHolder(). |
| /// |
| /// The protocol returns a client ViewHolderToken, which the caller MUST use |
| /// to attach the corresponding client view holder as a child of the |
| /// accessibility view it created. |
| /// |
| /// Since creating a ViewHolder modifies the SceneGraph, this function won't |
| /// take effect until we schedule a new frame by calling Present() on any |
| /// Session. |
| /// |
| /// EPITAPH |
| /// |
| /// This method may return the following epitaphs: |
| /// |
| /// - ZX_ERR_INVALID_ARGS, if the provided `ViewRef` is invalid. |
| /// - ZX_ERR_PEER_CLOSED, if Scenic fails creating the accessibility `ViewHolder`. |
| /// |
| CreateAccessibilityViewHolder(resource struct { |
| a11y_view_ref fuchsia.ui.views.ViewRef; |
| a11y_view_token fuchsia.ui.views.ViewHolderToken; |
| }) -> (resource struct { |
| client_view_holder_token fuchsia.ui.views.ViewHolderToken; |
| }); |
| |
| /// Creates a new accessibility `Viewport` as a child of the root view in |
| /// the scene graph, implemented by passing [`viewport_creation_token`] to |
| /// [`fuchsia.ui.composition/Flatland.CreateViewport`]). The created |
| /// `Viewport` holds an accessibility view. The accessibility view does not |
| /// render any content; it's only used to vend capabilities to the |
| /// accessibility manager that a view confers, e.g. ability to request |
| /// focus, consume and respond to input events, annotate underlying views, |
| /// and apply coordinate transforms to its subtree. |
| /// |
| /// The protocol returns a client [`fuchsia.ui.views/ViewportCreationToken`], |
| /// which the caller MUST use to attach the corresponding client view holder |
| /// as a child of the accessibility view it created. |
| /// |
| /// Since creating a `Viewport` modifies the Flatland scene graph, this |
| /// function won't take effect until we schedule a new frame by calling |
| /// [`fuchsia.ui.composition/Flatland.Present`]) on the Flatland instance |
| /// which contains the view corresponding to [`viewport_creation_token`]. |
| /// |
| /// EPITAPH |
| /// |
| /// This method may return the following epitaphs: |
| /// |
| /// - ZX_ERR_PEER_CLOSED, if Scenic fails creating the accessibility `Viewport`. |
| /// |
| @transitional |
| CreateAccessibilityViewport(resource struct { |
| viewport_creation_token fuchsia.ui.views.ViewportCreationToken; |
| }) -> (resource struct { |
| client_viewport_creation_token fuchsia.ui.views.ViewportCreationToken; |
| }); |
| }; |