blob: acc3663d64274c1b380cc401c478b7cbd50b95c3 [file] [log] [blame] [view]
# element_manager
Reviewed on: 2021-01-21
`element_manager` is a component that implements the
[`fuchsia.element.Manager`](//sdk/fidl/fuchsia.element/element_manager.fidl)
protocol. `element_manager` is not intended to be used on its own, but instead
composed into a session as a child.
`element_manager` launches all elements proposed using `Manager` in
a collection.
Use this if you want to use tools such as `ffx session add`, but don't want to
write your own implementation of `fuchsia.element.Manager`.
## Building
To add this project to your build, append
`--with //src/session/bin/element_manager` to the `fx set` invocation.
## Running
To include `element_manager` in a session, add the following to the session's
component manifest.
Once available, session manifests should instead include
`element_manager.shard.cml`. Related monorail issue:
[https://fxbug.dev/42147096](https://fxbug.dev/42147096).
```
{
children: [
{
name: "element_manager",
url: "fuchsia-pkg://fuchsia.com/element_manager#meta/element_manager.cm",
startup: "eager",
},
],
capabilities: [
{ protocol: "fuchsia.element.Manager" },
],
offer: [
{
protocol: [ "fuchsia.logger.LogSink" ],
from: "parent",
to: [ "#element_manager" ],
},
{
storage: "data",
from: "parent",
to: "#element_manager",
},
],
expose: [
{
protocol: "fuchsia.element.Manager",
from: "#element_manager",
},
],
}
```
## Testing
Unit tests for `element_manager` are available in the `element_manager_tests`
package.
```
$ fx test element_manager_tests
```
## Source layout
The entrypoint is located in `src/main.rs`. Unit tests are co-located with the code.
## Element annotations
`element_manager` [writes annotations] in the namespace "element_manager".
| Namespace | Key | Value [type] | Description |
|-------------------|--------|------------------------------|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| `element_manager` | `url` | Element component URL [text] | Set from the value from `component_url` in the proposed element spec. The `GraphicalPresenter` implementation can use this annotation to determine which component is associated with an element's view. |
[writes annotations]: https://fuchsia.dev/reference/fidl/fuchsia.element#Annotation