// Copyright 2020 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.views.accessibility;

using fuchsia.ui.views;

/// A protocol for registering a 'fuchsia.ui.views.Focuser' to be used by an
/// accessibility service.
///
/// Accessibility services can drastically alter the way an user interacts with
/// a system. For example, instead of changing the focus from one view to
/// another using the touch screen, this user may use voice. For this reason,
/// accessibility services need a way to be able to request focus to whatever
/// view on the system, as this request can come in any form of input, not
/// necessarily the one that normally drives focus in a particular device.
///
/// The request from the accessibility service assumes that whoever implements
/// this protocol associates this request with a view that sits high in the view
/// hierarchy.
[Discoverable]
protocol FocuserRegistry {
    RegisterFocuser(request<fuchsia.ui.views.Focuser> view_focuser);
};
