organizing types
Capability types
Fuchsia components support many different types of capabilities. So far in this
module, the examples have showcased two distinct capability types: runner and
protocol. You may have noticed that the protocol capability requires a
routing path but the runner capability does not.
Some capabilities are explicitly routed to components by their parent, while others are provided to all components within the same realm using environments. Environments enable the framework to provision capabilities that don't make sense to route explicitly on a per-component basis. By default, a component inherits the environment of its parent. Components may also declare a new environment for their children.
The following table lists the capability types available to components, and whether they must be explicitly routed from the parent component or provided by the environment:
| Type | Description | Provided by |
|---|---|---|
directory
|
Shared filesystem directories provided by other components. | Routing |
event
|
Events generated by Component Manager, such as components starting or a capability request. | Routing |
protocol
|
FIDL protocols provided by other components or the framework. | Routing |
resolver
|
A component capable of resolving a URL to a component manifest. | Environment |
runner
|
A runtime used to execute specific components. | Environment |
service
|
Named groups of related FIDL protocols performing a common task. | Routing |
storage
|
Isolated filesystem directories unique to each component. | Routing |
Note: For more details on individual capabilities, see component capabilities and environments.