class Realm

Defined at line 11475 of file fidling/gen/sdk/fidl/fuchsia.component.test/fuchsia.component.test/hlcpp/fuchsia/component/test/cpp/fidl.h

Public Members

static const char[] Name_

Public Methods

void ~Realm ()
void AddChild (::std::string name, ::std::string url, ::fuchsia::component::test::ChildOptions options, AddChildCallback callback)

Adds a component to the realm.

The `url` can be in one of the following formats:

- an absolute component URL (such as,

"fuchsia-pkg://fuchsia.com/some-package#meta/some-component.cm")

- a relative path component URL to a subpackaged component (like,

"some-subpackage#meta/subpackaged-component.cm"); or

- a relative fragment-only URL (like, `#meta/other-component.cm`;

see https://fuchsia.dev/fuchsia-src/reference/components/url#relative-fragment-only)

indicating the path to a component manifest in the `pkg_dir` supplied

to `RealmBuilderFactory::Create*()`.

The realm builder client typically passes a handle to its own `/pkg`

directory, and bundles the `other-component` into the same package.

Of the three URL types, _only_ component declarations added via the

fragment-only URL can be modified, via

`GetComponentDecl`/`ReplaceComponentDecl` because realm builder actually

performs its own component resolution from the component's manifest and

files bundled in the provided `pkg_dir` (typically from the package

shared by the realm builder client component and the components added

via fragment-only URL).

Errors:

- `CHILD_ALREADY_EXISTS`: this realm already contains a child with the

given name.

- `INVALID_MANIFEST_EXTENSION`: `url` does not end with `.cm`

- `DECL_NOT_FOUND`: The test package does not contain the component

declaration referenced by a fragment-only component URL.

- `DECL_READ_ERROR`: Encountered an I/O error when attempting to read a

component declaration referenced by a fragment-only component URL from

the test package.

- `BUILD_ALREADY_CALLED`: The `Builder.Build` function has been called

for this realm, and thus this `Realm` channel can no longer be used.

void AddChildFromDecl (::std::string name, ::fuchsia::component::decl::Component decl, ::fuchsia::component::test::ChildOptions options, AddChildFromDeclCallback callback)

Adds a component to this realm whose declaration is set to `decl`. When

launched, the component will share the test package as its package

directory, and may access any resources from it.

Errors:

- `CHILD_ALREADY_EXISTS`: this realm already contains a child with the

given name.

- `INVALID_COMPONENT_DECL`: `decl` failed validation.

- `BUILD_ALREADY_CALLED`: The `Builder.Build` function has been called

for this realm, and thus this `Realm` channel can no longer be used.

void AddLocalChild (::std::string name, ::fuchsia::component::test::ChildOptions options, AddLocalChildCallback callback)

Adds a component to the realm whose implementation will be provided by

the client. When this component should be started, the runner channel

passed into `Build` will receive a start request for a component whose

`ProgramDecl` contains the moniker from the root of the

constructed realm for the child that is to be run under the `program`

key `LOCAL_COMPONENT_NAME`.

Errors:

- `CHILD_ALREADY_EXISTS`: this realm already contains a child with the

given name.

- `BUILD_ALREADY_CALLED`: The `Builder.Build` function has been called

for this realm, and thus this `Realm` channel can no longer be used.

void AddChildRealm (::std::string name, ::fuchsia::component::test::ChildOptions options, ::fidl::InterfaceRequest< ::fuchsia::component::test::Realm> child_realm, AddChildRealmCallback callback)

Adds a child realm which can be built with the client end of

`child_realm`.

Errors:

- `CHILD_ALREADY_EXISTS`: this realm already contains a child with the

given name.

- `BUILD_ALREADY_CALLED`: The `Builder.Build` function has been called

for this realm, and thus this `Realm` channel can no longer be used.

void AddChildRealmFromRelativeUrl (::std::string name, ::std::string relative_url, ::fuchsia::component::test::ChildOptions options, ::fidl::InterfaceRequest< ::fuchsia::component::test::Realm> child_realm, AddChildRealmFromRelativeUrlCallback callback)

Adds a child realm which can be built with the client end of

`child_realm`, and whose contents are initialized from `relative_url`.

`relative_url` must be a fragment-only URL.

void AddChildRealmFromDecl (::std::string name, ::fuchsia::component::decl::Component decl, ::fuchsia::component::test::ChildOptions options, ::fidl::InterfaceRequest< ::fuchsia::component::test::Realm> child_realm, AddChildRealmFromDeclCallback callback)

Adds a child realm which can be built with the client end of

`child_realm`, and whose contents are initialized from `decl`.

void GetComponentDecl (::std::string name, GetComponentDeclCallback callback)

Returns the component decl for the given component. `name` must refer to

a component that is one of the following:

- A component with a local implementation

- A legacy component

- A component added with a fragment-only URL (typically, components

bundled in the same package as the realm builder client, sharing the

same `/pkg` directory, for example, `#meta/other-component.cm`; see

https://fuchsia.dev/fuchsia-src/reference/components/url#relative-fragment-only)

- An automatically generated realm (ex: the root)

Errors:

- `NO_SUCH_CHILD`: This realm does not contain a child with the given

name.

- `CHILD_DECL_NOT_VISIBLE`: The component decl cannot be fetched for

the referenced child, because the child was added to the realm using

a modern (not legacy) absolute URL or subpackaged component's relative

path URL.

- `BUILD_ALREADY_CALLED`: The `Builder.Build` function has been called

for this realm, and thus this `Realm` channel can no longer be used.

void ReplaceComponentDecl (::std::string name, ::fuchsia::component::decl::Component component_decl, ReplaceComponentDeclCallback callback)

Replaces the component decl for the given component. `name` must

refer to a component that is one of the following:

- A component with a local implementation

- A legacy component

- A component added with a fragment-only URL (typically, components

bundled in the same package as the realm builder client, sharing the

same `/pkg` directory, for example, `#meta/other-component.cm`; see

https://fuchsia.dev/fuchsia-src/reference/components/url#relative-fragment-only)

- An automatically generated realm (ex: the root)

Errors:

- `NO_SUCH_CHILD`: This realm does not contain a child with the given

name.

- `CHILD_ALREADY_EXISTS`: The component whose decl is being replaced has

had a child added to it through realm builder with the same name as an

element in `component_decl.children`.

- `CHILD_DECL_NOT_VISIBLE`: The component decl cannot be manipulated for

the referenced child, because the child was added to the realm using

an absolute (not relative) and modern (not legacy) URL.

- `INVALID_COMPONENT_DECL`: `component_decl` failed validation.

- `BUILD_ALREADY_CALLED`: The `Builder.Build` function has been called

for this realm, and thus this `Realm` channel can no longer be used.

void GetRealmDecl (GetRealmDeclCallback callback)

Returns the component decl for this realm.

Errors:

- `BUILD_ALREADY_CALLED`: The `Builder.Build` function has been called

for this realm, and thus this `Realm` channel can no longer be used.

void ReplaceRealmDecl (::fuchsia::component::decl::Component component_decl, ReplaceRealmDeclCallback callback)

Replaces the component decl for this realm.

Errors:

- `INVALID_COMPONENT_DECL`: `component_decl` failed validation.

- `BUILD_ALREADY_CALLED`: The `Builder.Build` function has been called

for this realm, and thus this `Realm` channel can no longer be used.

void UseNestedComponentManager (::std::string component_manager_relative_url, UseNestedComponentManagerCallback callback)

Inform the realm builder server that this realm is using a nested component manager. It's

expected that the client library has already replaced the realm's declaration with a

passthrough component manager declaration, with the exception of the root url.

This method will arrange for [Builder.Build] to install the realm's generated url as the

root url in this component manager.

void AddRoute (::std::vector< ::fuchsia::component::test::Capability> capabilities, ::fuchsia::component::decl::Ref from, ::std::vector< ::fuchsia::component::decl::Ref> to, AddRouteCallback callback)

Identical to `AddRouteFromDictionary`, except it does not accept `from_dictionary` which

it always sets to ".".

void AddRouteFromDictionary (::std::vector< ::fuchsia::component::test::Capability> capabilities, ::fuchsia::component::decl::Ref from, ::std::string from_dictionary, ::std::vector< ::fuchsia::component::decl::Ref> to, AddRouteFromDictionaryCallback callback)

Mutates component manifests in the realm such that every component in

`to` will have a valid capability route for each item in `capabilities`

provided by `from`.

Errors:

- `NO_SUCH_SOURCE`: `from` references a non-existent child.

- `NO_SUCH_TARGET`: `to` references a non-existent child.

- `CAPABILITIES_EMPTY`: `capabilities` is empty.

- `TARGETS_EMPTY`: `to` is empty.

- `SOURCE_AND_TARGET_MATCH`: `from` is equal to one of the elements in

`to`.

- `INVALID_COMPONENT_DECL`: The requested route caused one of the

involved manifests to fail validation.

- `BUILD_ALREADY_CALLED`: The `Builder.Build` function has been called

for this realm, and thus this `Realm` channel can no longer be used.

void ReadOnlyDirectory (::std::string name, ::std::vector< ::fuchsia::component::decl::Ref> to, ::fuchsia::component::test::DirectoryContents directory_contents, ReadOnlyDirectoryCallback callback)

Offers a directory capability to a component in this realm. The

directory will be read-only (i.e. have `r*` rights), and will have the

contents described in `directory_contents`.

Errors:

- `NO_SUCH_TARGET`: `offer-to` references a non-existent child.

- `BUILD_ALREADY_CALLED`: The `Builder.Build` function has been called

for this realm, and thus this `Realm` channel can no longer be used.

void AddStorage (::std::string name, ::std::vector< ::fuchsia::component::decl::Ref> to, ::fidl::InterfaceRequest< ::fuchsia::component::StorageAdmin> storage_admin, AddStorageCallback callback)

Creates and routes a new storage capability to the provided targets.

Optionally can connect the provided channel the the

`fuchsia.sys2.StorageAdmin` protocol for this storage capability.

void InitMutableConfigFromPackage (::std::string name, InitMutableConfigFromPackageCallback callback)

Load any packaged configuration for `name` before using values provided to

the builder.

Allows calling `SetConfigValue` to override packaged configuration.

void InitMutableConfigToEmpty (::std::string name, InitMutableConfigToEmptyCallback callback)

Use only values provided to the builder for `name`'s configuration.

Allows calling `SetConfigValue` to provide configuration.

void AddCapability (::fuchsia::component::decl::Capability capability, AddCapabilityCallback callback)

Add a capability to the realm.

void AddCollection (::fuchsia::component::decl::Collection collection, AddCollectionCallback callback)

Adds a collection to the realm.

void AddEnvironment (::fuchsia::component::decl::Environment environment, AddEnvironmentCallback callback)

Adds an environment to the realm.

void SetConfigValue (::std::string name, ::std::string key, ::fuchsia::component::decl::ConfigValueSpec value, SetConfigValueCallback callback)

Sets the configuration value for a field specified by `key`.

The component specified must have a config schema with this field.

The value must conform to all constraints as defined by the schema.

This method must be called after either `InitMutableConfigFromPackage` or

`InitMutableConfigToEmpty`.

Errors:

- `NO_CONFIG_SCHEMA`: component does not have a config schema

- `NO_SUCH_CONFIG_FIELD`: `key` could not be found in component's config schema

- `CONFIG_VALUE_INVALID`: `value` does not meet config schema constraints