| // 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; |
| }; |