| // Copyright 2017 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.modular; |
| |
| /// Information about a Module instance in a story. |
| table ModuleData { |
| /// The URL of the Module binary. |
| 1: string module_url; |
| |
| /// The named path leading up to this Module instance. The last name in this |
| /// array is the name by which the Module was started by the parent Module |
| /// instance calling StartModule(). |
| 2: vector<string> module_path; |
| |
| /// Contains the mapping of Mod parameter name to Link instances for this mod. |
| 3: ModuleParameterMap parameter_map; |
| |
| /// The way in which this Module instance was first started in the story, |
| /// either by request from another Module instance (INTERNAL) or by request |
| /// from outside the story (i.e. by suggestion from an agent - EXTERNAL). |
| 4: ModuleSource module_source; |
| |
| /// The `surface_relation` that was used to start this Module instance with. |
| /// The same is used when re-inflating the Module instance when the story is |
| /// resumed. A SurfaceRelation value of null represents an embedded Module |
| /// instance (started by EmbedModule()) that is not managed by the story shell. |
| 5: SurfaceRelation surface_relation; |
| |
| /// True if this module was removed from its story either through |
| /// ModuleController.Stop() or ModuleContext.RemoveSelfFromStory(). |
| 6: bool module_deleted; |
| |
| /// The intent that was issued to start add this Module instance to the story. |
| /// Some Module instances may have been added not by an Intent, for example as |
| /// the initial module of a story. For those the field may be null. |
| /// |
| /// TODO(thatguy,mesch): This field should now always be set, so make it |
| /// required once the framework is cleaned up enough to guarantee this |
| /// statement. |
| 7: Intent intent; |
| |
| /// If true, this module was started by a parent module using |
| /// ModuleContext.EmbedModule(), and its view is not managed by the |
| /// StoryShell. |
| 8: bool is_embedded; |
| |
| /// Collection of user-defined key-value attributes that describe this surface (module). |
| /// |
| /// The `Annotation.value` field of each `Annotation` is always set. |
| 9: vector<Annotation>:MAX_ANNOTATIONS_PER_MODULE annotations; |
| }; |
| |
| enum ModuleSource { |
| /// Module that was added to the story from within the story by another |
| /// module using ModuleContext.AddModuleToStory() or |
| /// ModuleContext.EmbedModule(). |
| INTERNAL = 0; |
| |
| /// Module that was added to the story from outside the story using |
| /// PuppetMaster. |
| EXTERNAL = 1; |
| }; |
| |
| struct ModuleParameterMap { |
| vector<ModuleParameterMapEntry> entries; |
| }; |
| |
| struct ModuleParameterMapEntry { |
| /// A null [name] is allowed for backwards compatibility with default links. |
| /// TODO(thatguy); When no modules use null link names any more, make this |
| /// required. |
| string? name; |
| LinkPath link_path; |
| }; |