// Copyright 2013 The Flutter Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file
{
    capabilities: [
        // Required for inspect.
        // Copied from inspect/client.shard.cml because out-of-tree doesn't
        // have support for CML includes from the SDK.
        {
            directory: "diagnostics",
            rights: [ "connect" ],
            path: "/diagnostics",
        },
    ],
    use: [
	// This is used by the Dart VM to communicate from Dart code to C++ code.
        {
            storage: "tmp",
            path: "/tmp",
        },
        // This is used by the Dart VM to load i18n data.
        {
            directory: "config-data",
            rights: [ "r*" ],
            path: "/config/data",
        },
        {
            directory: "root-ssl-certificates",
            rights: [ "r*" ],
            path: "/config/ssl",
        },
        {
            protocol: [
                "fuchsia.accessibility.semantics.SemanticsManager",
                "fuchsia.device.NameProvider",
                "fuchsia.feedback.CrashReporter",
                "fuchsia.fonts.Provider",
                "fuchsia.intl.PropertyProvider",
                "fuchsia.logger.LogSink", // Copied from syslog/client.shard.cml.
                "fuchsia.media.ProfileProvider",
                "fuchsia.memorypressure.Provider",
                "fuchsia.net.name.Lookup",
                "fuchsia.posix.socket.Provider",
                "fuchsia.sysmem.Allocator",
                "fuchsia.ui.composition.Allocator",
                "fuchsia.ui.composition.Flatland",
                "fuchsia.ui.input.ImeService",
                "fuchsia.ui.input3.Keyboard",
                "fuchsia.ui.pointerinjector.Registry",
                "fuchsia.vulkan.loader.Loader", // Copied from vulkan/client.shard.cml.
            ],
        },
        {
            protocol: [
                "fuchsia.tracing.provider.Registry", // Copied from vulkan/client.shard.cml.
            ],
            availability: "optional",
        },
    ],
    expose: [
        // Required for inspect.
        // Copied from inspect/client.shard.cml because out-of-tree doesn't
        // have support for CML includes from the SDK.
        {
            directory: "diagnostics",
            from: "self",
            to: "framework",
        },
    ],
}
