// 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.

// This shard is shared across all production and test UI realms that
// contain virtual keyboard manager.
//
// It contains any capabilities that:
//
// (1) Virtual keyboard manager exposes from every production or test UI
//     realm in which it's present.
// (2) Virtual keyboard manager always consumes from the same source in
//     every production or test UI realm in which it's present.
//
// This shard should **NOT** include:
//
// (1) Routes that have different sources in different ui realms.
// (2) Virtual keyboard manager's child definition, as we may use a
//     differnt url in test vs. production ui realms.
// (3) Capabilities that other components consume from virtual keyboard
//     manager.
{
    offer: [
        {
            protocol: [ "fuchsia.logger.LogSink" ],
            from: "parent",
            to: [ "#virtual_keyboard_manager" ],
        },
        {
            protocol: "fuchsia.tracing.provider.Registry",
            from: "parent",
            to: [ "#virtual_keyboard_manager" ],
            availability: "optional",
        },
        {
            protocol: [ "fuchsia.ui.focus.FocusChainListenerRegistry" ],
            from: "#scenic",
            to: [ "#virtual_keyboard_manager" ],
        },
        {
            protocol: [ "fuchsia.ui.keyboard.focus.Controller" ],
            from: "#text_manager",
            to: [ "#virtual_keyboard_manager" ],
            source_availability: "unknown",
        },
    ],
    expose: [
        {
            protocol: [
                "fuchsia.input.virtualkeyboard.ControllerCreator",
                "fuchsia.input.virtualkeyboard.Manager",
            ],
            from: "#virtual_keyboard_manager",
        },
    ],
}
