// 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.
{
    children: [
        {
            name: "ui",
            url: "fuchsia-pkg://fuchsia.com/ui#meta/ui_with_root_presenter.cm",
            environment: "#full-resolver-env",
        },
    ],

    // Protocols listed in capabilities are routed from the v1 sys realm.
    // See also //src/sys/appmgr/meta/appmgr.core_shard.cml
    capabilities: [
        {
            protocol: [
                "fuchsia.accessibility.gesture.ListenerRegistry",
                "fuchsia.accessibility.tts.EngineRegistry",
                "fuchsia.accessibility.virtualkeyboard.Registry",
                "fuchsia.input.virtualkeyboard.ControllerCreator",
                "fuchsia.input.virtualkeyboard.Manager",
                "fuchsia.recovery.ui.FactoryResetCountdown",
                "fuchsia.ui.brightness.ColorAdjustmentHandler",
                "fuchsia.ui.input.ImeVisibilityService",
                "fuchsia.ui.policy.DisplayBacklight",
            ],
        },
    ],

    // Protocols used from a child are routed to the v1 sys realm.
    // See also //src/sys/appmgr/meta/appmgr.core_shard.cml
    use: [
        {
            protocol: [
                "fuchsia.accessibility.gesture.ListenerRegistry",
                "fuchsia.accessibility.semantics.SemanticsManager",
                "fuchsia.accessibility.tts.EngineRegistry",
                "fuchsia.accessibility.tts.TtsManager",
                "fuchsia.accessibility.virtualkeyboard.Registry",
                "fuchsia.input.injection.InputDeviceRegistry",
                "fuchsia.input.virtualkeyboard.ControllerCreator",
                "fuchsia.input.virtualkeyboard.Manager",
                "fuchsia.recovery.policy.Device",
                "fuchsia.recovery.ui.FactoryResetCountdown",
                "fuchsia.ui.brightness.ColorAdjustmentHandler",
                "fuchsia.ui.composition.Allocator",
                "fuchsia.ui.composition.Flatland",
                "fuchsia.ui.composition.FlatlandDisplay",
                "fuchsia.ui.composition.ScreenCapture",
                "fuchsia.ui.display.internal.DisplayPower",
                "fuchsia.ui.display.singleton.Info",
                "fuchsia.ui.focus.FocusChainListenerRegistry",
                "fuchsia.ui.input.PointerCaptureListenerRegistry",
                "fuchsia.ui.lifecycle.LifecycleController",
                "fuchsia.ui.pointerinjector.configuration.Setup",
                "fuchsia.ui.pointerinjector.Registry",
                "fuchsia.ui.policy.DeviceListenerRegistry",
                "fuchsia.ui.policy.DisplayBacklight",
                "fuchsia.ui.policy.Presenter",
                "fuchsia.ui.scenic.Scenic",
                "fuchsia.ui.views.ViewRefInstalled",
            ],
            from: "#ui",
            dependency: "weak_for_migration",
        },
    ],
    offer: [
        {
            protocol: [
                "fuchsia.logger.LogSink",
                "fuchsia.scheduler.ProfileProvider",
            ],
            from: "parent",
            to: "#ui",
        },
        {
            protocol: [
                "fuchsia.intl.PropertyProvider",
                "fuchsia.tracing.provider.Registry",
                "fuchsia.ui.annotation.Registry",
                "fuchsia.ui.composition.Flatland",
                "fuchsia.ui.focus.FocusChainListenerRegistry",
                "fuchsia.ui.input.accessibility.PointerEventRegistry",
                "fuchsia.ui.pointerinjector.Registry",
                "fuchsia.ui.scenic.Scenic",
            ],
            from: "self",
            to: "#ui",
        },
        {
            protocol: [ "fuchsia.metrics.MetricEventLoggerFactory" ],
            from: "#cobalt",
            to: "#ui",
        },
        {
            protocol: [ "fuchsia.feedback.LastRebootInfoProvider" ],
            from: "#feedback",
            to: "#ui",
        },
        {
            protocol: [ "fuchsia.settings.Accessibility" ],
            from: "#setui_service",
            to: "#ui",
        },
        {
            protocol: [ "fuchsia.media.sounds.Player" ],
            from: "#soundplayer",
            to: "#ui",
        },
        {
            protocol: [ "fuchsia.stash.Store" ],
            from: "#stash",
            to: "#ui",
        },
        {
            protocol: [ "fuchsia.sysmem.Allocator" ],
            from: "#sysmem_connector",
            to: "#ui",
        },
        {
            protocol: [ "fuchsia.recovery.FactoryReset" ],
            from: "#factory_reset",
            to: "#ui",
        },
        {
            protocol: [ "fuchsia.ui.keyboard.focus.Controller" ],
            from: "#text_manager",
            to: "#ui",
        },
        {
            protocol: [ "fuchsia.vulkan.loader.Loader" ],
            from: "#vulkan_loader",
            to: "#ui",
        },
        {
            directory: "config-data",
            from: "parent",
            to: "#ui",
        },
        {
            storage: "data",
            from: "self",
            to: [ "#ui" ],
        },
        {
            directory: "dev",
            from: "parent",
            as: "dev-display-controller",
            to: [ "#ui" ],
            subdir: "class/display-controller",
        },
        {
            directory: "dev",
            from: "parent",
            as: "dev-input-report",
            to: [ "#ui" ],
            subdir: "class/input-report",
        },
        {
            storage: [ "tmp" ],
            from: "self",
            to: "#ui",
        },
    ],
}
