/* 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": "WebExtensionManifest", "properties": { "sidebar_action": { "type": "object", "additionalProperties": { "$ref": "UnrecognizedProperty" }, "properties": { "default_title": { "type": "string", "optional": true, "preprocess": "localize" }, "default_icon": { "$ref": "IconPath", "optional": true }, "browser_style": { "type": "boolean", "optional": true, "description": "Defaults to true in Manifest V2; Deprecated in Manifest V3." }, "default_panel": { "type": "string", "format": "strictRelativeUrl", "preprocess": "localize" }, "open_at_install": { "type": "boolean", "optional": true, "default": true, "description": "Whether or not the sidebar is opened at install. Default is true." } }, "optional": true } } } ] }, { "namespace": "sidebarAction", "description": "Use sidebar actions to add a sidebar to Firefox.", "permissions": ["manifest:sidebar_action"], "types": [ { "id": "ImageDataType", "type": "object", "isInstanceOf": "ImageData", "additionalProperties": { "type": "any" }, "postprocess": "convertImageDataToURL", "description": "Pixel data for an image. Must be an ImageData object (for example, from a canvas element)." } ], "functions": [ { "name": "setTitle", "type": "function", "description": "Sets the title of the sidebar action. This shows up in the tooltip.", "async": true, "parameters": [ { "name": "details", "type": "object", "properties": { "title": { "choices": [{ "type": "string" }, { "type": "null" }], "description": "The string the sidebar action should display when moused over." }, "tabId": { "type": "integer", "optional": true, "description": "Sets the sidebar title for the tab specified by tabId. Automatically resets when the tab is closed." }, "windowId": { "type": "integer", "optional": true, "minimum": -2, "description": "Sets the sidebar title for the window specified by windowId." } } } ] }, { "name": "getTitle", "type": "function", "description": "Gets the title of the sidebar action.", "async": true, "parameters": [ { "name": "details", "type": "object", "properties": { "tabId": { "type": "integer", "optional": true, "description": "Specify the tab to get the title from. If no tab nor window is specified, the global title is returned." }, "windowId": { "type": "integer", "optional": true, "minimum": -2, "description": "Specify the window to get the title from. If no tab nor window is specified, the global title is returned." } } } ] }, { "name": "setIcon", "type": "function", "description": "Sets the icon for the sidebar action. The icon can be specified either as the path to an image file or as the pixel data from a canvas element, or as dictionary of either one of those. Either the path or the imageData property must be specified.", "async": true, "parameters": [ { "name": "details", "type": "object", "properties": { "imageData": { "choices": [ { "$ref": "ImageDataType" }, { "type": "object", "patternProperties": { "^[1-9]\\d*$": { "$ref": "ImageDataType" } }, "additionalProperties": false } ], "optional": true, "description": "Either an ImageData object or a dictionary {size -> ImageData} representing icon to be set. If the icon is specified as a dictionary, the actual image to be used is chosen depending on screen's pixel density. If the number of image pixels that fit into one screen space unit equals scale, then image with size scale * 19 will be selected. Initially only scales 1 and 2 will be supported. At least one image must be specified. Note that 'details.imageData = foo' is equivalent to 'details.imageData = {'19': foo}'" }, "path": { "choices": [ { "type": "string" }, { "type": "object", "additionalProperties": { "type": "string" } } ], "optional": true, "description": "Either a relative image path or a dictionary {size -> relative image path} pointing to icon to be set. If the icon is specified as a dictionary, the actual image to be used is chosen depending on screen's pixel density. If the number of image pixels that fit into one screen space unit equals scale, then image with size scale * 19 will be selected. Initially only scales 1 and 2 will be supported. At least one image must be specified. Note that 'details.path = foo' is equivalent to 'details.imageData = {'19': foo}'" }, "tabId": { "type": "integer", "optional": true, "description": "Sets the sidebar icon for the tab specified by tabId. Automatically resets when the tab is closed." }, "windowId": { "type": "integer", "optional": true, "minimum": -2, "description": "Sets the sidebar icon for the window specified by windowId." } } } ] }, { "name": "setPanel", "type": "function", "description": "Sets the url to the html document to be opened in the sidebar when the user clicks on the sidebar action's icon.", "async": true, "parameters": [ { "name": "details", "type": "object", "properties": { "tabId": { "type": "integer", "optional": true, "minimum": 0, "description": "Sets the sidebar url for the tab specified by tabId. Automatically resets when the tab is closed." }, "windowId": { "type": "integer", "optional": true, "minimum": -2, "description": "Sets the sidebar url for the window specified by windowId." }, "panel": { "choices": [{ "type": "string" }, { "type": "null" }], "description": "The url to the html file to show in a sidebar. If set to the empty string (''), no sidebar is shown." } } } ] }, { "name": "getPanel", "type": "function", "description": "Gets the url to the html document set as the panel for this sidebar action.", "async": true, "parameters": [ { "name": "details", "type": "object", "properties": { "tabId": { "type": "integer", "optional": true, "description": "Specify the tab to get the panel from. If no tab nor window is specified, the global panel is returned." }, "windowId": { "type": "integer", "optional": true, "minimum": -2, "description": "Specify the window to get the panel from. If no tab nor window is specified, the global panel is returned." } } } ] }, { "name": "open", "type": "function", "requireUserInput": true, "description": "Opens the extension sidebar in the active window.", "async": true, "parameters": [] }, { "name": "close", "type": "function", "requireUserInput": true, "description": "Closes the extension sidebar in the active window if the sidebar belongs to the extension.", "async": true, "parameters": [] }, { "name": "toggle", "type": "function", "requireUserInput": true, "description": "Toggles the extension sidebar in the active window.", "async": true, "parameters": [] }, { "name": "isOpen", "type": "function", "description": "Checks whether the sidebar action is open.", "async": true, "parameters": [ { "name": "details", "type": "object", "properties": { "windowId": { "type": "integer", "minimum": -2, "optional": true, "description": "Specify the window to get the openness from." } } } ] } ] } ]