1// Copyright (c) 2012 The Chromium Authors. All rights reserved. 2// Use of this source code is governed by a BSD-style license that can be 3// found in the LICENSE file. 4 5[ 6 { 7 "namespace": "debugger", 8 "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.", 9 "types": [ 10 { 11 "id": "Debuggee", 12 "type": "object", 13 "description": "Debuggee identifier. Either tabId or extensionId must be specified", 14 "properties": { 15 "tabId": { "type": "integer", "optional": true, "description": "The id of the tab which you intend to debug." }, 16 "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." }, 17 "targetId": { "type": "string", "optional": true, "description": "The opaque id of the debug target." } 18 } 19 }, 20 { 21 "id": "TargetInfo", 22 "type": "object", 23 "description": "Debug target information", 24 "properties": { 25 "type": { 26 "type": "string", 27 "description": "Target type.", 28 "enum" : ["page", "background_page", "worker", "other" ] 29 }, 30 "id": { "type": "string", "description": "Target id." }, 31 "tabId": { "type": "integer", "optional": true, "description": "The tab id, defined if type == 'page'." }, 32 "extensionId": { "type": "string", "optional": true, "description": "The extension id, defined if type = 'background_page'." }, 33 "attached": { "type": "boolean", "description": "True if debugger is already attached." }, 34 "title": { "type": "string", "description": "Target page title." }, 35 "url": { "type": "string", "description": "Target URL." }, 36 "faviconUrl": { "type": "string", "optional": true, "description": "Target favicon URL." } 37 } 38 } 39 ], 40 "functions": [ 41 { 42 "name": "attach", 43 "type": "function", 44 "description": "Attaches debugger to the given target.", 45 "parameters": [ 46 { 47 "$ref": "Debuggee", 48 "name": "target", 49 "description": "Debugging target to which you want to attach." 50 }, 51 { 52 "type": "string", 53 "name": "requiredVersion", 54 "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>." 55 }, 56 { 57 "type": "function", 58 "name": "callback", 59 "optional": true, 60 "parameters": [], 61 "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." 62 } 63 ] 64 }, 65 { 66 "name": "detach", 67 "type": "function", 68 "description": "Detaches debugger from the given target.", 69 "parameters": [ 70 { 71 "$ref": "Debuggee", 72 "name": "target", 73 "description": "Debugging target from which you want to detach." 74 }, 75 { 76 "type": "function", 77 "name": "callback", 78 "optional": true, 79 "parameters": [], 80 "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." 81 } 82 ] 83 }, 84 { 85 "name": "sendCommand", 86 "type": "function", 87 "description": "Sends given command to the debugging target.", 88 "parameters": [ 89 { 90 "$ref": "Debuggee", 91 "name": "target", 92 "description": "Debugging target to which you want to send the command." 93 }, 94 { 95 "type": "string", 96 "name": "method", 97 "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>." 98 }, 99 { 100 "type": "object", 101 "name": "commandParams", 102 "optional": true, 103 "additionalProperties": { "type": "any" }, 104 "description": "JSON object with request parameters. This object must conform to the remote debugging params scheme for given method." 105 }, 106 { 107 "type": "function", 108 "name": "callback", 109 "optional": true, 110 "parameters": [ 111 { 112 "type": "object", 113 "name": "result", 114 "optional": true, 115 "additionalProperties": { "type": "any" }, 116 "description": "JSON object with the response. Structure of the response varies depending on the method and is defined by the remote debugging protocol." 117 } 118 ], 119 "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." 120 } 121 ] 122 }, 123 { 124 "name": "getTargets", 125 "type": "function", 126 "description": "Returns the list of available debug targets.", 127 "parameters": [ 128 { 129 "type": "function", 130 "name": "callback", 131 "parameters": [ 132 { 133 "type": "array", 134 "name": "result", 135 "items": {"$ref": "TargetInfo"}, 136 "description": "Array of TargetInfo objects corresponding to the available debug targets." 137 } 138 ] 139 } 140 ] 141 } 142 ], 143 "events": [ 144 { 145 "name": "onEvent", 146 "type": "function", 147 "description": "Fired whenever debugging target issues instrumentation event.", 148 "parameters": [ 149 { 150 "$ref": "Debuggee", 151 "name": "source", 152 "description": "The debuggee that generated this event." 153 }, 154 { 155 "type": "string", 156 "name": "method", 157 "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>." 158 }, 159 { 160 "type": "object", 161 "name": "params", 162 "optional": true, 163 "additionalProperties": { "type": "any" }, 164 "description": "JSON object with the response. Structure of the response varies depending on the method and is defined by the remote debugging protocol." 165 } 166 ] 167 }, 168 { 169 "name": "onDetach", 170 "type": "function", 171 "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.", 172 "parameters": [ 173 { 174 "$ref": "Debuggee", 175 "name": "source", 176 "description": "The debuggee that was detached." 177 }, 178 { 179 "type": "string", 180 "name": "reason", 181 "description": "Connection termination reason.", 182 "enum": [ "target_closed", "canceled_by_user", "replaced_with_devtools" ] 183 } 184 ] 185 } 186 ] 187 } 188] 189