// 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": "systemPrivate",
    "description": "none",
    "types": [
      {
        "id": "UpdateStatus",
        "type": "object",
        "description": "Information about the system update.",
        "properties": {
          "state": {
            "type": "string",
            "enum": ["NotAvailable", "Updating", "NeedRestart"],
            "description": "State of system update.  NotAvailable when there is no available update or the update system is in error state, Updating when a system update is in progress, NeedRestart when a system update is finished and restart is needed."
          },
          "downloadProgress": {
            "type": "number",
            "description": "Value between 0 and 1 describing the progress of system update download.  This value will be set to 0 when |state| is NotAvailable, 1 when NeedRestart."
          }
        }
      },
      {
        "id": "VolumeInfo",
        "type": "object",
        "description": "Information about the volume.",
        "properties": {
          "volume": {"type": "number", "description": "The value of the volume percent. This must be between 0.0 and 100.0."},
          "isVolumeMuted": {"type": "boolean", "description": "True if the volume is muted."}
        }
      },
      {
        "id": "BrightnessChangeInfo",
        "type": "object",
        "description": "Information about a change to the screen brightness.",
        "properties": {
          "brightness": {
            "type": "number",
            "description": "The value of the current screen brightness in percent, between 0.0 and 100.0."
          },
          "userInitiated": {
            "type": "boolean",
            "description": "Whether this change was initiated by user."
          }
        }
      }
    ],
    "functions": [
      {
        "name": "getIncognitoModeAvailability",
        "type": "function",
        "description": "Returns whether the incognito mode is enabled, disabled or forced",
        "parameters": [
          {
            "name": "callback",
            "type": "function",
            "description": "Called with the result.",
            "parameters": [
              {
                "name": "value",
                "type": "string",
                "enum": ["enabled", "disabled", "forced"],
                "description": "Exposes whether the incognito mode is available to windows. One of 'enabled', 'disabled' (user cannot browse pages in Incognito mode), 'forced' (all pages/sessions are forced into Incognito mode)."
              }
            ]
          }
        ]
      },
      {
        "name": "getUpdateStatus",
        "type": "function",
        "description": "Gets information about the system update.",
        "parameters": [
          {
            "type": "function",
            "name": "callback",
            "parameters": [
              {
                "$ref": "UpdateStatus",
                "name": "status",
                "description": "Details of the system update"
              }
            ]
          }
        ]
      },
      {
        "name": "getApiKey",
        "type": "function",
        "description": "Gets Chrome's API key to use for requests to Google services.",
        "parameters": [
          {
            "type": "function",
            "name": "callback",
            "parameters": [
              {
                "name": "key",
                "type": "string",
                "description": "The API key."
              }
            ]
          }
        ]
      }
    ],
    "events": [
      {
        "name": "onVolumeChanged",
        "type": "function",
        "description": "Fired when the volume is changed.",
        "parameters": [
          {
            "$ref": "VolumeInfo",
            "name": "volume",
            "description": "Information about the current state of the system volume control, including whether it is muted."
          }
        ]
      },
      {
        "name": "onBrightnessChanged",
        "type": "function",
        "description": "Fired when the screen brightness is changed.",
        "parameters": [
          {
            "$ref": "BrightnessChangeInfo",
            "name": "brightness",
            "description": "Information about a change to the screen brightness."
          }
        ]
      },
      {
        "name": "onScreenUnlocked",
        "type": "function",
        "description": "Fired when the screen is unlocked.",
        "parameters": []
      },
      {
        "name": "onWokeUp",
        "type": "function",
        "description": "Fired when the device wakes up from sleep.",
        "parameters": []
      }
    ]
  }
]