| # 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 |