// 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": "debugger",
    "description": "The <code>chrome.debugger</code> API serves as an alternate transport for Chrome's <a href='http://code.google.com/chrome/devtools/docs/remote-debugging.html'>remote debugging protocol</a>. Use <code>chrome.debugger</code> to attach to one or more tabs to instrument network interaction, debug JavaScript, mutate the DOM and CSS, etc. Use the Debuggee <code>tabId</code> to target tabs with sendCommand and route events by <code>tabId</code> from onEvent callbacks.",
    "types": [
      {
        "id": "Debuggee",
        "type": "object",
        "description": "Debuggee identifier. Either tabId or extensionId must be specified",
        "properties": {
          "tabId": { "type": "integer", "optional": true, "description": "The id of the tab which you intend to debug." },
          "extensionId": { "type": "string", "optional": true, "description": "The id of the extension which you intend to debug. Attaching to an extension background page is only possible when 'enable-silent-debugging' flag is enabled on the target browser." },
          "targetId": { "type": "string", "optional": true, "description": "The opaque id of the debug target." }
        }
      },
      {
        "id": "TargetInfo",
        "type": "object",
        "description": "Debug target information",
        "properties": {
          "type": {
            "type": "string",
            "description": "Target type.",
            "enum" : ["page", "background_page", "worker", "other" ]
          },
          "id": { "type": "string", "description": "Target id." },
          "tabId": { "type": "integer", "optional": true, "description": "The tab id, defined if type == 'page'." },
          "extensionId": { "type": "string", "optional": true, "description": "The extension id, defined if type = 'background_page'." },
          "attached": { "type": "boolean", "description": "True if debugger is already attached." },
          "title": { "type": "string", "description": "Target page title." },
          "url": { "type": "string", "description": "Target URL." },
          "faviconUrl": { "type": "string", "optional": true, "description": "Target favicon URL." }
        }
      }
    ],
    "functions": [
      {
        "name": "attach",
        "type": "function",
        "description": "Attaches debugger to the given target.",
        "parameters": [
          {
            "$ref": "Debuggee",
            "name": "target",
            "description": "Debugging target to which you want to attach."
          },
          {
            "type": "string",
            "name": "requiredVersion",
            "description": "Required debugging protocol version (\"0.1\"). One can only attach to the debuggee with matching major version and greater or equal minor version. List of the protocol versions can be obtained <a href='http://code.google.com/chrome/devtools/docs/remote-debugging.html'>here</a>."
          },
          {
            "type": "function",
            "name": "callback",
            "optional": true,
            "parameters": [],
            "description": "Called once the attach operation succeeds or fails. Callback receives no arguments. If the attach fails, $ref:runtime.lastError will be set to the error message."
          }
        ]
      },
      {
        "name": "detach",
        "type": "function",
        "description": "Detaches debugger from the given target.",
        "parameters": [
          {
            "$ref": "Debuggee",
            "name": "target",
            "description": "Debugging target from which you want to detach."
          },
          {
            "type": "function",
            "name": "callback",
            "optional": true,
            "parameters": [],
            "description": "Called once the detach operation succeeds or fails. Callback receives no arguments. If the detach fails, $ref:runtime.lastError will be set to the error message."
          }
        ]
      },
      {
        "name": "sendCommand",
        "type": "function",
        "description": "Sends given command to the debugging target.",
        "parameters": [
          {
            "$ref": "Debuggee",
            "name": "target",
            "description": "Debugging target to which you want to send the command."
          },
          {
            "type": "string",
            "name": "method",
            "description": "Method name. Should be one of the methods defined by the <a href='http://code.google.com/chrome/devtools/docs/remote-debugging.html'>remote debugging protocol</a>."
          },
          {
            "type": "object",
            "name": "commandParams",
            "optional": true,
            "additionalProperties": { "type": "any" },
            "description": "JSON object with request parameters. This object must conform to the remote debugging params scheme for given method."
          },
          {
            "type": "function",
            "name": "callback",
            "optional": true,
            "parameters": [
              {
                "type": "object",
                "name": "result",
                "optional": true,
                "additionalProperties": { "type": "any" },
                "description": "JSON object with the response. Structure of the response varies depending on the method and is defined by the remote debugging protocol."
              }
            ],
            "description": "Response body. If an error occurs while posting the message, the callback will be called with no arguments and $ref:runtime.lastError will be set to the error message."
          }
        ]
      },
      {
        "name": "getTargets",
        "type": "function",
        "description": "Returns the list of available debug targets.",
        "parameters": [
          {
            "type": "function",
            "name": "callback",
            "parameters": [
              {
                "type": "array",
                "name": "result",
                "items": {"$ref": "TargetInfo"},
                "description": "Array of TargetInfo objects corresponding to the available debug targets."
              }
            ]
          }
        ]
      }
    ],
    "events": [
      {
        "name": "onEvent",
        "type": "function",
        "description": "Fired whenever debugging target issues instrumentation event.",
        "parameters": [
          {
            "$ref": "Debuggee",
            "name": "source",
            "description": "The debuggee that generated this event."
          },
          {
            "type": "string",
            "name": "method",
            "description": "Method name. Should be one of the notifications defined by the <a href='http://code.google.com/chrome/devtools/docs/remote-debugging.html'>remote debugging protocol</a>."
          },
          {
            "type": "object",
            "name": "params",
            "optional": true,
            "additionalProperties": { "type": "any" },
            "description": "JSON object with the response. Structure of the response varies depending on the method and is defined by the remote debugging protocol."
          }
        ]
      },
      {
        "name": "onDetach",
        "type": "function",
        "description": "Fired when browser terminates debugging session for the tab. This happens when either the tab is being closed or Chrome DevTools is being invoked for the attached tab.",
        "parameters": [
          {
            "$ref": "Debuggee",
            "name": "source",
            "description": "The debuggee that was detached."
          },
          {
            "type": "string",
            "name": "reason",
            "description": "Connection termination reason.",
            "enum": [ "target_closed", "canceled_by_user", "replaced_with_devtools" ]
          }
        ]
      }
    ]
  }
]
