| // 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><all_urls></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 |
| } |
| } |
| } |
| } |
| } |
| }, |
| { |
| "id": "KioskSecondaryApps", |
| "type": "array", |
| "description": "The <code>kiosk_secondary_apps</code> manifest property lists the secondary kiosk apps to be deployed by the primary kiosk app.", |
| "items": { |
| "type": "object", |
| "properties": { |
| "id": { |
| "description": "ID of secondary kiosk app", |
| "type": "string" |
| } |
| } |
| } |
| } |
| ] |
| } |
| ] |