// 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": "OptionalPermission",
        "choices": [
          {
            "type": "string",
            "enum": [
              "browserSettings"
            ]
          }
        ]
      }
    ]
  },
  {
    "namespace": "browserSettings",
    "description": "Use the <code>browser.browserSettings</code> API to control global settings of the browser.",
    "permissions": ["browserSettings"],
    "types": [
      {
        "id": "ImageAnimationBehavior",
        "type": "string",
        "enum": ["normal", "none", "once"],
        "description": "How images should be animated in the browser."
      },
      {
        "id": "ContextMenuMouseEvent",
        "type": "string",
        "enum": ["mouseup", "mousedown"],
        "description": "After which mouse event context menus should popup."
      },
      {
        "id": "ProxyConfig",
        "type": "object",
        "description": "An object which describes proxy settings.",
        "properties": {
          "proxyType": {
            "type": "string",
            "optional": true,
            "enum": [
              "none",
              "autoDetect",
              "system",
              "manual",
              "autoConfig"
            ],
            "description": "The type of proxy to use."
          },
          "http": {
            "type": "string",
            "optional": true,
            "description": "The address of the http proxy, can include a port."
          },
          "httpProxyAll":{
            "type": "boolean",
            "optional": true,
            "description": "Use the http proxy server for all protocols."
          },
          "ftp": {
            "type": "string",
            "optional": true,
            "description": "The address of the ftp proxy, can include a port."
          },
          "ssl": {
            "type": "string",
            "optional": true,
            "description": "The address of the ssl proxy, can include a port."
          },
          "socks": {
            "type": "string",
            "optional": true,
            "description": "The address of the socks proxy, can include a port."
          },
          "socksVersion": {
            "type": "integer",
            "optional": true,
            "description": "The version of the socks proxy.",
            "minimum": 4,
            "maximum": 5
          },
          "passthrough": {
            "type": "string",
            "optional": true,
            "description": "A list of hosts which should not be proxied."
          },
          "autoConfigUrl": {
            "type": "string",
            "optional": true,
            "description": "A URL to use to configure the proxy."
          },
          "autoLogin": {
            "type": "boolean",
            "optional": true,
            "description": "Do not prompt for authentication if password is saved."
          },
          "proxyDNS": {
            "type": "boolean",
            "optional": true,
            "description": "Proxy DNS when using SOCKS v5."
          }
        }
      }
    ],
    "properties": {
      "allowPopupsForUserEvents": {
        "$ref": "types.Setting",
        "description": "Allows or disallows pop-up windows from opening in response to user events."
      },
      "cacheEnabled": {
        "$ref": "types.Setting",
        "description": "Enables or disables the browser cache."
      },
      "contextMenuShowEvent": {
        "$ref": "types.Setting",
        "description": "Controls after which mouse event context menus popup. This setting's value is of type ContextMenuMouseEvent, which has possible values of <code>mouseup</code> and <code>mousedown</code>."
      },
      "homepageOverride": {
        "$ref": "types.Setting",
        "description": "Returns the value of the overridden home page. Read-only."
      },
      "imageAnimationBehavior": {
        "$ref": "types.Setting",
        "description": "Controls the behaviour of image animation in the browser. This setting's value is of type ImageAnimationBehavior, defaulting to <code>normal</code>."
      },
      "newTabPageOverride": {
        "$ref": "types.Setting",
        "description": "Returns the value of the overridden new tab page. Read-only."
      },
      "openBookmarksInNewTabs": {
        "$ref": "types.Setting",
        "description": "This boolean setting controls whether bookmarks are opened in the current tab or in a new tab."
      },
      "openSearchResultsInNewTabs": {
        "$ref": "types.Setting",
        "description": "This boolean setting controls whether search results are opened in the current tab or in a new tab."
      },
      "proxyConfig": {
        "$ref": "types.Setting",
        "description": "Configures proxy settings. This setting's value is an object of type ProxyConfig."
      },
      "webNotificationsDisabled": {
        "$ref": "types.Setting",
        "description": "Disables webAPI notifications."
      }
    }
  }
]
