// 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": "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": "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"
              }
            }
          }
        }
      }
    ]
  }
]
