summaryrefslogtreecommitdiffstats
path: root/toolkit/components/extensions/schemas/types.json
diff options
context:
space:
mode:
Diffstat (limited to 'toolkit/components/extensions/schemas/types.json')
-rw-r--r--toolkit/components/extensions/schemas/types.json168
1 files changed, 168 insertions, 0 deletions
diff --git a/toolkit/components/extensions/schemas/types.json b/toolkit/components/extensions/schemas/types.json
new file mode 100644
index 0000000000..c0dded5ad0
--- /dev/null
+++ b/toolkit/components/extensions/schemas/types.json
@@ -0,0 +1,168 @@
+[
+ {
+ "namespace": "types",
+ "description": "Contains types used by other schemas.",
+ "types": [
+ {
+ "id": "SettingScope",
+ "type": "string",
+ "enum": [
+ "regular",
+ "regular_only",
+ "incognito_persistent",
+ "incognito_session_only"
+ ],
+ "description": "The scope of the Setting. One of<ul><li><var>regular</var>: setting for the regular profile (which is inherited by the incognito profile if not overridden elsewhere),</li><li><var>regular_only</var>: setting for the regular profile only (not inherited by the incognito profile),</li><li><var>incognito_persistent</var>: setting for the incognito profile that survives browser restarts (overrides regular preferences),</li><li><var>incognito_session_only</var>: setting for the incognito profile that can only be set during an incognito session and is deleted when the incognito session ends (overrides regular and incognito_persistent preferences).</li></ul> Only <var>regular</var> is supported by Firefox at this time."
+ },
+ {
+ "id": "LevelOfControl",
+ "type": "string",
+ "enum": [
+ "not_controllable",
+ "controlled_by_other_extensions",
+ "controllable_by_this_extension",
+ "controlled_by_this_extension"
+ ],
+ "description": "One of<ul><li><var>not_controllable</var>: cannot be controlled by any extension</li><li><var>controlled_by_other_extensions</var>: controlled by extensions with higher precedence</li><li><var>controllable_by_this_extension</var>: can be controlled by this extension</li><li><var>controlled_by_this_extension</var>: controlled by this extension</li></ul>"
+ },
+ {
+ "id": "Setting",
+ "type": "object",
+ "functions": [
+ {
+ "name": "get",
+ "type": "function",
+ "description": "Gets the value of a setting.",
+ "async": "callback",
+ "parameters": [
+ {
+ "name": "details",
+ "type": "object",
+ "description": "Which setting to consider.",
+ "properties": {
+ "incognito": {
+ "type": "boolean",
+ "optional": true,
+ "description": "Whether to return the value that applies to the incognito session (default false)."
+ }
+ }
+ },
+ {
+ "name": "callback",
+ "type": "function",
+ "parameters": [
+ {
+ "name": "details",
+ "type": "object",
+ "description": "Details of the currently effective value.",
+ "properties": {
+ "value": {
+ "description": "The value of the setting.",
+ "type": "any"
+ },
+ "levelOfControl": {
+ "$ref": "types.LevelOfControl",
+ "description": "The level of control of the setting."
+ },
+ "incognitoSpecific": {
+ "description": "Whether the effective value is specific to the incognito session.<br/>This property will <em>only</em> be present if the <var>incognito</var> property in the <var>details</var> parameter of <code>get()</code> was true.",
+ "type": "boolean",
+ "optional": true
+ }
+ }
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "name": "set",
+ "type": "function",
+ "description": "Sets the value of a setting.",
+ "async": "callback",
+ "parameters": [
+ {
+ "name": "details",
+ "type": "object",
+ "description": "Which setting to change.",
+ "properties": {
+ "value": {
+ "description": "The value of the setting. <br/>Note that every setting has a specific value type, which is described together with the setting. An extension should <em>not</em> set a value of a different type.",
+ "type": "any"
+ },
+ "scope": {
+ "$ref": "types.SettingScope",
+ "optional": true,
+ "description": "Where to set the setting (default: regular)."
+ }
+ }
+ },
+ {
+ "name": "callback",
+ "type": "function",
+ "description": "Called at the completion of the set operation.",
+ "optional": true,
+ "parameters": []
+ }
+ ]
+ },
+ {
+ "name": "clear",
+ "type": "function",
+ "description": "Clears the setting, restoring any default value.",
+ "async": "callback",
+ "parameters": [
+ {
+ "name": "details",
+ "type": "object",
+ "description": "Which setting to clear.",
+ "properties": {
+ "scope": {
+ "$ref": "types.SettingScope",
+ "optional": true,
+ "description": "Where to clear the setting (default: regular)."
+ }
+ }
+ },
+ {
+ "name": "callback",
+ "type": "function",
+ "description": "Called at the completion of the clear operation.",
+ "optional": true,
+ "parameters": []
+ }
+ ]
+ }
+ ],
+ "events": [
+ {
+ "name": "onChange",
+ "type": "function",
+ "description": "Fired after the setting changes.",
+ "parameters": [
+ {
+ "type": "object",
+ "name": "details",
+ "properties": {
+ "value": {
+ "description": "The value of the setting after the change.",
+ "type": "any"
+ },
+ "levelOfControl": {
+ "$ref": "types.LevelOfControl",
+ "description": "The level of control of the setting."
+ },
+ "incognitoSpecific": {
+ "description": "Whether the value that has changed is specific to the incognito session.<br/>This property will <em>only</em> be present if the user has enabled the extension in incognito mode.",
+ "type": "boolean",
+ "optional": true
+ }
+ }
+ }
+ ]
+ }
+ ]
+ }
+ ]
+ }
+]