// 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 includes the portion of the input layer that is common across
// all production ui realms that include virtual keyboard manager, but
// differs from test ui realms.
//
// Production ui realms should include this shard directly.
//
// This shard should include:
//
// (1) Virtual keyboard manager's child declaration. Note that other shards
//     assume the name "virtual_keyboard_manager".
// (2) Capability routes to virtual keyboard manager that are the same for
//     all production ui realms in which virtual keyboard manager is present,
//     but differ in test realms.
//
// This shard should **NOT** include:
//
// (1) Routes that are common to all production and test ui realms; these
//     routes belong in virtual_keyboard_manager_base_routes.shard.cml.
// (2) Routes to virtual keyboard manager that differ among production ui
//     realms.
// (3) Routes **FROM** virtual keyboard manager to other components in the ui
//     realm; these routes belong in the target components' routing shards.
{
    include: [ "//src/ui/meta/virtual_keyboard_manager_base_routes.shard.cml" ],
    children: [
        {
            // Centralized management of virtual keyboard features.
            name: "virtual_keyboard_manager",
            url: "fuchsia-pkg://fuchsia.com/virtual_keyboard_manager#meta/virtual_keyboard_manager.cm",
        },
    ],
    offer: [
        {
            protocol: "fuchsia.inspect.InspectSink",
            from: "parent",
            to: [ "#virtual_keyboard_manager" ],
        },
    ],
}
