// Copyright (c) 2012 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
[
{
"namespace": "manifest",
"types": [
{
"$extend": "WebExtensionManifest",
"properties": {
"page_action": {
"type": "object",
"additionalProperties": { "$ref": "UnrecognizedProperty" },
"properties": {
"default_title": {
"type": "string",
"optional": true,
"preprocess": "localize"
},
"default_icon": {
"$ref": "IconPath",
"optional": true
},
"default_popup": {
"type": "string",
"format": "relativeUrl",
"optional": true,
"preprocess": "localize"
},
"browser_style": {
"type": "boolean",
"optional": true,
"description": "Deprecated in Manifest V3."
},
"show_matches": {
"type": "array",
"optional": true,
"minItems": 1,
"items": { "$ref": "MatchPattern" }
},
"hide_matches": {
"type": "array",
"optional": true,
"minItems": 1,
"items": { "$ref": "MatchPatternRestricted" }
},
"pinned": {
"type": "boolean",
"optional": true,
"default": true
}
},
"optional": true
}
}
}
]
},
{
"namespace": "pageAction",
"description": "Use the browser.pageAction
API to put icons inside the address bar. Page actions represent actions that can be taken on the current page, but that aren't applicable to all pages.",
"permissions": ["manifest:page_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)."
},
{
"id": "OnClickData",
"type": "object",
"description": "Information sent when a page action is clicked.",
"properties": {
"modifiers": {
"type": "array",
"items": {
"type": "string",
"enum": ["Shift", "Alt", "Command", "Ctrl", "MacCtrl"]
},
"description": "An array of keyboard modifiers that were held while the menu item was clicked."
},
"button": {
"type": "integer",
"optional": true,
"description": "An integer value of button by which menu item was clicked."
}
}
}
],
"functions": [
{
"name": "show",
"type": "function",
"async": "callback",
"description": "Shows the page action. The page action is shown whenever the tab is selected.",
"parameters": [
{
"type": "integer",
"name": "tabId",
"minimum": 0,
"description": "The id of the tab for which you want to modify the page action."
},
{
"type": "function",
"name": "callback",
"optional": true,
"parameters": []
}
]
},
{
"name": "hide",
"type": "function",
"async": "callback",
"description": "Hides the page action.",
"parameters": [
{
"type": "integer",
"name": "tabId",
"minimum": 0,
"description": "The id of the tab for which you want to modify the page action."
},
{
"type": "function",
"name": "callback",
"optional": true,
"parameters": []
}
]
},
{
"name": "isShown",
"type": "function",
"description": "Checks whether the page action is shown.",
"async": true,
"parameters": [
{
"name": "details",
"type": "object",
"properties": {
"tabId": {
"type": "integer",
"description": "Specify the tab to get the shownness from."
}
}
}
]
},
{
"name": "setTitle",
"type": "function",
"description": "Sets the title of the page action. This is displayed in a tooltip over the page action.",
"parameters": [
{
"name": "details",
"type": "object",
"properties": {
"tabId": {
"type": "integer",
"minimum": 0,
"description": "The id of the tab for which you want to modify the page action."
},
"title": {
"choices": [{ "type": "string" }, { "type": "null" }],
"description": "The tooltip string."
}
}
}
]
},
{
"name": "getTitle",
"type": "function",
"description": "Gets the title of the page action.",
"async": "callback",
"parameters": [
{
"name": "details",
"type": "object",
"properties": {
"tabId": {
"type": "integer",
"description": "Specify the tab to get the title from."
}
}
},
{
"type": "function",
"name": "callback",
"parameters": [
{
"name": "result",
"type": "string"
}
]
}
]
},
{
"name": "setIcon",
"type": "function",
"description": "Sets the icon for the page 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": "callback",
"parameters": [
{
"name": "details",
"type": "object",
"properties": {
"tabId": {
"type": "integer",
"minimum": 0,
"description": "The id of the tab for which you want to modify the page action."
},
"imageData": {
"choices": [
{ "$ref": "ImageDataType" },
{
"type": "object",
"patternProperties": {
"^[1-9]\\d*$": { "$ref": "ImageDataType" }
}
}
],
"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",
"patternProperties": {
"^[1-9]\\d*$": { "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}'"
}
}
},
{
"type": "function",
"name": "callback",
"optional": true,
"parameters": []
}
]
},
{
"name": "setPopup",
"type": "function",
"async": true,
"description": "Sets the html document to be opened as a popup when the user clicks on the page action's icon.",
"parameters": [
{
"name": "details",
"type": "object",
"properties": {
"tabId": {
"type": "integer",
"minimum": 0,
"description": "The id of the tab for which you want to modify the page action."
},
"popup": {
"choices": [{ "type": "string" }, { "type": "null" }],
"description": "The html file to show in a popup. If set to the empty string (''), no popup is shown."
}
}
}
]
},
{
"name": "getPopup",
"type": "function",
"description": "Gets the html document set as the popup for this page action.",
"async": "callback",
"parameters": [
{
"name": "details",
"type": "object",
"properties": {
"tabId": {
"type": "integer",
"description": "Specify the tab to get the popup from."
}
}
},
{
"type": "function",
"name": "callback",
"parameters": [
{
"name": "result",
"type": "string"
}
]
}
]
},
{
"name": "openPopup",
"type": "function",
"requireUserInput": true,
"description": "Opens the extension page action in the active window.",
"async": true,
"parameters": []
}
],
"events": [
{
"name": "onClicked",
"type": "function",
"description": "Fired when a page action icon is clicked. This event will not fire if the page action has a popup.",
"parameters": [
{
"name": "tab",
"$ref": "tabs.Tab"
},
{
"name": "info",
"$ref": "OnClickData",
"optional": true
}
]
}
]
}
]