blob: facd3346338a5520e90c7217fd67b106410e295c [file] [log] [blame]
// Copyright 2025 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.
library fuchsia.component.internal;
using fuchsia.component.decl;
/// Declares a capability to be injected into a component.
@available(added=HEAD)
type InjectedUse = flexible union {
1: protocol InjectedUseProtocol;
};
/// Declares a protocol to be injected into a component.
@available(added=HEAD)
type InjectedUseProtocol = table {
/// (Required) Name identifying the protocol within the root component.
1: source_name fuchsia.component.decl.name;
/// (Required) The path where the capability should be injected in the new
/// component's namespace.
///
/// Must be an absolute path starting with /.
2: target_path string:fuchsia.component.decl.MAX_PATH_LENGTH;
};
/// Declares a group of extra capabilities that are layered at runtime on top of
/// those that would normally be routed to the component.
@available(added=HEAD)
type InjectedCapabilities = table {
/// (Required) Components that will have these capabilities injected into.
1: components vector<AllowlistEntryMoniker>:MAX_ALLOWLIST_SIZE;
/// (Optional) Capabilities to be injected.
2: use vector<InjectedUse>:MAX;
};