| // Copyright 2021 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.decl; |
| |
| /// Statically declares a component instance collection. |
| type Collection = table { |
| /// (Required) The name of the collection. Instances created in the |
| /// collection are scoped to this name. |
| 1: name name; |
| |
| /// (Required) The durability of instances in the collection. |
| 2: durability Durability; |
| |
| /// (Optional) The environment assigned to child instances in this |
| /// collection. |
| /// |
| /// May be unset, in which case children in this collection will inherit the |
| /// parent component's environment. If set, the name must reference an |
| /// environment defined in the `ComponentDecl` and it must contain only the |
| /// following characters: [a-z0-9-_.]. |
| 3: environment name; |
| |
| /// (Optional, defaults to `STATIC_ONLY`) The kinds of offers that can |
| /// target the child instances in this collection. |
| /// |
| /// Only components using the `dynamic_offers` restricted feature may set |
| /// this field. |
| 4: allowed_offers AllowedOffers; |
| |
| /// (Optional, defaults to `false`) Whether child instances in this |
| /// collection can have names longer than the default length limit of 100. |
| /// |
| /// Only components using the `allow_long_names` restricted feature may set |
| /// this field. |
| 5: allow_long_names bool; |
| |
| /// (Optional) Whether the data in isolated storage used by dynamic child |
| /// instances and their descendants will persist after the instances are |
| /// destroyed. New dynamic instances inherit the previous instances' data |
| /// stores. |
| /// |
| /// This setting can be overridden by a lower-level collection that is a |
| /// descendant of a collection that enables/disables this setting. |
| /// |
| /// This setting applies to all storage capabilities consumed by the |
| /// collection components and their descendants. |
| /// |
| /// The default is the value inherited from an ancestral collection if set, |
| /// otherwise `false`. |
| 6: persistent_storage bool; |
| }; |
| |
| /// The durability of component instances created in a collection. |
| type Durability = strict enum { |
| // Durability::Persistent is removed because it is unsupported. |
| @available(removed=9) |
| PERSISTENT = 1; |
| /// An instance exists until either its parent instance is stopped |
| /// or it is explicitly destroyed. |
| TRANSIENT = 2; |
| /// An instance is started upon creation and is immediately destroyed when |
| /// it stops. |
| SINGLE_RUN = 3; |
| }; |
| |
| /// The kinds of offers that can target the children in a collection. |
| type AllowedOffers = strict enum { |
| /// Only static offers may target components in the collection. "Static |
| /// offers" are the offers in the `ComponentDecl` that target the collection |
| /// itself. |
| /// |
| /// This is the default behavior. |
| STATIC_ONLY = 1; |
| |
| /// Both static offers and dynamic offers may target components in the |
| /// collection. "Static offers" are the offers in the `ComponentDecl` that |
| /// target the collection itself. "Dynamic offers" are additional offers |
| /// that are passed to `CreateChild` at runtime. |
| STATIC_AND_DYNAMIC = 2; |
| }; |