blob: 26aff508c97477f503324f93df3afab62d160519 [file] [log] [blame]
// Copyright 2022 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.accessibility.scene;
using fuchsia.ui.views;
@discoverable
protocol Provider {
/// Prompts the server (a11y manager) to create a new accessibility `View`,
/// which the client (scene manager) must connect to the root of the scene
/// graph.
///
/// The accessibility view is used to vend capabilities to a11y 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.
///
/// With the a11y view, the scene topology is roughly:
///
/// scene root (owned by scene manager)
/// |
/// a11y viewport (owned by scene manager)
/// |
/// a11y view (owned by a11y manager)
/// |
/// proxy viewport (owned by a11y manager)
/// |
/// proxy view (owned by scene manager)
/// |
/// client viewport (owned by scene manager)
/// |
/// client view (owned by UI client)
///
/// ARGS
///
/// a11y_view_token: Token generated by scene manager, which a11y manager
/// uses to create the a11y view in its flatland instance.
///
/// proxy_viewport_token: Token generated by scene manager, which a11y manager
/// uses to create a "proxy viewport" within the a11y view. The client must
/// subsequently create a "proxy view" using the corresponding view creation
/// token it generated.
///
/// SYNCHRONIZATION
///
/// Callers may safely proceed once the accessibility `ViewRef` is returned
/// to the accessibility `ViewPort` holder.
///
/// LIFECYCLE
///
/// The client is free to close the channel any time after calling CreateView().
///
/// EPITAPH
///
/// This method may return the following epitaphs:
///
/// - ZX_ERR_INVALID_ARGS, if either of the provided tokens is invalid.
/// - ZX_ERR_PEER_CLOSED, if Scenic fails creating the accessibility `Viewport`.
CreateView(resource struct {
a11y_view_token fuchsia.ui.views.ViewCreationToken;
proxy_viewport_token fuchsia.ui.views.ViewportCreationToken;
});
};