blob: d698273fdb4a32785febb2eb024b65e5fe98af51 [file] [log] [blame]
// Copyright 2014 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.
// The type schemas for structured manifest items. Not actually a callable API.
[
{
"namespace": "extensionsManifestTypes",
"description": "Schemas for structured manifest entries",
"compiler_options": {
"generate_error_messages": true
},
"types": [
{
"id": "ContentCapabilities",
"type": "object",
"description": "The <code>content_capabilities</code> manifest entry allows an extension to grant certain additional capabilities to web contents whose locations match a given set of URL patterns.",
"properties": {
"matches": {
"description": "The set of URL patterns to match against. If any of the given patterns match a URL, its contents will be granted the specified capabilities.",
"type": "array",
"items": { "type": "string" }
},
"permissions": {
"description": "The set of capabilities to grant matched contents. This is currently limited to <code>clipboardRead</code>, <code>clipboardWrite</code>, and <code>unlimitedStorage</code>.",
"type": "array",
"items": { "type": "string" }
}
}
},
{
"id": "ExternallyConnectable",
"type": "object",
// Note: description commented out because externally_connectable.html
// already describes it, and the repetition looks odd.
// "description": "The <code>externally_connectable</code> manifest property declares which extensions, apps, and web pages can connect to your extension via $(ref:runtime.connect) and $(ref:runtime.sendMessage).",
"properties": {
"ids": {
"description": "<p>The IDs of extensions or apps that are allowed to connect. If left empty or unspecified, no extensions or apps can connect.</p><p>The wildcard <code>\"*\"</code> will allow all extensions and apps to connect.</p>",
"optional": true,
"type": "array",
"items": {"type": "string"}
},
"matches": {
"description": "<p>The URL patterns for <em>web pages</em> that are allowed to connect. <em>This does not affect content scripts.</em> If left empty or unspecified, no web pages can connect.</p><p>Patterns cannot include wildcard domains nor subdomains of <a href=\"http://publicsuffix.org/list/\">(effective) top level domains</a>; <code>*://google.com/*</code> and <code>http://*.chromium.org/*</code> are valid, while <code>&lt;all_urls&gt;</code>, <code>http://*/*</code>, <code>*://*.com/*</code>, and even <code>http://*.appspot.com/*</code> are not.</p>",
"optional": true,
"type": "array",
"items": {"type": "string"}
},
"accepts_tls_channel_id": {
"description": "If <code>true</code>, messages sent via $(ref:runtime.connect) or $(ref:runtime.sendMessage) will set $(ref:runtime.MessageSender.tlsChannelId) if those methods request it to be. If <code>false</code>, $(ref:runtime.MessageSender.tlsChannelId) will never be set under any circumstance.",
"optional": true,
"type": "boolean"
}
}
},
{
"id": "OptionsUI",
"type": "object",
"description": "The <code>options_ui</code> manifest property declares how the options page should be displayed.",
"properties": {
"page": {
"description": "The path to your options page, relative to your extension's root.",
"type": "string"
},
"chrome_style": {
"description": "If <code>true</code>, a Chrome user agent stylesheet will be applied to your options page. The default value is <code>false</code>, but we recommend you enable it for a consistent UI with Chrome.",
"optional": true,
"type": "boolean"
},
"open_in_tab": {
"description": "<p>If <code>true</code>, your extension's options page will be opened in a new tab rather than embedded in <em>chrome://extensions</em>. The default is <code>false</code>, and we recommend that you don't change it.</p><p><strong>This is only useful to delay the inevitable deprecation of the old options UI!</strong> It will be removed soon, so try not to use it. It will break.</p>",
"optional": true,
"type": "boolean"
}
}
},
{
"id": "SocketHostPatterns",
"description": "<p>A single string or a list of strings representing host:port patterns.</p>",
"choices": [
{ "type": "string" },
{ "type": "array", "items": { "type": "string" } }
]
},
{
"id": "sockets",
"type": "object",
"description": "The <code>sockets</code> manifest property declares which sockets operations an app can issue.",
"properties": {
"udp": {
"description": "The <code>udp</code> manifest property declares which sockets.udp operations an app can issue.",
"optional": true,
"type": "object",
"properties": {
"bind": {
"description": "<p>The host:port pattern for <code>bind</code> operations.</p>",
"optional": true,
"$ref": "SocketHostPatterns"
},
"send": {
"description": "<p>The host:port pattern for <code>send</code> operations.</p>",
"optional": true,
"$ref": "SocketHostPatterns"
},
"multicastMembership": {
"description": "<p>The host:port pattern for <code>joinGroup</code> operations.</p>",
"optional": true,
"$ref": "SocketHostPatterns"
}
}
},
"tcp": {
"description": "The <code>tcp</code> manifest property declares which sockets.tcp operations an app can issue.",
"optional": true,
"type": "object",
"properties": {
"connect": {
"description": "<p>The host:port pattern for <code>connect</code> operations.</p>",
"optional": true,
"$ref": "SocketHostPatterns"
}
}
},
"tcpServer": {
"description": "The <code>tcpServer</code> manifest property declares which sockets.tcpServer operations an app can issue.",
"optional": true,
"type": "object",
"properties": {
"listen": {
"description": "<p>The host:port pattern for <code>listen</code> operations.</p>",
"optional": true,
"$ref": "SocketHostPatterns"
}
}
}
}
},
{
"id": "bluetooth",
"type": "object",
"description": "The <code>bluetooth</code> manifest property give permission to an app to use the $(ref:bluetooth) API. A list of UUIDs can be optionally specified to enable communication with devices.",
"properties": {
"uuids": {
"description": "The <code>uuids</code> manifest property declares the list of protocols, profiles and services that an app can communicate using.",
"optional": true,
"type": "array",
"items": {
"description": "<p>The list specified as UUID strings.</p>",
"type": "string"
}
},
"socket": {
"type": "boolean",
"description": "If <code>true</code>, gives permission to an app to use the $(ref:bluetoothSocket) API",
"optional": true
},
"low_energy": {
"type": "boolean",
"description": "If <code>true</code>, gives permission to an app to use the $(ref:bluetoothLowEnergy) API",
"optional": true
},
"peripheral": {
"type": "boolean",
"description": "If <code>true</code>, gives permission to an app to use the advertisement functions in the $(ref:bluetoothLowEnergy) API",
"optional": true
}
}
},
{
"id": "UsbPrinters",
"type": "object",
"description": "The <code>usb_printers</code> manifest property lists the USB printers supported by an app implementing the $(ref:printerProvider) API.",
"properties": {
"filters": {
"description": "A list of $(ref:usb.DeviceFilter USB device filters) matching supported devices. A device only needs to match one of the provided filters. A <code>vendorId</code> is required and only one of <code>productId</code> or <code>interfaceClass</code> may be provided.",
"type": "array",
"items": {
"type": "object",
"properties": {
"vendorId": {
"description": "USB vendor ID of matching devices",
"type": "integer"
},
"productId": {
"description": "USB product ID of matching devices",
"type": "integer",
"optional": true
},
"interfaceClass": {
"description": "USB interface class implemented by any interface of a matching device.",
"type": "integer",
"optional": true
},
"interfaceSubclass": {
"description": "USB interface sub-class implemented by the interface matching $(ref:interfaceClass).",
"type": "integer",
"optional": true
},
"interfaceProtocol": {
"description": "USB interface protocol implemented by the interface matching $(ref:interfaceClass) and $(ref:interfaceSubclass).",
"type": "integer",
"optional": true
}
}
}
}
}
}
]
}
]