// 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.
{
    include: [
        "inspect/offer.shard.cml",
        "syslog/client.shard.cml",
    ],
    program: {
        runner: "elf",
        binary: "bin/sl4f",
    },
    collections: [
        // Holds components launched via sl4f command.
        {
            name: "launched_components",
            durability: "transient",
        },
    ],
    use: [
        // TODO(https://fxbug.dev/42181129): Remove once fixed.
        {
            directory: "data",
            rights: [ "rw*" ],
            path: "/data",
        },

        // TODO(https://fxbug.dev/42181123): Remove once https://fxbug.dev/42167600 is fixed.
        {
            directory: "tmp",
            rights: [ "rw*" ],
            path: "/tmp",
        },
        {
            directory: "dev-temperature",
            rights: [ "r*" ],
            path: "/dev/class/temperature",
        },
        {
            protocol: [
                "fuchsia.bluetooth.bredr.Profile",
                "fuchsia.bluetooth.gatt2.Server",
                "fuchsia.bluetooth.le.Central",
                "fuchsia.bluetooth.le.Peripheral",
                "fuchsia.bluetooth.rfcomm.test.RfcommTest",
                "fuchsia.bluetooth.sys.Access",
                "fuchsia.bluetooth.sys.Configuration",
                "fuchsia.bluetooth.sys.HostWatcher",
                "fuchsia.bluetooth.sys.Pairing",
                "fuchsia.buildinfo.Provider",
                "fuchsia.device.NameProvider",
                "fuchsia.diagnostics.ArchiveAccessor",
                "fuchsia.element.GraphicalPresenter",
                "fuchsia.feedback.DataProvider",
                "fuchsia.hardware.power.statecontrol.Admin",
                "fuchsia.hwinfo.Board",
                "fuchsia.hwinfo.Device",
                "fuchsia.hwinfo.Product",
                "fuchsia.input.injection.InputDeviceRegistry",
                "fuchsia.location.namedplace.RegulatoryRegionConfigurator",
                "fuchsia.media.ProfileProvider",
                "fuchsia.media.sessions2.ActiveSession",
                "fuchsia.media.sessions2.Publisher",
                "fuchsia.media.sounds.Player",
                "fuchsia.memorypressure.Provider",
                "fuchsia.net.interfaces.State",
                "fuchsia.net.name.Lookup",
                "fuchsia.paver.Paver",
                "fuchsia.posix.socket.Provider",
                "fuchsia.power.metrics.Recorder",
                "fuchsia.recovery.FactoryReset",
                "fuchsia.session.Launcher",
                "fuchsia.session.Restarter",
                "fuchsia.settings.Audio",
                "fuchsia.settings.Display",
                "fuchsia.settings.Input",
                "fuchsia.settings.Intl",
                "fuchsia.settings.Setup",
                "fuchsia.sysmem.Allocator",
                "fuchsia.sysmem2.Allocator",
                "fuchsia.test.audio.recording.AudioRecordingControl",
                "fuchsia.testing.proxy.TcpProxyControl",
                "fuchsia.tracing.controller.Controller",
                "fuchsia.tracing.provider.Registry",
                "fuchsia.ui.composition.Allocator",
                "fuchsia.ui.composition.Flatland",
                "fuchsia.ui.composition.Screenshot",
                "fuchsia.ui.scenic.Scenic",
                "fuchsia.wlan.device.service.DeviceMonitor",
                "fuchsia.wlan.policy.AccessPointListener",
                "fuchsia.wlan.policy.AccessPointProvider",
                "fuchsia.wlan.policy.ClientListener",
                "fuchsia.wlan.policy.ClientProvider",
                "fuchsia.wlan.product.deprecatedconfiguration.DeprecatedConfigurator",
            ],
        },
        {
            // https://fxbug.dev/42054039: only available in some product configurations
            protocol: [
                "fuchsia.factory.AlphaFactoryStoreProvider",
                "fuchsia.factory.CastCredentialsFactoryStoreProvider",
                "fuchsia.factory.MiscFactoryStoreProvider",
                "fuchsia.factory.PlayReadyFactoryStoreProvider",
                "fuchsia.factory.WeaveFactoryStoreProvider",
                "fuchsia.factory.WidevineFactoryStoreProvider",
            ],
            availability: "optional",
        },
        {
            protocol: [
                "fuchsia.bluetooth.a2dp.AudioMode",
                "fuchsia.bluetooth.avdtp.test.PeerManager",
                "fuchsia.bluetooth.avrcp.PeerManager",
                "fuchsia.bluetooth.hfp.Hfp",
                "fuchsia.bluetooth.hfp.test.HfpTest",
                "fuchsia.location.position.EmergencyProvider",
                "fuchsia.lowpan.device.DeviceConnector",
                "fuchsia.lowpan.device.DeviceExtraConnector",
                "fuchsia.lowpan.test.DeviceTestConnector",
                "fuchsia.weave.Stack",
                "fuchsia.web.ContextProvider",
            ],
            availability: "optional",
        },
        {
            // TODO(https://fxbug.dev/42059306) delete once launched by tiles-session
            protocol: [
                "fuchsia.developer.tiles.Controller.flatland",
                "fuchsia.ui.app.ViewProvider",
            ],
            availability: "optional",
        },
        {
            protocol: "fuchsia.weave.FactoryDataManager",
            availability: "optional",
        },
        {
            protocol: "fuchsia.sys2.LifecycleController.root",
            path: "/svc/fuchsia.sys2.LifecycleController",
        },
        {
            protocol: "fuchsia.sys2.RealmQuery.root",
            path: "/svc/fuchsia.sys2.RealmQuery",
        },
        {
            protocol: "fuchsia.web.Debug",
            availability: "optional",
        },
        {
            protocol: "fuchsia.web.Debug-context_provider",
            availability: "optional",
        },
        {
            protocol: "fuchsia.component.Realm",
            from: "framework",
        },
        {
            event_stream: "stopped_v2",
            from: "parent",
        },
    ],
    offer: [
        {
            protocol: [
                "fuchsia.element.GraphicalPresenter",
                "fuchsia.sysmem.Allocator",
                "fuchsia.sysmem2.Allocator",
                "fuchsia.tracing.provider.Registry",
                "fuchsia.ui.composition.Allocator",
                "fuchsia.ui.composition.Flatland",
            ],
            from: "parent",
            to: "#launched_components",
        },
    ],
    expose: [
        {
            protocol: "fuchsia.component.Binder",
            from: "framework",
            as: "sl4f.Binder",
        },
    ],
}
