// 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 scenic layer that is common
// across all production ui realms that include scenic, but differs from
// test ui realms.
//
// Production ui realms should include this shard directly.
//
// This shard should include:
//
// (1) Scenic's child declaration. Note that other shards assume the name
//     "scenic".
// (2) Capability routes to scenic that are the same for all production ui
//     realms in which scenic 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 scenic_base_routes.shard.cml.
// (2) Routes to scenic that differ among production ui realms.
// (3) Routes **FROM** scenic to other components in the ui realm; these
//     routes belong in the target components' routing shards.
{
    include: [
        "//src/ui/meta/scenic_base_routes.shard.cml",
        "syslog/offer.shard.cml",
    ],
    children: [
        {
            // DO NOT CHANGE THIS NAME -- OTHER SHARDS DEPEND ON IT.
            name: "scenic",
            url: "fuchsia-pkg://fuchsia.com/scenic#meta/scenic.cm",
        },
    ],
    offer: [
        {
            directory: "config-data",
            from: "parent",
            to: [ "#scenic" ],
            subdir: "scenic",
        },
        {
            storage: "tmp",
            from: "parent",
            to: "#scenic",
        },

        // Additional services scenic uses, which are not defined in
        // scenic_base_routes.shard.cml.
        {
            protocol: [
                "fuchsia.inspect.InspectSink",
                "fuchsia.media.ProfileProvider",
                "fuchsia.metrics.MetricEventLoggerFactory",
            ],
            from: "parent",
            to: [ "#scenic" ],
        },
    ],
}
