summaryrefslogtreecommitdiff
path: root/Source/JavaScriptCore/inspector/protocol/Debugger.json
blob: d0f9dc026085d7cffaab804d7e9d5f4ab729ae8d (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
{
    "domain": "Debugger",
    "description": "Debugger domain exposes JavaScript debugging capabilities. It allows setting and removing breakpoints, stepping through execution, exploring stack traces, etc.",
    "types": [
        {
            "id": "BreakpointId",
            "type": "string",
            "description": "Breakpoint identifier."
        },
        {
            "id": "BreakpointActionIdentifier",
            "type": "integer",
            "description": "Breakpoint action identifier."
        },
        {
            "id": "ScriptId",
            "type": "string",
            "description": "Unique script identifier."
        },
        {
            "id": "CallFrameId",
            "type": "string",
            "description": "Call frame identifier."
        },
        {
            "id": "Location",
            "type": "object",
            "properties": [
                { "name": "scriptId", "$ref": "ScriptId", "description": "Script identifier as reported in the <code>Debugger.scriptParsed</code>." },
                { "name": "lineNumber", "type": "integer", "description": "Line number in the script." },
                { "name": "columnNumber", "type": "integer", "optional": true, "description": "Column number in the script." }
            ],
            "description": "Location in the source code."
        },
        {
            "id": "BreakpointAction",
            "type": "object",
            "properties": [
                { "name": "type", "type": "string", "enum": ["log", "evaluate", "sound", "probe"], "description": "Different kinds of breakpoint actions." },
                { "name": "data", "type": "string", "optional": true, "description": "Data associated with this breakpoint type (e.g. for type \"eval\" this is the JavaScript string to evalulate)." },
                { "name": "id", "$ref": "BreakpointActionIdentifier", "optional": true, "description": "A frontend-assigned identifier for this breakpoint action." }
            ],
            "description": "Action to perform when a breakpoint is triggered."
        },
        {
            "id": "BreakpointOptions",
            "type": "object",
            "properties": [
                { "name": "condition", "type": "string", "optional": true, "description": "Expression to use as a breakpoint condition. When specified, debugger will only stop on the breakpoint if this expression evaluates to true." },
                { "name": "actions", "type": "array", "optional": true, "items": { "$ref": "BreakpointAction" }, "description": "Actions to perform automatically when the breakpoint is triggered." },
                { "name": "autoContinue", "type": "boolean", "optional": true, "description": "Automatically continue after hitting this breakpoint and running actions." },
                { "name": "ignoreCount", "type": "integer", "optional": true, "description": "Number of times to ignore this breakpoint, before stopping on the breakpoint and running actions." }
            ],
            "description": "Extra options that modify breakpoint behavior."
        },
        {
            "id": "FunctionDetails",
            "type": "object",
            "properties": [
                { "name": "location", "$ref": "Location", "description": "Location of the function." },
                { "name": "name", "type": "string", "optional": true, "description": "Name of the function. Not present for anonymous functions." },
                { "name": "displayName", "type": "string", "optional": true, "description": "Display name of the function(specified in 'displayName' property on the function object)." },
                { "name": "inferredName", "type": "string", "optional": true, "description": "Name of the function inferred from its initial assignment." },
                { "name": "scopeChain", "type": "array", "optional": true, "items": { "$ref": "Scope" }, "description": "Scope chain for this closure." }
            ],
            "description": "Information about the function."
        },
        {
            "id": "CallFrame",
            "type": "object",
            "properties": [
                { "name": "callFrameId", "$ref": "CallFrameId", "description": "Call frame identifier. This identifier is only valid while the virtual machine is paused." },
                { "name": "functionName", "type": "string", "description": "Name of the JavaScript function called on this call frame." },
                { "name": "location", "$ref": "Location", "description": "Location in the source code." },
                { "name": "scopeChain", "type": "array", "items": { "$ref": "Scope" }, "description": "Scope chain for this call frame." },
                { "name": "this", "$ref": "Runtime.RemoteObject", "description": "<code>this</code> object for this call frame." }
            ],
            "description": "JavaScript call frame. Array of call frames form the call stack."
        },
        {
            "id": "Scope",
            "type": "object",
            "properties": [
                { "name": "type", "type": "string", "enum": ["global", "with", "closure", "catch", "functionName", "globalLexicalEnvironment", "nestedLexical"], "description": "Scope type." },
                { "name": "object", "$ref": "Runtime.RemoteObject", "description": "Object representing the scope. For <code>global</code> and <code>with</code> scopes it represents the actual object; for the rest of the scopes, it is artificial transient object enumerating scope variables as its properties." }
            ],
            "description": "Scope description."
        },
        {
            "id": "ProbeSample",
            "description": "A sample collected by evaluating a probe breakpoint action.",
            "type": "object",
            "properties": [
                { "name": "probeId", "$ref": "BreakpointActionIdentifier", "description": "Identifier of the probe breakpoint action that created the sample." },
                { "name": "sampleId", "type": "integer", "description": "Unique identifier for this sample." },
                { "name": "batchId", "type": "integer", "description": "A batch identifier which is the same for all samples taken at the same breakpoint hit." },
                { "name": "timestamp", "type": "number", "description": "Timestamp of when the sample was taken." },
                { "name": "payload", "$ref": "Runtime.RemoteObject", "description": "Contents of the sample." }
            ]
        },
        {
            "id": "AssertPauseReason",
            "description": "The pause reason auxiliary data when paused because of an assertion.",
            "type": "object",
            "properties": [
                { "name": "message", "type": "string", "optional": true, "description": "The console.assert message string if provided." }
            ]
        },
        {
            "id": "BreakpointPauseReason",
            "description": "The pause reason auxiliary data when paused because of hitting a breakpoint.",
            "type": "object",
            "properties": [
                { "name": "breakpointId", "type": "string", "description": "The identifier of the breakpoint causing the pause." }
            ]
        },
        {
            "id": "CSPViolationPauseReason",
            "description": "The pause reason auxiliary data when paused because of a Content Security Policy directive.",
            "type": "object",
            "properties": [
                { "name": "directive", "type": "string", "description": "The CSP directive that blocked script execution." }
            ]
        }
    ],
    "commands": [
        {
            "name": "enable",
            "description": "Enables debugger for the given page. Clients should not assume that the debugging has been enabled until the result for this command is received."
        },
        {
            "name": "disable",
            "description": "Disables debugger for given page."
        },
        {
            "name": "setBreakpointsActive",
            "parameters": [
                { "name": "active", "type": "boolean", "description": "New value for breakpoints active state." }
            ],
            "description": "Activates / deactivates all breakpoints on the page."
        },
        {
            "name": "setBreakpointByUrl",
            "parameters": [
                { "name": "lineNumber", "type": "integer", "description": "Line number to set breakpoint at." },
                { "name": "url", "type": "string", "optional": true, "description": "URL of the resources to set breakpoint on." },
                { "name": "urlRegex", "type": "string", "optional": true, "description": "Regex pattern for the URLs of the resources to set breakpoints on. Either <code>url</code> or <code>urlRegex</code> must be specified." },
                { "name": "columnNumber", "type": "integer", "optional": true, "description": "Offset in the line to set breakpoint at." },
                { "name": "options", "$ref": "BreakpointOptions", "optional": true, "description": "Options to apply to this breakpoint to modify its behavior." }
            ],
            "returns": [
                { "name": "breakpointId", "$ref": "BreakpointId", "description": "Id of the created breakpoint for further reference." },
                { "name": "locations", "type": "array", "items": { "$ref": "Location"}, "description": "List of the locations this breakpoint resolved into upon addition." }
            ],
            "description": "Sets JavaScript breakpoint at given location specified either by URL or URL regex. Once this command is issued, all existing parsed scripts will have breakpoints resolved and returned in <code>locations</code> property. Further matching script parsing will result in subsequent <code>breakpointResolved</code> events issued. This logical breakpoint will survive page reloads."
        },
        {
            "name": "setBreakpoint",
            "parameters": [
                { "name": "location", "$ref": "Location", "description": "Location to set breakpoint in." },
                { "name": "options", "$ref": "BreakpointOptions", "optional": true, "description": "Options to apply to this breakpoint to modify its behavior." }
            ],
            "returns": [
                { "name": "breakpointId", "$ref": "BreakpointId", "description": "Id of the created breakpoint for further reference." },
                { "name": "actualLocation", "$ref": "Location", "description": "Location this breakpoint resolved into." }
            ],
            "description": "Sets JavaScript breakpoint at a given location."
        },
        {
            "name": "removeBreakpoint",
            "parameters": [
                { "name": "breakpointId", "$ref": "BreakpointId" }
            ],
            "description": "Removes JavaScript breakpoint."
        },
        {
            "name": "continueToLocation",
            "parameters": [
                { "name": "location", "$ref": "Location", "description": "Location to continue to." }
            ],
            "description": "Continues execution until specific location is reached."
        },
        {
            "name": "stepOver",
            "description": "Steps over the statement."
        },
        {
            "name": "stepInto",
            "description": "Steps into the function call."
        },
        {
            "name": "stepOut",
            "description": "Steps out of the function call."
        },
        {
            "name": "pause",
            "description": "Stops on the next JavaScript statement."
        },
        {
            "name": "resume",
            "description": "Resumes JavaScript execution."
        },
        {
            "name": "searchInContent",
            "description": "Searches for given string in script content.",
            "parameters": [
                { "name": "scriptId", "$ref": "ScriptId", "description": "Id of the script to search in." },
                { "name": "query", "type": "string", "description": "String to search for." },
                { "name": "caseSensitive", "type": "boolean", "optional": true, "description": "If true, search is case sensitive." },
                { "name": "isRegex", "type": "boolean", "optional": true, "description": "If true, treats string parameter as regex." }
            ],
            "returns": [
                { "name": "result", "type": "array", "items": { "$ref": "GenericTypes.SearchMatch" }, "description": "List of search matches." }
            ]
        },
        {
            "name": "getScriptSource",
            "parameters": [
                { "name": "scriptId", "$ref": "ScriptId", "description": "Id of the script to get source for." }
            ],
            "returns": [
                { "name": "scriptSource", "type": "string", "description": "Script source." }
            ],
            "description": "Returns source for the script with given id."
        },
        {
            "name": "getFunctionDetails",
            "parameters": [
                { "name": "functionId", "$ref": "Runtime.RemoteObjectId", "description": "Id of the function to get location for." }
            ],
            "returns": [
                { "name": "details", "$ref": "FunctionDetails", "description": "Information about the function." }
            ],
            "description": "Returns detailed information on given function."
        },
        {
            "name": "setPauseOnExceptions",
            "parameters": [
                { "name": "state", "type": "string", "enum": ["none", "uncaught", "all"], "description": "Pause on exceptions mode." }
            ],
            "description": "Defines pause on exceptions state. Can be set to stop on all exceptions, uncaught exceptions or no exceptions. Initial pause on exceptions state is <code>none</code>."
        },
        {
            "name": "evaluateOnCallFrame",
            "parameters": [
                { "name": "callFrameId", "$ref": "CallFrameId", "description": "Call frame identifier to evaluate on." },
                { "name": "expression", "type": "string", "description": "Expression to evaluate." },
                { "name": "objectGroup", "type": "string", "optional": true, "description": "String object group name to put result into (allows rapid releasing resulting object handles using <code>releaseObjectGroup</code>)." },
                { "name": "includeCommandLineAPI", "type": "boolean", "optional": true, "description": "Specifies whether command line API should be available to the evaluated expression, defaults to false." },
                { "name": "doNotPauseOnExceptionsAndMuteConsole", "type": "boolean", "optional": true, "description": "Specifies whether evaluation should stop on exceptions and mute console. Overrides setPauseOnException state." },
                { "name": "returnByValue", "type": "boolean", "optional": true, "description": "Whether the result is expected to be a JSON object that should be sent by value." },
                { "name": "generatePreview", "type": "boolean", "optional": true, "description": "Whether preview should be generated for the result." },
                { "name": "saveResult", "type": "boolean", "optional": true, "description": "Whether the resulting value should be considered for saving in the $n history." }
            ],
            "returns": [
                { "name": "result", "$ref": "Runtime.RemoteObject", "description": "Object wrapper for the evaluation result." },
                { "name": "wasThrown", "type": "boolean", "optional": true, "description": "True if the result was thrown during the evaluation." },
                { "name": "savedResultIndex", "type": "integer", "optional": true, "description": "If the result was saved, this is the $n index that can be used to access the value." }
            ],
            "description": "Evaluates expression on a given call frame."
        },
        {
            "name": "setOverlayMessage",
            "parameters": [
                { "name": "message", "type": "string", "optional": true, "description": "Overlay message to display when paused in debugger." }
            ],
            "description": "Sets overlay message."
        }
    ],
    "events": [
        {
            "name": "globalObjectCleared",
            "description": "Called when global has been cleared and debugger client should reset its state. Happens upon navigation or reload."
        },
        {
            "name": "scriptParsed",
            "parameters": [
                { "name": "scriptId", "$ref": "ScriptId", "description": "Identifier of the script parsed." },
                { "name": "url", "type": "string", "description": "URL or name of the script parsed (if any)." },
                { "name": "startLine", "type": "integer", "description": "Line offset of the script within the resource with given URL (for script tags)." },
                { "name": "startColumn", "type": "integer", "description": "Column offset of the script within the resource with given URL." },
                { "name": "endLine", "type": "integer", "description": "Last line of the script." },
                { "name": "endColumn", "type": "integer", "description": "Length of the last line of the script." },
                { "name": "isContentScript", "type": "boolean", "optional": true, "description": "Determines whether this script is a user extension script." },
                { "name": "sourceMapURL", "type": "string", "optional": true, "description": "URL of source map associated with script (if any)." },
                { "name": "hasSourceURL", "type": "boolean", "optional": true, "description": "True, if this script has sourceURL." }
            ],
            "description": "Fired when virtual machine parses script. This event is also fired for all known and uncollected scripts upon enabling debugger."
        },
        {
            "name": "scriptFailedToParse",
            "parameters": [
                { "name": "url", "type": "string", "description": "URL of the script that failed to parse." },
                { "name": "scriptSource", "type": "string", "description": "Source text of the script that failed to parse." },
                { "name": "startLine", "type": "integer", "description": "Line offset of the script within the resource." },
                { "name": "errorLine", "type": "integer", "description": "Line with error." },
                { "name": "errorMessage", "type": "string", "description": "Parse error message." }
            ],
            "description": "Fired when virtual machine fails to parse the script."
        },
        {
            "name": "breakpointResolved",
            "parameters": [
                { "name": "breakpointId", "$ref": "BreakpointId", "description": "Breakpoint unique identifier." },
                { "name": "location", "$ref": "Location", "description": "Actual breakpoint location." }
            ],
            "description": "Fired when breakpoint is resolved to an actual script and location."
        },
        {
            "name": "paused",
            "parameters": [
                { "name": "callFrames", "type": "array", "items": { "$ref": "CallFrame" }, "description": "Call stack the virtual machine stopped on." },
                { "name": "reason", "type": "string", "enum": ["XHR", "DOM", "EventListener", "exception", "assert", "CSPViolation", "DebuggerStatement", "Breakpoint", "PauseOnNextStatement", "other"], "description": "Pause reason." },
                { "name": "data", "type": "object", "optional": true, "description": "Object containing break-specific auxiliary properties." }
            ],
            "description": "Fired when the virtual machine stopped on breakpoint or exception or any other stop criteria."
        },
        {
            "name": "resumed",
            "description": "Fired when the virtual machine resumed execution."
        },
        {
            "name": "didSampleProbe",
            "description": "Fires when a new probe sample is collected.",
            "parameters": [
                { "name": "sample", "$ref": "ProbeSample", "description": "A collected probe sample." }
            ]
        },
        {
            "name": "playBreakpointActionSound",
            "description": "Fired when a \"sound\" breakpoint action is triggered on a breakpoint.",
            "parameters": [
                { "name": "breakpointActionId", "$ref": "BreakpointActionIdentifier", "description": "Breakpoint action identifier." }
            ]
        }
    ]
}