// Copyright 2014 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
[
{
"namespace": "chromeWebViewInternal",
"description": "none",
"compiler_options": {
"implemented_in": "chrome/browser/extensions/api/web_view/chrome_web_view_internal_api.h"
},
"dependencies": ["contextMenus"],
"types": [
{
"id": "ContextMenuItem",
"type": "object",
"description": "An item in the context menu.",
"properties": {
"label": {
"type": "string",
"description": "label of the item",
"optional": true
},
"commandId": {
"type": "integer",
"description": "id of the input item"
}
}
}
],
"functions": [
{
"name": "contextMenusCreate",
"type": "function",
"returns": {
"choices": [
{ "type": "integer" },
{ "type": "string" }
],
"description": "The ID of the newly created item."
},
"parameters": [
{
"type": "integer",
"name": "instanceId",
"nodoc": true
},
{
"type": "object",
"name": "createProperties",
"properties": {
"type": {
"$ref": "contextMenus.ItemType",
"optional": true,
"description": "The type of menu item. Defaults to 'normal' if not specified."
},
"id": {
"type": "string",
"optional": true,
"description": "The unique ID to assign to this item. Cannot be the same as another ID for this webview."
},
"title": {
"type": "string",
"optional": true,
"description": "The text to be displayed in the item; this is <em>required</em> unless <em>type</em> is 'separator'. When the context is 'selection', you can use <code>%s</code> within the string to show the selected text. For example, if this parameter's value is \"Translate '%s' to Pig Latin\" and the user selects the word \"cool\", the context menu item for the selection is \"Translate 'cool' to Pig Latin\"."
},
"checked": {
"type": "boolean",
"optional": true,
"description": "The initial state of a checkbox or radio item: true for selected and false for unselected. Only one radio item can be selected at a time in a given group of radio items."
},
"contexts": {
"type": "array",
"items": {
// |launcher| isn't actually supported, this is listed here so that we can build |contexts| using the same code from chrome.contextMenus API.
"$ref": "contextMenus.ContextType"
},
"minItems": 1,
"optional": true,
"description": "List of contexts this menu item will appear in. Defaults to ['page'] if not specified."
},
"visible": {
"type": "boolean",
"optional": true,
"description": "Whether the item is visible in the menu."
},
"onclick": {
"type": "function",
"optional": true,
"description": "A function that will be called back when the menu item is clicked.",
"parameters": [
{
"name": "info",
"$ref": "contextMenus.OnClickData",
"description": "Information about the item clicked and the context where the click happened."
}
]
},
"parentId": {
"choices": [
{ "type": "integer" },
{ "type": "string" }
],
"optional": true,
"description": "The ID of a parent menu item; this makes the item a child of a previously added item."
},
"documentUrlPatterns": {
"type": "array",
"items": {"type": "string"},
"optional": true,
"description": "Lets you restrict the item to apply only to documents whose URL matches one of the given patterns. (This applies to frames as well.) For details on the format of a pattern, see <a href='match_patterns'>Match Patterns</a>."
},
"targetUrlPatterns": {
"type": "array",
"items": {"type": "string"},
"optional": true,
"description": "Similar to documentUrlPatterns, but lets you filter based on the src attribute of img/audio/video tags and the href of anchor tags."
},
"enabled": {
"type": "boolean",
"optional": true,
"description": "Whether this context menu item is enabled or disabled. Defaults to true."
}
}
}
],
"returns_async": {
"name": "callback",
"optional": true,
"description": "Called when the item has been created in the browser. If there were any problems creating the item, details will be available in $(ref:runtime.lastError).",
"parameters": [],
"does_not_support_promises": "Synchronous return and callback crbug.com/1143032"
}
},
{
"name": "contextMenusUpdate",
"type": "function",
"description": "Updates a previously created context menu item.",
"parameters": [
{
"type": "integer",
"name": "instanceId",
"nodoc": true
},
{
"choices": [
{ "type": "integer" },
{ "type": "string" }
],
"name": "id",
"description": "The ID of the item to update."
},
{ "type": "object",
"name": "updateProperties",
"description": "The properties to update. Accepts the same values as the create function.",
"properties": {
"type": {
"$ref": "contextMenus.ItemType",
"optional": true
},
"title": {
"type": "string",
"optional": true
},
"checked": {
"type": "boolean",
"optional": true
},
"contexts": {
"type": "array",
"items": {
// |launcher| isn't actually supported, this is listed here so that we can build |contexts| using the same code from chrome.contextMenus API.
"$ref": "contextMenus.ContextType"
},
"minItems": 1,
"optional": true,
"description": "List of contexts this menu item will appear in. Defaults to ['page'] if not specified."
},
"visible": {
"type": "boolean",
"optional": true,
"description": "Whether the item is visible in the menu."
},
"onclick": {
"type": "function",
"optional": true
},
"parentId": {
"choices": [
{ "type": "integer" },
{ "type": "string" }
],
"optional": true,
"description": "Note: You cannot change an item to be a child of one of its own descendants."
},
"documentUrlPatterns": {
"type": "array",
"items": {"type": "string"},
"optional": true
},
"targetUrlPatterns": {
"type": "array",
"items": {"type": "string"},
"optional": true
},
"enabled": {
"type": "boolean",
"optional": true
}
}
}
],
"returns_async": {
"name": "callback",
"optional": true,
"parameters": [],
"description": "Called when the context menu has been updated."
}
},
{
"name": "contextMenusRemove",
"type": "function",
"description": "Removes a context menu item.",
"parameters": [
{
"type": "integer",
"name": "instanceId",
"nodoc": true
},
{
"choices": [
{ "type": "integer" },
{ "type": "string" }
],
"name": "menuItemId",
"description": "The ID of the context menu item to remove."
}
],
"returns_async": {
"name": "callback",
"optional": true,
"parameters": [],
"description": "Called when the context menu has been removed."
}
},
{
"name": "contextMenusRemoveAll",
"type": "function",
"description": "Removes all context menu items added by this webview.",
"parameters": [
{
"type": "integer",
"name": "instanceId",
"nodoc": true
}
],
"returns_async": {
"name": "callback",
"optional": true,
"parameters": [],
"description": "Called when removal is complete."
}
},
{
"name": "showContextMenu",
"type": "function",
"parameters": [
{
"type": "integer",
"name": "instanceId",
"description": "The instance ID of the guest <webview> process. This not exposed to developers through the API."
},
{
"type": "integer",
"name": "requestId",
"description": "The strictly increasing request counter that serves as ID for the context menu. This not exposed to developers through the API."
},
{
"type": "array",
"name": "itemsToShow",
"items": {"$ref": "ContextMenuItem"},
"description": "Items to be shown in the context menu. These are top level items as opposed to children items.",
"optional": true
}
]
}
],
"events": [
{
"name": "onClicked",
"type": "function",
"nodoc": true,
"$ref": "contextMenus.onClicked"
},
{
"name": "onShow",
"type": "function",
"description": "Fired when context menu is about to be shown. Provides the ability to cancel the context menu by calling <code>event.preventDefault()</code> from this handler.",
"nodoc": true,
"parameters": [
{
"name": "event",
"type": "object",
"properties": {
"preventDefault": {
"type": "function",
"parameters": [
]
}
}
}
]
}
]
}
]