diff options
Diffstat (limited to 'mobile/android/android-components/components/service/nimbus/messaging.fml.yaml')
-rw-r--r-- | mobile/android/android-components/components/service/nimbus/messaging.fml.yaml | 194 |
1 files changed, 194 insertions, 0 deletions
diff --git a/mobile/android/android-components/components/service/nimbus/messaging.fml.yaml b/mobile/android/android-components/components/service/nimbus/messaging.fml.yaml new file mode 100644 index 0000000000..c53456e31e --- /dev/null +++ b/mobile/android/android-components/components/service/nimbus/messaging.fml.yaml @@ -0,0 +1,194 @@ +--- +about: + description: Nimbus Feature Manifest for Android + kotlin: + package: mozilla.components.service.nimbus + class: .messaging.FxNimbusMessaging +channels: + - release + - debug +features: + nimbus-system: + description: | + Configuration of the Nimbus System in Android. + variables: + refresh-interval-foreground: + description: | + The minimum interval in minutes between fetching experiment + recipes in the foreground. + type: Int + default: 60 # 1 hour + + messaging: + description: | + The in-app messaging system. + + allow-coenrollment: true + + variables: + messages: + description: A growable collection of messages + type: Map<MessageKey, MessageData> + string-alias: MessageKey + default: {} + + triggers: + description: > + A collection of out the box trigger + expressions. Each entry maps to a + valid JEXL expression. + type: Map<TriggerName, String> + string-alias: TriggerName + default: {} + styles: + description: > + A map of styles to configure message + appearance. + type: Map<StyleName, StyleData> + string-alias: StyleName + default: {} + + $$surfaces: + description: | + A list available surfaces for this app. + + This should not be written to by experiments, and should be hidden to users. + type: List<SurfaceName> + string-alias: SurfaceName + default: [] + + actions: + type: Map<ActionName, String> + description: A growable map of action URLs. + string-alias: ActionName + default: + OPEN_URL: ://open + + on-control: + type: ControlMessageBehavior + description: What should be displayed when a control message is selected. + default: show-next-message + notification-config: + description: Configuration of the notification worker for all notification messages. + type: NotificationConfig + default: {} + message-under-experiment: + description: Deprecated in favor of `MessageData#experiment`. This will be removed in future releases. + type: Option<MessageKey> + default: null + $$experiment: + description: The only acceptable value for `MessageData#experiment`. This should not be set by experiment. + type: ExperimentSlug + string-alias: ExperimentSlug + default: "{experiment}" + defaults: + +objects: + MessageData: + description: > + An object to describe a message. It uses human + readable strings to describe the triggers, action and + style of the message as well as the text of the message + and call to action. + fields: + action: + type: ActionName + description: > + A URL of a page or a deeplink. + This may have substitution variables in. + # This should never be defaulted. + default: OPEN_URL + action-params: + description: > + A string map containing query parameters that will be appended to the action URL. + This is useful for opening URLs in tabs, or specifying that the tab should be private. + The values may have substitutions, e.g. "url": "https://example.com/id={uuid}", + "private": "true". + + The params and their values are all determined downstream of the messaging component, by + the embedding app's deeplink processing machinery. + type: Map<String, String> + default: {} + title: + type: Option<Text> + description: "The title text displayed to the user" + default: null + text: + type: Text + description: "The message text displayed to the user" + # This should never be defaulted. + default: "" + is-control: + type: Boolean + description: "Indicates if this message is the control message, if true shouldn't be displayed" + default: false + experiment: + type: Option<ExperimentSlug> + description: The slug of the experiment that this message came from. + default: null + button-label: + type: Option<Text> + description: > + The text on the button. If no text + is present, the whole message is clickable. + default: null + style: + type: StyleName + description: > + The style as described in a + `StyleData` from the styles table. + default: DEFAULT + surface: + description: + The surface identifier for this message. + type: SurfaceName + default: homescreen + trigger-if-all: + type: List<TriggerName> + description: > + A list of strings corresponding to + targeting expressions. The message will be + shown if all expressions are `true`. + default: [] + exclude-if-any: + type: List<TriggerName> + description: > + A list of strings corresponding to + targeting expressions. The message will not be + shown if any of the expressions are `true`. + default: [ ] + StyleData: + description: > + A group of properties (predominantly visual) to + describe the style of the message. + fields: + priority: + type: Int + description: > + The importance of this message. + 0 is not very important, 100 is very important. + default: 50 + max-display-count: + type: Int + description: > + How many sessions will this message be shown to the user + before it is expired. + default: 5 + NotificationConfig: + description: Attributes controlling the global configuration of notification messages. + fields: + refresh-interval: + type: Int + description: > + How often, in minutes, the notification message worker will wake up and check for new + messages. + default: 240 # 4 hours + +enums: + ControlMessageBehavior: + description: An enum to influence what should be displayed when a control message is selected. + variants: + show-next-message: + description: The next eligible message should be shown. + show-none: + description: The surface should show no message. |