| // 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; |
| |
| using fuchsia.mem; |
| |
| // The Intent struct is a runtime descriptor for an abstract action to be initiated |
| // in Fuchsia. For details please see docs/intent.md. |
| struct Intent { |
| // The name of the action represented by this Intent. |
| // |
| // This is nullable for backwards compatibility. |
| // TODO(MI4-1100): Make action non-nullable. |
| string? action; |
| |
| // An explicit handler for the Intent. Specified as the component URL of the |
| // module. |
| string? handler; |
| |
| // The parameters that will be passed to the handler of |action|. |
| vector<IntentParameter>? parameters; |
| }; |
| |
| // A struct representing a parameter that is passed to the handler of an Intent's |
| // Action. |
| struct IntentParameter { |
| // The name of the parameter. The handler (i.e. selected mod) will be provided |
| // with the data for this parameter under a link called |name|. |
| string? name; |
| |
| // The data that will be passed to the intent handler. |
| IntentParameterData data; |
| }; |
| |
| union IntentParameterData { |
| // Set this if you already have an Entity reference at runtime. |
| // Entity.getTypes() will be used to set the constraints for this noun during |
| // resolution. |
| string entity_reference; |
| |
| // Set this if you have structured JSON data. Values typically are a JSON |
| // object with a "@type" attribute and other associated data. TODO(thatguy): |
| // We need to decide if we want to keep this in place, or deprecate this |
| // eventually and move entirely to using Entity references. |
| // |
| // DEPRECATED: Use |entity_reference|. |
| fuchsia.mem.Buffer json; |
| |
| // Set this if you want to explicitly define this noun's allowed types. This |
| // is also useful in the cases where the noun has a 'direction' of type |
| // 'output', and you wish to set the allowable output types from the Module |
| // (see docs/modular/manifests/action_template.md for a definition of |
| // 'direction'). |
| // |
| // Only one entry in |entity_type| must match the constraint specified by |
| // the Module for the constraint to be considered satisfied. |
| vector<string> entity_type; |
| }; |