1707 lines
58 KiB
JSON
1707 lines
58 KiB
JSON
{
|
|
"$schema": "https://json-schema.org/draft/2019-09/schema",
|
|
"$id": "chrome://browser/content/asrouter/schemas/MessagingExperiment.schema.json",
|
|
"title": "Messaging Experiment",
|
|
"description": "A Firefox Messaging System message.",
|
|
"if": {
|
|
"type": "object",
|
|
"properties": {
|
|
"template": {
|
|
"const": "multi"
|
|
}
|
|
},
|
|
"required": [
|
|
"template"
|
|
]
|
|
},
|
|
"then": {
|
|
"$ref": "chrome://browser/content/asrouter/schemas/MessagingExperiment.schema.json#/$defs/MultiMessage"
|
|
},
|
|
"else": {
|
|
"$ref": "chrome://browser/content/asrouter/schemas/MessagingExperiment.schema.json#/$defs/TemplatedMessage"
|
|
},
|
|
"$defs": {
|
|
"BookmarksBarButton": {
|
|
"$schema": "https://json-schema.org/draft/2019-09/schema",
|
|
"$id": "file:///BookmarksBarButton.schema.json",
|
|
"title": "BookmarksBarButton",
|
|
"description": "A template with a label and a special message action (currently only supports OPEN_URL)",
|
|
"allOf": [
|
|
{
|
|
"$ref": "chrome://browser/content/asrouter/schemas/MessagingExperiment.schema.json#/$defs/Message"
|
|
}
|
|
],
|
|
"type": "object",
|
|
"properties": {
|
|
"template": {
|
|
"type": "string",
|
|
"const": "bookmarks_bar_button"
|
|
},
|
|
"content": {
|
|
"type": "object",
|
|
"properties": {
|
|
"action": {
|
|
"type": "object",
|
|
"properties": {
|
|
"type": {
|
|
"type": "string",
|
|
"description": "Action dispatched by the button."
|
|
},
|
|
"data": {
|
|
"type": "object"
|
|
}
|
|
},
|
|
"required": [
|
|
"type"
|
|
],
|
|
"additionalProperties": true
|
|
}
|
|
},
|
|
"additionalProperties": true
|
|
}
|
|
},
|
|
"additionalProperties": true,
|
|
"required": [
|
|
"targeting"
|
|
]
|
|
},
|
|
"CFRUrlbarChiclet": {
|
|
"$schema": "https://json-schema.org/draft/2019-09/schema",
|
|
"$id": "file:///CFRUrlbarChiclet.schema.json",
|
|
"title": "CFRUrlbarChiclet",
|
|
"description": "A template with a chiclet button with text.",
|
|
"allOf": [
|
|
{
|
|
"$ref": "chrome://browser/content/asrouter/schemas/MessagingExperiment.schema.json#/$defs/Message"
|
|
}
|
|
],
|
|
"type": "object",
|
|
"properties": {
|
|
"content": {
|
|
"type": "object",
|
|
"properties": {
|
|
"category": {
|
|
"type": "string",
|
|
"description": "Attribute used for different groups of messages from the same provider"
|
|
},
|
|
"layout": {
|
|
"type": "string",
|
|
"description": "Describes how content should be displayed.",
|
|
"enum": [
|
|
"chiclet_open_url"
|
|
]
|
|
},
|
|
"bucket_id": {
|
|
"type": "string",
|
|
"description": "A bucket identifier for the addon. This is used in order to anonymize telemetry for history-sensitive targeting."
|
|
},
|
|
"notification_text": {
|
|
"$ref": "chrome://browser/content/asrouter/schemas/MessagingExperiment.schema.json#/$defs/localizableText",
|
|
"description": "The text in the small blue chicklet that appears in the URL bar. This can be a reference to a localized string in Firefox or just a plain string."
|
|
},
|
|
"active_color": {
|
|
"type": "string",
|
|
"description": "Background color of the button"
|
|
},
|
|
"action": {
|
|
"type": "object",
|
|
"properties": {
|
|
"url": {
|
|
"description": "The page to open when the button is clicked.",
|
|
"type": "string",
|
|
"format": "moz-url-format"
|
|
},
|
|
"where": {
|
|
"description": "Should it open in a new tab or the current tab",
|
|
"type": "string",
|
|
"enum": [
|
|
"current",
|
|
"tabshifted"
|
|
]
|
|
}
|
|
},
|
|
"additionalProperties": true,
|
|
"required": [
|
|
"url",
|
|
"where"
|
|
]
|
|
}
|
|
},
|
|
"additionalProperties": true,
|
|
"required": [
|
|
"layout",
|
|
"category",
|
|
"bucket_id",
|
|
"notification_text",
|
|
"action"
|
|
]
|
|
},
|
|
"template": {
|
|
"type": "string",
|
|
"const": "cfr_urlbar_chiclet"
|
|
}
|
|
},
|
|
"required": [
|
|
"targeting",
|
|
"trigger"
|
|
]
|
|
},
|
|
"ExtensionDoorhanger": {
|
|
"$schema": "https://json-schema.org/draft/2019-09/schema",
|
|
"$id": "file:///ExtensionDoorhanger.schema.json",
|
|
"title": "ExtensionDoorhanger",
|
|
"description": "A template with a heading, addon icon, title and description. No markup allowed.",
|
|
"allOf": [
|
|
{
|
|
"$ref": "chrome://browser/content/asrouter/schemas/MessagingExperiment.schema.json#/$defs/Message"
|
|
}
|
|
],
|
|
"type": "object",
|
|
"properties": {
|
|
"content": {
|
|
"type": "object",
|
|
"properties": {
|
|
"category": {
|
|
"type": "string",
|
|
"description": "Attribute used for different groups of messages from the same provider"
|
|
},
|
|
"layout": {
|
|
"type": "string",
|
|
"description": "Attribute used for different groups of messages from the same provider",
|
|
"enum": [
|
|
"short_message",
|
|
"icon_and_message",
|
|
"addon_recommendation"
|
|
]
|
|
},
|
|
"anchor_id": {
|
|
"type": "string",
|
|
"description": "A DOM element ID that the pop-over will be anchored."
|
|
},
|
|
"alt_anchor_id": {
|
|
"type": "string",
|
|
"description": "An alternate DOM element ID that the pop-over will be anchored."
|
|
},
|
|
"bucket_id": {
|
|
"type": "string",
|
|
"description": "A bucket identifier for the addon. This is used in order to anonymize telemetry for history-sensitive targeting."
|
|
},
|
|
"skip_address_bar_notifier": {
|
|
"type": "boolean",
|
|
"description": "Skip the 'Recommend' notifier and show directly."
|
|
},
|
|
"persistent_doorhanger": {
|
|
"type": "boolean",
|
|
"description": "Prevent the doorhanger from being dismissed if user interacts with the page or switches between applications."
|
|
},
|
|
"show_in_private_browsing": {
|
|
"type": "boolean",
|
|
"description": "Whether to allow the message to be shown in private browsing mode. Defaults to false."
|
|
},
|
|
"notification_text": {
|
|
"$ref": "chrome://browser/content/asrouter/schemas/MessagingExperiment.schema.json#/$defs/localizableText",
|
|
"description": "The text in the small blue chicklet that appears in the URL bar. This can be a reference to a localized string in Firefox or just a plain string."
|
|
},
|
|
"info_icon": {
|
|
"type": "object",
|
|
"description": "The small icon displayed in the top right corner of the pop-over. Should be 19x19px, svg or png. Defaults to a small question mark.",
|
|
"properties": {
|
|
"label": {
|
|
"oneOf": [
|
|
{
|
|
"type": "object",
|
|
"properties": {
|
|
"attributes": {
|
|
"type": "object",
|
|
"properties": {
|
|
"tooltiptext": {
|
|
"$ref": "chrome://browser/content/asrouter/schemas/MessagingExperiment.schema.json#/$defs/localizableText",
|
|
"description": "Text for button tooltip used to provide information about the doorhanger."
|
|
}
|
|
},
|
|
"required": [
|
|
"tooltiptext"
|
|
]
|
|
}
|
|
},
|
|
"required": [
|
|
"attributes"
|
|
]
|
|
},
|
|
{
|
|
"$ref": "chrome://browser/content/asrouter/schemas/MessagingExperiment.schema.json#/$defs/localizedText"
|
|
}
|
|
]
|
|
},
|
|
"sumo_path": {
|
|
"type": "string",
|
|
"description": "Last part of the path in the URL to the support page with the information about the doorhanger.",
|
|
"examples": [
|
|
"extensionpromotions",
|
|
"extensionrecommendations"
|
|
]
|
|
}
|
|
}
|
|
},
|
|
"learn_more": {
|
|
"type": "string",
|
|
"description": "Last part of the path in the SUMO URL to the support page with the information about the doorhanger.",
|
|
"examples": [
|
|
"extensionpromotions",
|
|
"extensionrecommendations"
|
|
]
|
|
},
|
|
"heading_text": {
|
|
"$ref": "chrome://browser/content/asrouter/schemas/MessagingExperiment.schema.json#/$defs/localizableText",
|
|
"description": "The larger heading text displayed in the pop-over. This can be a reference to a localized string in Firefox or just a plain string."
|
|
},
|
|
"icon": {
|
|
"$ref": "file:///ExtensionDoorhanger.schema.json#/$defs/linkUrl",
|
|
"description": "The icon displayed in the pop-over. Should be 32x32px or 64x64px and png/svg."
|
|
},
|
|
"icon_dark_theme": {
|
|
"type": "string",
|
|
"description": "Pop-over icon, dark theme variant. Should be 32x32px or 64x64px and png/svg."
|
|
},
|
|
"icon_class": {
|
|
"type": "string",
|
|
"description": "CSS class of the pop-over icon."
|
|
},
|
|
"addon": {
|
|
"description": "Addon information including AMO URL.",
|
|
"type": "object",
|
|
"properties": {
|
|
"id": {
|
|
"$ref": "file:///ExtensionDoorhanger.schema.json#/$defs/plainText",
|
|
"description": "Unique addon ID"
|
|
},
|
|
"title": {
|
|
"$ref": "file:///ExtensionDoorhanger.schema.json#/$defs/plainText",
|
|
"description": "Addon name"
|
|
},
|
|
"author": {
|
|
"$ref": "file:///ExtensionDoorhanger.schema.json#/$defs/plainText",
|
|
"description": "Addon author"
|
|
},
|
|
"icon": {
|
|
"$ref": "file:///ExtensionDoorhanger.schema.json#/$defs/linkUrl",
|
|
"description": "The icon displayed in the pop-over. Should be 64x64px and png/svg."
|
|
},
|
|
"rating": {
|
|
"type": "string",
|
|
"description": "Star rating"
|
|
},
|
|
"users": {
|
|
"type": "string",
|
|
"description": "Installed users"
|
|
},
|
|
"amo_url": {
|
|
"$ref": "file:///ExtensionDoorhanger.schema.json#/$defs/linkUrl",
|
|
"description": "Link that offers more information related to the addon."
|
|
}
|
|
},
|
|
"required": [
|
|
"title",
|
|
"author",
|
|
"icon",
|
|
"amo_url"
|
|
]
|
|
},
|
|
"text": {
|
|
"$ref": "chrome://browser/content/asrouter/schemas/MessagingExperiment.schema.json#/$defs/localizableText",
|
|
"description": "The body text displayed in the pop-over. This can be a reference to a localized string in Firefox or just a plain string."
|
|
},
|
|
"descriptionDetails": {
|
|
"description": "Additional information and steps on how to use",
|
|
"type": "object",
|
|
"properties": {
|
|
"steps": {
|
|
"description": "Array of string_ids",
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "chrome://browser/content/asrouter/schemas/MessagingExperiment.schema.json#/$defs/localizedText",
|
|
"description": "Id of string to localized addon description"
|
|
}
|
|
}
|
|
},
|
|
"required": [
|
|
"steps"
|
|
]
|
|
},
|
|
"buttons": {
|
|
"description": "The label and functionality for the buttons in the pop-over.",
|
|
"type": "object",
|
|
"properties": {
|
|
"primary": {
|
|
"type": "object",
|
|
"properties": {
|
|
"label": {
|
|
"type": "object",
|
|
"oneOf": [
|
|
{
|
|
"properties": {
|
|
"value": {
|
|
"$ref": "file:///ExtensionDoorhanger.schema.json#/$defs/plainText",
|
|
"description": "Button label override used when a localized version is not available."
|
|
},
|
|
"attributes": {
|
|
"type": "object",
|
|
"properties": {
|
|
"accesskey": {
|
|
"type": "string",
|
|
"description": "A single character to be used as a shortcut key for the secondary button. This should be one of the characters that appears in the button label."
|
|
}
|
|
},
|
|
"required": [
|
|
"accesskey"
|
|
],
|
|
"description": "Button attributes."
|
|
}
|
|
},
|
|
"required": [
|
|
"value",
|
|
"attributes"
|
|
]
|
|
},
|
|
{
|
|
"$ref": "chrome://browser/content/asrouter/schemas/MessagingExperiment.schema.json#/$defs/localizedText"
|
|
}
|
|
],
|
|
"description": "Id of localized string or message override."
|
|
},
|
|
"action": {
|
|
"type": "object",
|
|
"properties": {
|
|
"type": {
|
|
"type": "string",
|
|
"description": "Action dispatched by the button."
|
|
},
|
|
"data": {
|
|
"properties": {
|
|
"url": {
|
|
"type": "string",
|
|
"$comment": "This is dynamically generated from the addon.id. See CFRPageActions.sys.mjs",
|
|
"description": "URL used in combination with the primary action dispatched."
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"secondary": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "object",
|
|
"properties": {
|
|
"label": {
|
|
"type": "object",
|
|
"oneOf": [
|
|
{
|
|
"properties": {
|
|
"value": {
|
|
"allOf": [
|
|
{
|
|
"$ref": "file:///ExtensionDoorhanger.schema.json#/$defs/plainText"
|
|
},
|
|
{
|
|
"description": "Button label override used when a localized version is not available."
|
|
}
|
|
]
|
|
},
|
|
"attributes": {
|
|
"type": "object",
|
|
"properties": {
|
|
"accesskey": {
|
|
"type": "string",
|
|
"description": "A single character to be used as a shortcut key for the secondary button. This should be one of the characters that appears in the button label."
|
|
}
|
|
},
|
|
"required": [
|
|
"accesskey"
|
|
],
|
|
"description": "Button attributes."
|
|
}
|
|
},
|
|
"required": [
|
|
"value",
|
|
"attributes"
|
|
]
|
|
},
|
|
{
|
|
"properties": {
|
|
"string_id": {
|
|
"allOf": [
|
|
{
|
|
"$ref": "file:///ExtensionDoorhanger.schema.json#/$defs/plainText"
|
|
},
|
|
{
|
|
"description": "Id of localized string for button"
|
|
}
|
|
]
|
|
}
|
|
},
|
|
"required": [
|
|
"string_id"
|
|
]
|
|
}
|
|
],
|
|
"description": "Id of localized string or message override."
|
|
},
|
|
"action": {
|
|
"type": "object",
|
|
"properties": {
|
|
"type": {
|
|
"type": "string",
|
|
"description": "Action dispatched by the button."
|
|
},
|
|
"data": {
|
|
"properties": {
|
|
"url": {
|
|
"allOf": [
|
|
{
|
|
"$ref": "file:///ExtensionDoorhanger.schema.json#/$defs/linkUrl"
|
|
},
|
|
{
|
|
"description": "URL used in combination with the primary action dispatched."
|
|
}
|
|
]
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"additionalProperties": true,
|
|
"required": [
|
|
"layout",
|
|
"bucket_id",
|
|
"heading_text",
|
|
"text",
|
|
"buttons"
|
|
],
|
|
"if": {
|
|
"properties": {
|
|
"skip_address_bar_notifier": {
|
|
"anyOf": [
|
|
{
|
|
"const": "false"
|
|
},
|
|
{
|
|
"const": null
|
|
}
|
|
]
|
|
}
|
|
}
|
|
},
|
|
"then": {
|
|
"required": [
|
|
"category",
|
|
"notification_text"
|
|
]
|
|
}
|
|
},
|
|
"template": {
|
|
"type": "string",
|
|
"enum": [
|
|
"cfr_doorhanger",
|
|
"milestone_message"
|
|
]
|
|
}
|
|
},
|
|
"additionalProperties": true,
|
|
"required": [
|
|
"targeting",
|
|
"trigger"
|
|
],
|
|
"$defs": {
|
|
"plainText": {
|
|
"description": "Plain text (no HTML allowed)",
|
|
"type": "string"
|
|
},
|
|
"linkUrl": {
|
|
"description": "Target for links or buttons",
|
|
"type": "string",
|
|
"format": "uri"
|
|
}
|
|
}
|
|
},
|
|
"InfoBar": {
|
|
"$schema": "https://json-schema.org/draft/2019-09/schema",
|
|
"$id": "file:///InfoBar.schema.json",
|
|
"title": "InfoBar",
|
|
"description": "A template with an image, test and buttons.",
|
|
"allOf": [
|
|
{
|
|
"$ref": "chrome://browser/content/asrouter/schemas/MessagingExperiment.schema.json#/$defs/Message"
|
|
}
|
|
],
|
|
"type": "object",
|
|
"properties": {
|
|
"content": {
|
|
"type": "object",
|
|
"properties": {
|
|
"type": {
|
|
"type": "string",
|
|
"description": "Specifies where the message should appear and persist: 'global' (persists across tabs in the current window), 'tab' (only visible in the current tab), or 'universal' (visible across all tabs and windows, current and future).",
|
|
"enum": [
|
|
"global",
|
|
"tab",
|
|
"universal"
|
|
]
|
|
},
|
|
"text": {
|
|
"$ref": "chrome://browser/content/asrouter/schemas/MessagingExperiment.schema.json#/$defs/localizableText",
|
|
"description": "The text show in the notification box."
|
|
},
|
|
"priority": {
|
|
"description": "Infobar priority level https://searchfox.org/mozilla-central/rev/3aef835f6cb12e607154d56d68726767172571e4/toolkit/content/widgets/notificationbox.js#387",
|
|
"type": "number",
|
|
"minumum": 0,
|
|
"exclusiveMaximum": 10
|
|
},
|
|
"dismissable": {
|
|
"description": "Should the infobar include an X dismiss button, defaults to true",
|
|
"type": "boolean"
|
|
},
|
|
"buttons": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "object",
|
|
"properties": {
|
|
"label": {
|
|
"$ref": "chrome://browser/content/asrouter/schemas/MessagingExperiment.schema.json#/$defs/localizableText",
|
|
"description": "The text label of the button."
|
|
},
|
|
"primary": {
|
|
"type": "boolean",
|
|
"description": "Is this the primary button?"
|
|
},
|
|
"accessKey": {
|
|
"type": "string",
|
|
"description": "Keyboard shortcut letter."
|
|
},
|
|
"action": {
|
|
"type": "object",
|
|
"properties": {
|
|
"type": {
|
|
"type": "string",
|
|
"description": "Action dispatched by the button."
|
|
},
|
|
"data": {
|
|
"type": "object"
|
|
}
|
|
},
|
|
"required": [
|
|
"type"
|
|
],
|
|
"additionalProperties": true
|
|
},
|
|
"supportPage": {
|
|
"type": "string",
|
|
"description": "A page title on SUMO to link to"
|
|
}
|
|
},
|
|
"required": [
|
|
"label",
|
|
"action"
|
|
],
|
|
"additionalProperties": true
|
|
}
|
|
}
|
|
},
|
|
"additionalProperties": true,
|
|
"required": [
|
|
"text",
|
|
"buttons"
|
|
]
|
|
},
|
|
"template": {
|
|
"type": "string",
|
|
"const": "infobar"
|
|
}
|
|
},
|
|
"additionalProperties": true,
|
|
"required": [
|
|
"targeting",
|
|
"trigger"
|
|
],
|
|
"$defs": {
|
|
"plainText": {
|
|
"description": "Plain text (no HTML allowed)",
|
|
"type": "string"
|
|
},
|
|
"linkUrl": {
|
|
"description": "Target for links or buttons",
|
|
"type": "string",
|
|
"format": "uri"
|
|
}
|
|
}
|
|
},
|
|
"MenuMessage": {
|
|
"$schema": "https://json-schema.org/draft/2019-09/schema",
|
|
"$id": "file:///MenuMessage.schema.json",
|
|
"title": "MenuMessage",
|
|
"description": "A template for messages that appear within our menus.",
|
|
"allOf": [
|
|
{
|
|
"$ref": "chrome://browser/content/asrouter/schemas/MessagingExperiment.schema.json#/$defs/Message"
|
|
}
|
|
],
|
|
"type": "object",
|
|
"properties": {
|
|
"content": {
|
|
"type": "object",
|
|
"properties": {
|
|
"messageType": {
|
|
"type": "string",
|
|
"description": "The subtype of the message.",
|
|
"enum": [
|
|
"fxa_cta"
|
|
]
|
|
},
|
|
"primaryText": {
|
|
"$ref": "chrome://browser/content/asrouter/schemas/MessagingExperiment.schema.json#/$defs/localizableText",
|
|
"description": "The primary text for the message, which offers the value proposition to the user."
|
|
},
|
|
"secondaryText": {
|
|
"$ref": "chrome://browser/content/asrouter/schemas/MessagingExperiment.schema.json#/$defs/localizableText",
|
|
"description": "The second text for the message, which offers more detail on the value proposition to the user."
|
|
},
|
|
"closeAction": {
|
|
"type": "object",
|
|
"properties": {
|
|
"type": {
|
|
"type": "string",
|
|
"description": "Action dispatched by the button."
|
|
},
|
|
"data": {
|
|
"type": "object"
|
|
}
|
|
},
|
|
"required": [
|
|
"type"
|
|
],
|
|
"additionalProperties": true,
|
|
"description": "The action to take upon clicking the close button."
|
|
},
|
|
"primaryAction": {
|
|
"type": "object",
|
|
"properties": {
|
|
"type": {
|
|
"type": "string",
|
|
"description": "Action dispatched by the button."
|
|
},
|
|
"data": {
|
|
"type": "object"
|
|
}
|
|
},
|
|
"required": [
|
|
"type"
|
|
],
|
|
"additionalProperties": true,
|
|
"description": "The action to take upon clicking the primary action button."
|
|
},
|
|
"primaryActionText": {
|
|
"$ref": "chrome://browser/content/asrouter/schemas/MessagingExperiment.schema.json#/$defs/localizableText",
|
|
"description": "The label for the primary action."
|
|
},
|
|
"imageURL": {
|
|
"type": "string",
|
|
"description": "URL for image to use with the content."
|
|
},
|
|
"imageWidth": {
|
|
"type": "number",
|
|
"description": "The image width in pixels. Default is 120px."
|
|
},
|
|
"imageVerticalTopOffset": {
|
|
"type": "number",
|
|
"description": "The margin-block-start value to apply to the image in pixels, used in 'column' layouts."
|
|
},
|
|
"imageVerticalBottomOffset": {
|
|
"type": "number",
|
|
"description": "The margin-block-end value to apply to the image in pixels, used in 'row' layouts."
|
|
},
|
|
"containerVerticalBottomOffset": {
|
|
"type": "number",
|
|
"description": "The container's margin-block-end value in pixels. Used to visually offset the image in 'row' layouts when 'imageVerticalBottomOffset' is applied."
|
|
},
|
|
"layout": {
|
|
"type": "string",
|
|
"description": "The layout of the message content and illustration. Row displays the image to the inline to the right of the text, column displays the image above the text.",
|
|
"enum": [
|
|
"row",
|
|
"column"
|
|
]
|
|
}
|
|
}
|
|
},
|
|
"template": {
|
|
"type": "string",
|
|
"const": "menu_message"
|
|
},
|
|
"testingTriggerContext": {
|
|
"type": "string",
|
|
"enum": [
|
|
"app_menu",
|
|
"pxi_menu"
|
|
]
|
|
}
|
|
},
|
|
"additionalProperties": true
|
|
},
|
|
"NewtabPromoMessage": {
|
|
"$schema": "https://json-schema.org/draft/2019-09/schema",
|
|
"$id": "file:///NewtabPromoMessage.schema.json",
|
|
"title": "PBNewtabPromoMessage",
|
|
"description": "Message shown on the private browsing newtab page.",
|
|
"allOf": [
|
|
{
|
|
"$ref": "chrome://browser/content/asrouter/schemas/MessagingExperiment.schema.json#/$defs/Message"
|
|
}
|
|
],
|
|
"type": "object",
|
|
"properties": {
|
|
"content": {
|
|
"type": "object",
|
|
"properties": {
|
|
"hideDefault": {
|
|
"type": "boolean",
|
|
"description": "Should we hide the default promo after the experiment promo is dismissed."
|
|
},
|
|
"infoEnabled": {
|
|
"type": "boolean",
|
|
"description": "Should we show the info section."
|
|
},
|
|
"infoIcon": {
|
|
"type": "string",
|
|
"description": "Icon shown in the left side of the info section. Default is the private browsing icon."
|
|
},
|
|
"infoTitle": {
|
|
"type": "string",
|
|
"description": "Is the title in the info section enabled."
|
|
},
|
|
"infoTitleEnabled": {
|
|
"type": "boolean",
|
|
"description": "Is the title in the info section enabled."
|
|
},
|
|
"infoBody": {
|
|
"type": "string",
|
|
"description": "Text content in the info section."
|
|
},
|
|
"infoLinkText": {
|
|
"type": "string",
|
|
"description": "Text for the link in the info section."
|
|
},
|
|
"infoLinkUrl": {
|
|
"type": "string",
|
|
"description": "URL for the info section link.",
|
|
"format": "moz-url-format"
|
|
},
|
|
"promoEnabled": {
|
|
"type": "boolean",
|
|
"description": "Should we show the promo section."
|
|
},
|
|
"promoType": {
|
|
"type": "string",
|
|
"description": "Promo type used to determine if promo should show to a given user",
|
|
"enum": [
|
|
"FOCUS",
|
|
"VPN",
|
|
"PIN",
|
|
"COOKIE_BANNERS",
|
|
"OTHER"
|
|
]
|
|
},
|
|
"promoSectionStyle": {
|
|
"type": "string",
|
|
"description": "Sets the position of the promo section. Possible values are: top, below-search, bottom. Default bottom.",
|
|
"enum": [
|
|
"top",
|
|
"below-search",
|
|
"bottom"
|
|
]
|
|
},
|
|
"promoTitle": {
|
|
"type": "string",
|
|
"description": "The text content of the promo section."
|
|
},
|
|
"promoTitleEnabled": {
|
|
"type": "boolean",
|
|
"description": "Should we show text content in the promo section."
|
|
},
|
|
"promoLinkText": {
|
|
"type": "string",
|
|
"description": "The text of the link in the promo box."
|
|
},
|
|
"promoHeader": {
|
|
"type": "string",
|
|
"description": "The title of the promo section."
|
|
},
|
|
"promoButton": {
|
|
"type": "object",
|
|
"properties": {
|
|
"action": {
|
|
"type": "object",
|
|
"properties": {
|
|
"type": {
|
|
"type": "string",
|
|
"description": "Action dispatched by the button."
|
|
},
|
|
"data": {
|
|
"type": "object"
|
|
}
|
|
},
|
|
"required": [
|
|
"type"
|
|
],
|
|
"additionalProperties": true
|
|
}
|
|
},
|
|
"required": [
|
|
"action"
|
|
]
|
|
},
|
|
"promoLinkType": {
|
|
"type": "string",
|
|
"description": "Type of promo link type. Possible values: link, button. Default is link.",
|
|
"enum": [
|
|
"link",
|
|
"button"
|
|
]
|
|
},
|
|
"promoImageLarge": {
|
|
"type": "string",
|
|
"description": "URL for image used on the left side of the promo box, larger, showcases some feature. Default off.",
|
|
"format": "uri"
|
|
},
|
|
"promoImageSmall": {
|
|
"type": "string",
|
|
"description": "URL for image used on the right side of the promo box, smaller, usually a logo. Default off.",
|
|
"format": "uri"
|
|
}
|
|
},
|
|
"additionalProperties": true,
|
|
"allOf": [
|
|
{
|
|
"if": {
|
|
"properties": {
|
|
"promoEnabled": {
|
|
"const": true
|
|
}
|
|
},
|
|
"required": [
|
|
"promoEnabled"
|
|
]
|
|
},
|
|
"then": {
|
|
"required": [
|
|
"promoButton"
|
|
]
|
|
}
|
|
},
|
|
{
|
|
"if": {
|
|
"properties": {
|
|
"infoEnabled": {
|
|
"const": true
|
|
}
|
|
},
|
|
"required": [
|
|
"infoEnabled"
|
|
]
|
|
},
|
|
"then": {
|
|
"required": [
|
|
"infoLinkText"
|
|
],
|
|
"if": {
|
|
"properties": {
|
|
"infoTitleEnabled": {
|
|
"const": true
|
|
}
|
|
},
|
|
"required": [
|
|
"infoTitleEnabled"
|
|
]
|
|
},
|
|
"then": {
|
|
"required": [
|
|
"infoTitle"
|
|
]
|
|
}
|
|
}
|
|
}
|
|
]
|
|
},
|
|
"template": {
|
|
"type": "string",
|
|
"const": "pb_newtab"
|
|
}
|
|
},
|
|
"additionalProperties": true,
|
|
"required": [
|
|
"targeting"
|
|
]
|
|
},
|
|
"NewtabMessage": {
|
|
"$schema": "https://json-schema.org/draft/2019-09/schema",
|
|
"$id": "file:///NewtabMessage.schema.json",
|
|
"title": "NewtabMessage",
|
|
"description": "A template for messages that are rendered within newtab",
|
|
"allOf": [
|
|
{
|
|
"$ref": "chrome://browser/content/asrouter/schemas/MessagingExperiment.schema.json#/$defs/Message"
|
|
}
|
|
],
|
|
"type": "object",
|
|
"properties": {
|
|
"content": {
|
|
"type": "object",
|
|
"properties": {
|
|
"messageType": {
|
|
"type": "string",
|
|
"description": "The subtype of the message."
|
|
}
|
|
},
|
|
"additionalProperties": true,
|
|
"required": [
|
|
"messageType"
|
|
]
|
|
},
|
|
"template": {
|
|
"type": "string",
|
|
"const": "newtab_message"
|
|
}
|
|
},
|
|
"additionalProperties": true,
|
|
"required": [
|
|
"targeting"
|
|
]
|
|
},
|
|
"Spotlight": {
|
|
"$schema": "https://json-schema.org/draft/2019-09/schema",
|
|
"$id": "file:///Spotlight.schema.json",
|
|
"title": "Spotlight",
|
|
"description": "A template with an image, title, content and two buttons.",
|
|
"allOf": [
|
|
{
|
|
"$ref": "chrome://browser/content/asrouter/schemas/MessagingExperiment.schema.json#/$defs/Message"
|
|
}
|
|
],
|
|
"type": "object",
|
|
"properties": {
|
|
"content": {
|
|
"type": "object",
|
|
"properties": {
|
|
"template": {
|
|
"type": "string",
|
|
"description": "Specify the layout template for the Spotlight",
|
|
"const": "multistage"
|
|
},
|
|
"backdrop": {
|
|
"type": "string",
|
|
"description": "Background css behind modal content"
|
|
},
|
|
"logo": {
|
|
"type": "object",
|
|
"properties": {
|
|
"imageURL": {
|
|
"type": "string",
|
|
"description": "URL for image to use with the content"
|
|
},
|
|
"imageId": {
|
|
"type": "string",
|
|
"description": "The ID for a remotely hosted image"
|
|
},
|
|
"size": {
|
|
"type": "string",
|
|
"description": "The logo size."
|
|
}
|
|
},
|
|
"additionalProperties": true
|
|
},
|
|
"screens": {
|
|
"type": "array",
|
|
"description": "Collection of individual screen content"
|
|
},
|
|
"transitions": {
|
|
"type": "boolean",
|
|
"description": "Show transitions within and between screens"
|
|
},
|
|
"disableEscClose": {
|
|
"type": "boolean",
|
|
"description": "Don't allow the message to be dismissed using the ESC key - for limited use in Spotlight modals only when the message content clearly informs the user that a decision is required to proceed"
|
|
},
|
|
"disableHistoryUpdates": {
|
|
"type": "boolean",
|
|
"description": "Don't alter the browser session's history stack - used with messaging surfaces like Feature Callouts"
|
|
},
|
|
"startScreen": {
|
|
"type": "integer",
|
|
"description": "Index of first screen to show from message, defaulting to 0"
|
|
},
|
|
"no-rdm": {
|
|
"type": "boolean",
|
|
"description": "If true, prevents the spotlight from entering responsive design mode at widths less than 800px"
|
|
}
|
|
},
|
|
"additionalProperties": true
|
|
},
|
|
"template": {
|
|
"type": "string",
|
|
"description": "Specify whether the surface is shown as a Spotlight modal or an in-surface Feature Callout dialog",
|
|
"enum": [
|
|
"spotlight",
|
|
"feature_callout"
|
|
]
|
|
}
|
|
},
|
|
"additionalProperties": true,
|
|
"required": [
|
|
"targeting"
|
|
]
|
|
},
|
|
"ToastNotification": {
|
|
"$schema": "https://json-schema.org/draft/2019-09/schema",
|
|
"$id": "file:///ToastNotification.schema.json",
|
|
"title": "ToastNotification",
|
|
"description": "A template for toast notifications displayed by the Alert service.",
|
|
"allOf": [
|
|
{
|
|
"$ref": "chrome://browser/content/asrouter/schemas/MessagingExperiment.schema.json#/$defs/Message"
|
|
}
|
|
],
|
|
"type": "object",
|
|
"properties": {
|
|
"content": {
|
|
"type": "object",
|
|
"properties": {
|
|
"title": {
|
|
"$ref": "chrome://browser/content/asrouter/schemas/MessagingExperiment.schema.json#/$defs/localizableText",
|
|
"description": "Id of localized string or message override of toast notification title"
|
|
},
|
|
"body": {
|
|
"$ref": "chrome://browser/content/asrouter/schemas/MessagingExperiment.schema.json#/$defs/localizableText",
|
|
"description": "Id of localized string or message override of toast notification body"
|
|
},
|
|
"icon_url": {
|
|
"description": "The URL of the image used as an icon of the toast notification.",
|
|
"type": "string",
|
|
"format": "moz-url-format"
|
|
},
|
|
"image_url": {
|
|
"description": "The URL of an image to be displayed as part of the notification.",
|
|
"type": "string",
|
|
"format": "moz-url-format"
|
|
},
|
|
"launch_url": {
|
|
"description": "The URL to launch when the notification or an action button is clicked.",
|
|
"type": "string",
|
|
"format": "moz-url-format"
|
|
},
|
|
"launch_action": {
|
|
"type": "object",
|
|
"properties": {
|
|
"type": {
|
|
"type": "string",
|
|
"description": "The launch action to be performed when Firefox is launched."
|
|
},
|
|
"data": {
|
|
"type": "object"
|
|
}
|
|
},
|
|
"required": [
|
|
"type"
|
|
],
|
|
"additionalProperties": true
|
|
},
|
|
"requireInteraction": {
|
|
"type": "boolean",
|
|
"description": "Whether the toast notification should remain active until the user clicks or dismisses it, rather than closing automatically."
|
|
},
|
|
"tag": {
|
|
"type": "string",
|
|
"description": "An identifying tag for the toast notification."
|
|
},
|
|
"data": {
|
|
"type": "object",
|
|
"description": "Arbitrary data associated with the toast notification."
|
|
},
|
|
"actions": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "object",
|
|
"properties": {
|
|
"title": {
|
|
"$ref": "chrome://browser/content/asrouter/schemas/MessagingExperiment.schema.json#/$defs/localizableText",
|
|
"description": "The action text to be shown to the user."
|
|
},
|
|
"action": {
|
|
"type": "string",
|
|
"description": "Opaque identifer that identifies action."
|
|
},
|
|
"iconURL": {
|
|
"type": "string",
|
|
"format": "uri",
|
|
"description": "URL of an icon to display with the action."
|
|
},
|
|
"windowsSystemActivationType": {
|
|
"type": "boolean",
|
|
"description": "Whether to have Windows process the given `action`."
|
|
},
|
|
"launch_action": {
|
|
"type": "object",
|
|
"properties": {
|
|
"type": {
|
|
"type": "string",
|
|
"description": "The launch action to be performed when Firefox is launched."
|
|
},
|
|
"data": {
|
|
"type": "object"
|
|
}
|
|
},
|
|
"required": [
|
|
"type"
|
|
],
|
|
"additionalProperties": true
|
|
}
|
|
},
|
|
"required": [
|
|
"action",
|
|
"title"
|
|
],
|
|
"additionalProperties": true
|
|
}
|
|
}
|
|
},
|
|
"additionalProperties": true,
|
|
"required": [
|
|
"title",
|
|
"body"
|
|
]
|
|
},
|
|
"template": {
|
|
"type": "string",
|
|
"const": "toast_notification"
|
|
}
|
|
},
|
|
"required": [
|
|
"content",
|
|
"targeting",
|
|
"template",
|
|
"trigger"
|
|
],
|
|
"additionalProperties": true
|
|
},
|
|
"ToolbarBadgeMessage": {
|
|
"$schema": "https://json-schema.org/draft/2019-09/schema",
|
|
"$id": "file:///ToolbarBadgeMessage.schema.json",
|
|
"title": "ToolbarBadgeMessage",
|
|
"description": "A template that specifies to which element in the browser toolbar to add a notification.",
|
|
"allOf": [
|
|
{
|
|
"$ref": "chrome://browser/content/asrouter/schemas/MessagingExperiment.schema.json#/$defs/Message"
|
|
}
|
|
],
|
|
"type": "object",
|
|
"properties": {
|
|
"content": {
|
|
"type": "object",
|
|
"properties": {
|
|
"target": {
|
|
"type": "string"
|
|
},
|
|
"action": {
|
|
"type": "object",
|
|
"properties": {
|
|
"id": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
"additionalProperties": true,
|
|
"required": [
|
|
"id"
|
|
],
|
|
"description": "Optional action to take in addition to showing the notification"
|
|
},
|
|
"delay": {
|
|
"type": "number",
|
|
"description": "Optional delay in ms after which to show the notification"
|
|
},
|
|
"badgeDescription": {
|
|
"$ref": "chrome://browser/content/asrouter/schemas/MessagingExperiment.schema.json#/$defs/localizedText",
|
|
"description": "This is used in combination with the badged button to offer a text based alternative to the visual badging. Example 'New Feature: What's New'"
|
|
}
|
|
},
|
|
"additionalProperties": true,
|
|
"required": [
|
|
"target"
|
|
]
|
|
},
|
|
"template": {
|
|
"type": "string",
|
|
"const": "toolbar_badge"
|
|
}
|
|
},
|
|
"additionalProperties": true,
|
|
"required": [
|
|
"targeting"
|
|
]
|
|
},
|
|
"UpdateAction": {
|
|
"$schema": "https://json-schema.org/draft/2019-09/schema",
|
|
"$id": "file:///UpdateAction.schema.json",
|
|
"title": "UpdateActionMessage",
|
|
"description": "A template for messages that execute predetermined actions.",
|
|
"allOf": [
|
|
{
|
|
"$ref": "chrome://browser/content/asrouter/schemas/MessagingExperiment.schema.json#/$defs/Message"
|
|
}
|
|
],
|
|
"type": "object",
|
|
"properties": {
|
|
"content": {
|
|
"type": "object",
|
|
"properties": {
|
|
"action": {
|
|
"type": "object",
|
|
"properties": {
|
|
"id": {
|
|
"type": "string"
|
|
},
|
|
"data": {
|
|
"type": "object",
|
|
"description": "Additional data provided as argument when executing the action",
|
|
"properties": {
|
|
"url": {
|
|
"type": "string",
|
|
"description": "URL data to be used as argument to the action"
|
|
},
|
|
"expireDelta": {
|
|
"type": "number",
|
|
"description": "Expiration timestamp to be used as argument to the action"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"additionalProperties": true,
|
|
"description": "Optional action to take in addition to showing the notification",
|
|
"required": [
|
|
"id",
|
|
"data"
|
|
]
|
|
}
|
|
},
|
|
"additionalProperties": true,
|
|
"required": [
|
|
"action"
|
|
]
|
|
},
|
|
"template": {
|
|
"type": "string",
|
|
"const": "update_action"
|
|
}
|
|
},
|
|
"required": [
|
|
"targeting"
|
|
]
|
|
},
|
|
"Message": {
|
|
"type": "object",
|
|
"properties": {
|
|
"id": {
|
|
"type": "string",
|
|
"description": "The message identifier"
|
|
},
|
|
"groups": {
|
|
"description": "Array of preferences used to control `enabled` status of the group. If any is `false` the group is disabled.",
|
|
"type": "array",
|
|
"items": {
|
|
"type": "string",
|
|
"description": "Preference name"
|
|
}
|
|
},
|
|
"template": {
|
|
"type": "string",
|
|
"description": "Which messaging template this message is using.",
|
|
"enum": [
|
|
"bookmarks_bar_button",
|
|
"cfr_urlbar_chiclet",
|
|
"cfr_doorhanger",
|
|
"milestone_message",
|
|
"infobar",
|
|
"menu_message",
|
|
"pb_newtab",
|
|
"newtab_message",
|
|
"spotlight",
|
|
"feature_callout",
|
|
"toast_notification",
|
|
"toolbar_badge",
|
|
"update_action"
|
|
]
|
|
},
|
|
"frequency": {
|
|
"type": "object",
|
|
"description": "An object containing frequency cap information for a message.",
|
|
"properties": {
|
|
"lifetime": {
|
|
"type": "integer",
|
|
"description": "The maximum lifetime impressions for a message.",
|
|
"minimum": 1,
|
|
"maximum": 100
|
|
},
|
|
"custom": {
|
|
"type": "array",
|
|
"description": "An array of custom frequency cap definitions.",
|
|
"items": {
|
|
"description": "A frequency cap definition containing time and max impression information",
|
|
"type": "object",
|
|
"properties": {
|
|
"period": {
|
|
"type": "integer",
|
|
"description": "Period of time in milliseconds (e.g. 86400000 for one day)"
|
|
},
|
|
"cap": {
|
|
"type": "integer",
|
|
"description": "The maximum impressions for the message within the defined period.",
|
|
"minimum": 1,
|
|
"maximum": 100
|
|
}
|
|
},
|
|
"required": [
|
|
"period",
|
|
"cap"
|
|
]
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"priority": {
|
|
"description": "The priority of the message. If there are two competing messages to show, the one with the highest priority will be shown",
|
|
"type": "integer"
|
|
},
|
|
"order": {
|
|
"description": "The order in which messages should be shown. Messages will be shown in increasing order.",
|
|
"type": "integer"
|
|
},
|
|
"targeting": {
|
|
"description": "A JEXL expression representing targeting information",
|
|
"type": "string"
|
|
},
|
|
"trigger": {
|
|
"description": "An action to trigger potentially showing the message",
|
|
"type": "object",
|
|
"properties": {
|
|
"id": {
|
|
"type": "string",
|
|
"description": "A string identifying the trigger action"
|
|
},
|
|
"params": {
|
|
"type": "array",
|
|
"description": "An optional array of string parameters for the trigger action",
|
|
"items": {
|
|
"anyOf": [
|
|
{
|
|
"type": "integer"
|
|
},
|
|
{
|
|
"type": "string"
|
|
}
|
|
]
|
|
}
|
|
}
|
|
},
|
|
"required": [
|
|
"id"
|
|
]
|
|
},
|
|
"provider": {
|
|
"description": "An identifier for the provider of this message, such as \"cfr\" or \"preview\".",
|
|
"type": "string"
|
|
}
|
|
},
|
|
"additionalProperties": true,
|
|
"dependentRequired": {
|
|
"content": [
|
|
"id",
|
|
"template"
|
|
],
|
|
"template": [
|
|
"id",
|
|
"content"
|
|
]
|
|
}
|
|
},
|
|
"localizedText": {
|
|
"type": "object",
|
|
"properties": {
|
|
"string_id": {
|
|
"description": "Id of localized string to be rendered.",
|
|
"type": "string"
|
|
}
|
|
},
|
|
"required": [
|
|
"string_id"
|
|
]
|
|
},
|
|
"localizableText": {
|
|
"description": "Either a raw string or an object containing the string_id of the localized text",
|
|
"oneOf": [
|
|
{
|
|
"type": "string",
|
|
"description": "The string to be rendered."
|
|
},
|
|
{
|
|
"$ref": "chrome://browser/content/asrouter/schemas/MessagingExperiment.schema.json#/$defs/localizedText"
|
|
}
|
|
]
|
|
},
|
|
"TemplatedMessage": {
|
|
"description": "An FxMS message of one of a variety of types.",
|
|
"type": "object",
|
|
"allOf": [
|
|
{
|
|
"$ref": "chrome://browser/content/asrouter/schemas/MessagingExperiment.schema.json#/$defs/Message"
|
|
},
|
|
{
|
|
"if": {
|
|
"type": "object",
|
|
"properties": {
|
|
"template": {
|
|
"type": "string",
|
|
"enum": [
|
|
"bookmarks_bar_button"
|
|
]
|
|
}
|
|
},
|
|
"required": [
|
|
"template"
|
|
]
|
|
},
|
|
"then": {
|
|
"$ref": "chrome://browser/content/asrouter/schemas/MessagingExperiment.schema.json#/$defs/BookmarksBarButton"
|
|
}
|
|
},
|
|
{
|
|
"if": {
|
|
"type": "object",
|
|
"properties": {
|
|
"template": {
|
|
"type": "string",
|
|
"enum": [
|
|
"cfr_urlbar_chiclet"
|
|
]
|
|
}
|
|
},
|
|
"required": [
|
|
"template"
|
|
]
|
|
},
|
|
"then": {
|
|
"$ref": "chrome://browser/content/asrouter/schemas/MessagingExperiment.schema.json#/$defs/CFRUrlbarChiclet"
|
|
}
|
|
},
|
|
{
|
|
"if": {
|
|
"type": "object",
|
|
"properties": {
|
|
"template": {
|
|
"type": "string",
|
|
"enum": [
|
|
"cfr_doorhanger",
|
|
"milestone_message"
|
|
]
|
|
}
|
|
},
|
|
"required": [
|
|
"template"
|
|
]
|
|
},
|
|
"then": {
|
|
"$ref": "chrome://browser/content/asrouter/schemas/MessagingExperiment.schema.json#/$defs/ExtensionDoorhanger"
|
|
}
|
|
},
|
|
{
|
|
"if": {
|
|
"type": "object",
|
|
"properties": {
|
|
"template": {
|
|
"type": "string",
|
|
"enum": [
|
|
"infobar"
|
|
]
|
|
}
|
|
},
|
|
"required": [
|
|
"template"
|
|
]
|
|
},
|
|
"then": {
|
|
"$ref": "chrome://browser/content/asrouter/schemas/MessagingExperiment.schema.json#/$defs/InfoBar"
|
|
}
|
|
},
|
|
{
|
|
"if": {
|
|
"type": "object",
|
|
"properties": {
|
|
"template": {
|
|
"type": "string",
|
|
"enum": [
|
|
"menu_message"
|
|
]
|
|
}
|
|
},
|
|
"required": [
|
|
"template"
|
|
]
|
|
},
|
|
"then": {
|
|
"$ref": "chrome://browser/content/asrouter/schemas/MessagingExperiment.schema.json#/$defs/MenuMessage"
|
|
}
|
|
},
|
|
{
|
|
"if": {
|
|
"type": "object",
|
|
"properties": {
|
|
"template": {
|
|
"type": "string",
|
|
"enum": [
|
|
"pb_newtab"
|
|
]
|
|
}
|
|
},
|
|
"required": [
|
|
"template"
|
|
]
|
|
},
|
|
"then": {
|
|
"$ref": "chrome://browser/content/asrouter/schemas/MessagingExperiment.schema.json#/$defs/NewtabPromoMessage"
|
|
}
|
|
},
|
|
{
|
|
"if": {
|
|
"type": "object",
|
|
"properties": {
|
|
"template": {
|
|
"type": "string",
|
|
"enum": [
|
|
"newtab_message"
|
|
]
|
|
}
|
|
},
|
|
"required": [
|
|
"template"
|
|
]
|
|
},
|
|
"then": {
|
|
"$ref": "chrome://browser/content/asrouter/schemas/MessagingExperiment.schema.json#/$defs/NewtabMessage"
|
|
}
|
|
},
|
|
{
|
|
"if": {
|
|
"type": "object",
|
|
"properties": {
|
|
"template": {
|
|
"type": "string",
|
|
"enum": [
|
|
"spotlight",
|
|
"feature_callout"
|
|
]
|
|
}
|
|
},
|
|
"required": [
|
|
"template"
|
|
]
|
|
},
|
|
"then": {
|
|
"$ref": "chrome://browser/content/asrouter/schemas/MessagingExperiment.schema.json#/$defs/Spotlight"
|
|
}
|
|
},
|
|
{
|
|
"if": {
|
|
"type": "object",
|
|
"properties": {
|
|
"template": {
|
|
"type": "string",
|
|
"enum": [
|
|
"toast_notification"
|
|
]
|
|
}
|
|
},
|
|
"required": [
|
|
"template"
|
|
]
|
|
},
|
|
"then": {
|
|
"$ref": "chrome://browser/content/asrouter/schemas/MessagingExperiment.schema.json#/$defs/ToastNotification"
|
|
}
|
|
},
|
|
{
|
|
"if": {
|
|
"type": "object",
|
|
"properties": {
|
|
"template": {
|
|
"type": "string",
|
|
"enum": [
|
|
"toolbar_badge"
|
|
]
|
|
}
|
|
},
|
|
"required": [
|
|
"template"
|
|
]
|
|
},
|
|
"then": {
|
|
"$ref": "chrome://browser/content/asrouter/schemas/MessagingExperiment.schema.json#/$defs/ToolbarBadgeMessage"
|
|
}
|
|
},
|
|
{
|
|
"if": {
|
|
"type": "object",
|
|
"properties": {
|
|
"template": {
|
|
"type": "string",
|
|
"enum": [
|
|
"update_action"
|
|
]
|
|
}
|
|
},
|
|
"required": [
|
|
"template"
|
|
]
|
|
},
|
|
"then": {
|
|
"$ref": "chrome://browser/content/asrouter/schemas/MessagingExperiment.schema.json#/$defs/UpdateAction"
|
|
}
|
|
}
|
|
]
|
|
},
|
|
"MultiMessage": {
|
|
"description": "An object containing an array of messages.",
|
|
"type": "object",
|
|
"properties": {
|
|
"template": {
|
|
"type": "string",
|
|
"const": "multi"
|
|
},
|
|
"messages": {
|
|
"type": "array",
|
|
"description": "An array of messages.",
|
|
"items": {
|
|
"$ref": "chrome://browser/content/asrouter/schemas/MessagingExperiment.schema.json#/$defs/TemplatedMessage"
|
|
}
|
|
}
|
|
},
|
|
"required": [
|
|
"template",
|
|
"messages"
|
|
]
|
|
}
|
|
}
|
|
}
|