summaryrefslogtreecommitdiffstats
path: root/toolkit/components/extensions/schemas/theme.json
diff options
context:
space:
mode:
Diffstat (limited to 'toolkit/components/extensions/schemas/theme.json')
-rw-r--r--toolkit/components/extensions/schemas/theme.json461
1 files changed, 461 insertions, 0 deletions
diff --git a/toolkit/components/extensions/schemas/theme.json b/toolkit/components/extensions/schemas/theme.json
new file mode 100644
index 0000000000..3bf7a313e2
--- /dev/null
+++ b/toolkit/components/extensions/schemas/theme.json
@@ -0,0 +1,461 @@
+// This Source Code Form is subject to the terms of the Mozilla Public
+// License, v. 2.0. If a copy of the MPL was not distributed with this
+// file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+[
+ {
+ "namespace": "manifest",
+ "types": [
+ {
+ "$extend": "PermissionNoPrompt",
+ "choices": [
+ {
+ "type": "string",
+ "enum": ["theme"]
+ }
+ ]
+ },
+ {
+ "id": "ThemeColor",
+ "choices": [
+ {
+ "type": "string"
+ },
+ {
+ "type": "array",
+ "minItems": 3,
+ "maxItems": 3,
+ "items": {
+ "type": "integer",
+ "minimum": 0,
+ "maximum": 255
+ }
+ },
+ {
+ "type": "array",
+ "minItems": 4,
+ "maxItems": 4,
+ "items": {
+ "type": "number"
+ }
+ }
+ ]
+ },
+ {
+ "id": "ThemeExperiment",
+ "type": "object",
+ "properties": {
+ "stylesheet": {
+ "optional": true,
+ "$ref": "ExtensionURL"
+ },
+ "images": {
+ "type": "object",
+ "optional": true,
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "colors": {
+ "type": "object",
+ "optional": true,
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "properties": {
+ "type": "object",
+ "optional": true,
+ "additionalProperties": {
+ "type": "string"
+ }
+ }
+ }
+ },
+ {
+ "id": "ThemeType",
+ "type": "object",
+ "properties": {
+ "images": {
+ "type": "object",
+ "optional": true,
+ "properties": {
+ "additional_backgrounds": {
+ "type": "array",
+ "items": { "$ref": "ImageDataOrExtensionURL" },
+ "maxItems": 15,
+ "optional": true
+ },
+ "headerURL": {
+ "$ref": "ImageDataOrExtensionURL",
+ "optional": true,
+ "deprecated": "Unsupported images property, use 'theme.images.theme_frame', this alias is ignored in Firefox >= 70."
+ },
+ "theme_frame": {
+ "$ref": "ImageDataOrExtensionURL",
+ "optional": true
+ }
+ },
+ "additionalProperties": { "$ref": "ImageDataOrExtensionURL" }
+ },
+ "colors": {
+ "type": "object",
+ "optional": true,
+ "properties": {
+ "tab_selected": {
+ "$ref": "ThemeColor",
+ "optional": true
+ },
+ "accentcolor": {
+ "$ref": "ThemeColor",
+ "optional": true,
+ "deprecated": "Unsupported colors property, use 'theme.colors.frame', this alias is ignored in Firefox >= 70."
+ },
+ "frame": {
+ "$ref": "ThemeColor",
+ "optional": true
+ },
+ "frame_inactive": {
+ "$ref": "ThemeColor",
+ "optional": true
+ },
+ "textcolor": {
+ "$ref": "ThemeColor",
+ "optional": true,
+ "deprecated": "Unsupported color property, use 'theme.colors.tab_background_text', this alias is ignored in Firefox >= 70."
+ },
+ "tab_background_text": {
+ "$ref": "ThemeColor",
+ "optional": true
+ },
+ "tab_background_separator": {
+ "$ref": "ThemeColor",
+ "optional": true
+ },
+ "tab_loading": {
+ "$ref": "ThemeColor",
+ "optional": true
+ },
+ "tab_text": {
+ "$ref": "ThemeColor",
+ "optional": true
+ },
+ "tab_line": {
+ "$ref": "ThemeColor",
+ "optional": true
+ },
+ "toolbar": {
+ "$ref": "ThemeColor",
+ "optional": true
+ },
+ "toolbar_text": {
+ "$ref": "ThemeColor",
+ "optional": true,
+ "description": "This color property is an alias of 'bookmark_text'."
+ },
+ "bookmark_text": {
+ "$ref": "ThemeColor",
+ "optional": true
+ },
+ "toolbar_field": {
+ "$ref": "ThemeColor",
+ "optional": true
+ },
+ "toolbar_field_text": {
+ "$ref": "ThemeColor",
+ "optional": true
+ },
+ "toolbar_field_border": {
+ "$ref": "ThemeColor",
+ "optional": true
+ },
+ "toolbar_field_separator": {
+ "$ref": "ThemeColor",
+ "optional": true,
+ "deprecated": "This color property is ignored in Firefox >= 89."
+ },
+ "toolbar_top_separator": {
+ "$ref": "ThemeColor",
+ "optional": true
+ },
+ "toolbar_bottom_separator": {
+ "$ref": "ThemeColor",
+ "optional": true
+ },
+ "toolbar_vertical_separator": {
+ "$ref": "ThemeColor",
+ "optional": true
+ },
+ "icons": {
+ "$ref": "ThemeColor",
+ "optional": true
+ },
+ "icons_attention": {
+ "$ref": "ThemeColor",
+ "optional": true
+ },
+ "button_background_hover": {
+ "$ref": "ThemeColor",
+ "optional": true
+ },
+ "button_background_active": {
+ "$ref": "ThemeColor",
+ "optional": true
+ },
+ "popup": {
+ "$ref": "ThemeColor",
+ "optional": true
+ },
+ "popup_text": {
+ "$ref": "ThemeColor",
+ "optional": true
+ },
+ "popup_border": {
+ "$ref": "ThemeColor",
+ "optional": true
+ },
+ "toolbar_field_focus": {
+ "$ref": "ThemeColor",
+ "optional": true
+ },
+ "toolbar_field_text_focus": {
+ "$ref": "ThemeColor",
+ "optional": true
+ },
+ "toolbar_field_border_focus": {
+ "$ref": "ThemeColor",
+ "optional": true
+ },
+ "popup_highlight": {
+ "$ref": "ThemeColor",
+ "optional": true
+ },
+ "popup_highlight_text": {
+ "$ref": "ThemeColor",
+ "optional": true
+ },
+ "ntp_background": {
+ "$ref": "ThemeColor",
+ "optional": true
+ },
+ "ntp_card_background": {
+ "$ref": "ThemeColor",
+ "optional": true
+ },
+ "ntp_text": {
+ "$ref": "ThemeColor",
+ "optional": true
+ },
+ "sidebar": {
+ "$ref": "ThemeColor",
+ "optional": true
+ },
+ "sidebar_border": {
+ "$ref": "ThemeColor",
+ "optional": true
+ },
+ "sidebar_text": {
+ "$ref": "ThemeColor",
+ "optional": true
+ },
+ "sidebar_highlight": {
+ "$ref": "ThemeColor",
+ "optional": true
+ },
+ "sidebar_highlight_text": {
+ "$ref": "ThemeColor",
+ "optional": true
+ },
+ "toolbar_field_highlight": {
+ "$ref": "ThemeColor",
+ "optional": true
+ },
+ "toolbar_field_highlight_text": {
+ "$ref": "ThemeColor",
+ "optional": true
+ }
+ },
+ "additionalProperties": { "$ref": "ThemeColor" }
+ },
+ "properties": {
+ "type": "object",
+ "optional": true,
+ "properties": {
+ "additional_backgrounds_alignment": {
+ "type": "array",
+ "items": {
+ "type": "string",
+ "enum": [
+ "bottom",
+ "center",
+ "left",
+ "right",
+ "top",
+ "center bottom",
+ "center center",
+ "center top",
+ "left bottom",
+ "left center",
+ "left top",
+ "right bottom",
+ "right center",
+ "right top"
+ ]
+ },
+ "maxItems": 15,
+ "optional": true
+ },
+ "additional_backgrounds_tiling": {
+ "type": "array",
+ "items": {
+ "type": "string",
+ "enum": ["no-repeat", "repeat", "repeat-x", "repeat-y"]
+ },
+ "maxItems": 15,
+ "optional": true
+ },
+ "color_scheme": {
+ "optional": true,
+ "type": "string",
+ "enum": ["auto", "light", "dark", "system"]
+ },
+ "content_color_scheme": {
+ "optional": true,
+ "type": "string",
+ "enum": ["auto", "light", "dark", "system"]
+ }
+ },
+ "additionalProperties": { "type": "string" }
+ }
+ },
+ "additionalProperties": { "$ref": "UnrecognizedProperty" }
+ },
+ {
+ "id": "ThemeManifest",
+ "type": "object",
+ "description": "Contents of manifest.json for a static theme",
+ "$import": "manifest.ManifestBase",
+ "properties": {
+ "theme": {
+ "$ref": "ThemeType"
+ },
+ "dark_theme": {
+ "$ref": "ThemeType",
+ "optional": true
+ },
+ "default_locale": {
+ "type": "string",
+ "optional": true
+ },
+ "theme_experiment": {
+ "$ref": "ThemeExperiment",
+ "optional": true
+ },
+ "icons": {
+ "type": "object",
+ "optional": true,
+ "patternProperties": {
+ "^[1-9]\\d*$": { "type": "string" }
+ }
+ }
+ }
+ },
+ {
+ "$extend": "WebExtensionManifest",
+ "properties": {
+ "theme_experiment": {
+ "$ref": "ThemeExperiment",
+ "optional": true
+ }
+ }
+ }
+ ]
+ },
+ {
+ "namespace": "theme",
+ "description": "The theme API allows customizing of visual elements of the browser.",
+ "types": [
+ {
+ "id": "ThemeUpdateInfo",
+ "type": "object",
+ "description": "Info provided in the onUpdated listener.",
+ "properties": {
+ "theme": {
+ "type": "object",
+ "description": "The new theme after update"
+ },
+ "windowId": {
+ "type": "integer",
+ "description": "The id of the window the theme has been applied to",
+ "optional": true
+ }
+ }
+ }
+ ],
+ "events": [
+ {
+ "name": "onUpdated",
+ "type": "function",
+ "description": "Fired when a new theme has been applied",
+ "parameters": [
+ {
+ "$ref": "ThemeUpdateInfo",
+ "name": "updateInfo",
+ "description": "Details of the theme update"
+ }
+ ]
+ }
+ ],
+ "functions": [
+ {
+ "name": "getCurrent",
+ "type": "function",
+ "async": true,
+ "description": "Returns the current theme for the specified window or the last focused window.",
+ "parameters": [
+ {
+ "type": "integer",
+ "name": "windowId",
+ "optional": true,
+ "description": "The window for which we want the theme."
+ }
+ ]
+ },
+ {
+ "name": "update",
+ "type": "function",
+ "async": true,
+ "description": "Make complete updates to the theme. Resolves when the update has completed.",
+ "permissions": ["theme"],
+ "parameters": [
+ {
+ "type": "integer",
+ "name": "windowId",
+ "optional": true,
+ "description": "The id of the window to update. No id updates all windows."
+ },
+ {
+ "name": "details",
+ "$ref": "manifest.ThemeType",
+ "description": "The properties of the theme to update."
+ }
+ ]
+ },
+ {
+ "name": "reset",
+ "type": "function",
+ "async": true,
+ "description": "Removes the updates made to the theme.",
+ "permissions": ["theme"],
+ "parameters": [
+ {
+ "type": "integer",
+ "name": "windowId",
+ "optional": true,
+ "description": "The id of the window to reset. No id resets all windows."
+ }
+ ]
+ }
+ ]
+ }
+]