Web Inspector: Search: allow DOM searches to be case sensitive
[WebKit-https.git] / Source / JavaScriptCore / inspector / protocol / DOM.json
1 {
2     "domain": "DOM",
3     "description": "This domain exposes DOM read/write operations. Each DOM Node is represented with its mirror object that has an <code>id</code>. This <code>id</code> can be used to get additional information on the Node, resolve it into the JavaScript object wrapper, etc. It is important that client receives DOM events only for the nodes that are known to the client. Backend keeps track of the nodes that were sent to the client and never sends the same node twice. It is client's responsibility to collect information about the nodes that were sent to the client.<p>Note that <code>iframe</code> owner elements will return corresponding document elements as their child nodes.</p>",
4     "availability": ["web"],
5     "types": [
6         {
7             "id": "NodeId",
8             "type": "integer",
9             "description": "Unique DOM node identifier."
10         },
11         {
12             "id": "EventListenerId",
13             "type": "integer",
14             "description": "Unique event listener identifier."
15         },
16         {
17             "id": "PseudoType",
18             "type": "string",
19             "enum": ["before", "after"],
20             "description": "Pseudo element type."
21         },
22         {
23             "id": "ShadowRootType",
24             "type": "string",
25             "enum": ["user-agent", "open", "closed"],
26             "description": "Shadow root type."
27         },
28         {
29             "id": "CustomElementState",
30             "type": "string",
31             "enum": ["builtin", "custom", "waiting", "failed"],
32             "description": "Custom element state."
33         },
34         {
35             "id": "LiveRegionRelevant",
36             "type": "string",
37             "enum": ["additions", "removals", "text"],
38             "description": "Token values of @aria-relevant attribute."
39         },
40         {
41             "id": "Node",
42             "type": "object",
43             "description": "DOM interaction is implemented in terms of mirror objects that represent the actual DOM nodes. DOMNode is a base node mirror type.",
44             "properties": [
45                 { "name": "nodeId", "$ref": "NodeId", "description": "Node identifier that is passed into the rest of the DOM messages as the <code>nodeId</code>. Backend will only push node with given <code>id</code> once. It is aware of all requested nodes and will only fire DOM events for nodes known to the client." },
46                 { "name": "nodeType", "type": "integer", "description": "<code>Node</code>'s nodeType." },
47                 { "name": "nodeName", "type": "string", "description": "<code>Node</code>'s nodeName." },
48                 { "name": "localName", "type": "string", "description": "<code>Node</code>'s localName." },
49                 { "name": "nodeValue", "type": "string", "description": "<code>Node</code>'s nodeValue." },
50                 { "name": "childNodeCount", "type": "integer", "optional": true, "description": "Child count for <code>Container</code> nodes." },
51                 { "name": "children", "type": "array", "optional": true, "items": { "$ref": "Node" }, "description": "Child nodes of this node when requested with children." },
52                 { "name": "attributes", "type": "array", "optional": true, "items": { "type": "string" }, "description": "Attributes of the <code>Element</code> node in the form of flat array <code>[name1, value1, name2, value2]</code>." },
53                 { "name": "documentURL", "type": "string", "optional": true, "description": "Document URL that <code>Document</code> or <code>FrameOwner</code> node points to." },
54                 { "name": "baseURL", "type": "string", "optional": true, "description": "Base URL that <code>Document</code> or <code>FrameOwner</code> node uses for URL completion." },
55                 { "name": "publicId", "type": "string", "optional": true, "description": "<code>DocumentType</code>'s publicId." },
56                 { "name": "systemId", "type": "string", "optional": true, "description": "<code>DocumentType</code>'s systemId." },
57                 { "name": "xmlVersion", "type": "string", "optional": true, "description": "<code>Document</code>'s XML version in case of XML documents." },
58                 { "name": "name", "type": "string", "optional": true, "description": "<code>Attr</code>'s name." },
59                 { "name": "value", "type": "string", "optional": true, "description": "<code>Attr</code>'s value." },
60                 { "name": "pseudoType", "$ref": "PseudoType", "optional": true, "description": "Pseudo element type for this node." },
61                 { "name": "shadowRootType", "$ref": "ShadowRootType", "optional": true, "description": "Shadow root type." },
62                 { "name": "customElementState", "$ref": "CustomElementState", "optional": true, "description": "Custom element state." },
63                 { "name": "frameId", "$ref": "Network.FrameId", "optional": true, "description": "Frame ID for frame owner elements." },
64                 { "name": "contentDocument", "$ref": "Node", "optional": true, "description": "Content document for frame owner elements." },
65                 { "name": "shadowRoots", "type": "array", "optional": true, "items": { "$ref": "Node" }, "description": "Shadow root list for given element host." },
66                 { "name": "templateContent", "$ref": "Node", "optional": true, "description": "Content document fragment for template elements" },
67                 { "name": "pseudoElements", "type": "array", "items": { "$ref": "Node" }, "optional": true, "description": "Pseudo elements associated with this node." },
68                 { "name": "contentSecurityPolicyHash", "type": "string", "optional": true, "description": "Computed SHA-256 Content Security Policy hash source for given element." }
69             ]
70         },
71         {
72             "id": "DataBinding",
73             "type": "object",
74             "description": "Relationship between data that is associated with a node and the node itself.",
75             "properties": [
76                 { "name": "binding", "type": "string", "description": "The binding key that is specified." },
77                 { "name": "type", "optional": true, "type": "string", "description": "A more descriptive name for the type of binding that represents this paritcular data relationship" },
78                 { "name": "value", "type": "string", "description": "The value that is resolved to with this data binding relationship." }
79             ]
80         },
81         {
82             "id": "EventListener",
83             "type": "object",
84             "description": "A structure holding event listener properties.",
85             "properties": [
86                 { "name": "eventListenerId", "$ref": "EventListenerId" },
87                 { "name": "type", "type": "string", "description": "<code>EventListener</code>'s type." },
88                 { "name": "useCapture", "type": "boolean", "description": "<code>EventListener</code>'s useCapture." },
89                 { "name": "isAttribute", "type": "boolean", "description": "<code>EventListener</code>'s isAttribute." },
90                 { "name": "nodeId", "$ref": "NodeId", "description": "Target <code>DOMNode</code> id." },
91                 { "name": "location", "$ref": "Debugger.Location", "optional": true, "description": "Handler code location." },
92                 { "name": "handlerName", "type": "string", "optional": true, "description": "Event handler function name." },
93                 { "name": "handlerObject", "$ref": "Runtime.RemoteObject", "optional": true, "description": "Event handler function value." },
94                 { "name": "passive", "type": "boolean", "optional": true, "description": "<code>EventListener</code>'s passive." },
95                 { "name": "once", "type": "boolean", "optional": true, "description": "<code>EventListener</code>'s once." },
96                 { "name": "disabled", "type": "boolean", "optional": true },
97                 { "name": "hasBreakpoint", "type": "boolean", "optional": true }
98             ]
99         },
100         {
101             "id": "AccessibilityProperties",
102             "description": "A structure holding accessibility properties.",
103             "type": "object",
104             "properties": [
105                 { "name": "activeDescendantNodeId", "$ref": "NodeId", "optional": true, "description": "<code>DOMNode</code> id of the accessibility object referenced by aria-activedescendant." },
106                 { "name": "busy", "type": "boolean", "optional": true, "description": "Value of @aria-busy on current or ancestor node." },
107                 { "name": "checked", "type": "string", "optional": true, "enum": ["true", "false", "mixed"], "description": "Checked state of certain form controls." },
108                 { "name": "childNodeIds", "type": "array", "items": { "$ref": "NodeId" }, "optional": true, "description": "Array of <code>DOMNode</code> ids of the accessibility tree children if available." },
109                 { "name": "controlledNodeIds", "type": "array", "items": { "$ref": "NodeId" }, "optional": true, "description": "Array of <code>DOMNode</code> ids of any nodes referenced via @aria-controls." },
110                 { "name": "current", "type": "string", "optional": true, "enum": ["true", "false", "page", "step", "location", "date", "time"], "description": "Current item within a container or set of related elements." },
111                 { "name": "disabled", "type": "boolean", "optional": true, "description": "Disabled state of form controls." },
112                 { "name": "headingLevel", "type": "number", "optional": true, "description": "Heading level of a heading element." },
113                 { "name": "hierarchyLevel", "type": "number", "optional": true, "description": "The hierarchical level of an element." },
114                 { "name": "isPopUpButton", "type": "boolean", "optional": true, "description": "Whether an element is a popup button." },
115                 { "name": "exists", "type": "boolean", "description": "Indicates whether there is an existing AX object for the DOM node. If this is false, all the other properties will be default values." },
116                 { "name": "expanded", "type": "boolean", "optional": true, "description": "Expanded state." },
117                 { "name": "flowedNodeIds", "type": "array", "items": { "$ref": "NodeId" }, "optional": true, "description": "Array of <code>DOMNode</code> ids of any nodes referenced via @aria-flowto." },
118                 { "name": "focused", "type": "boolean", "optional": true, "description": "Focused state. Only defined on focusable elements." },
119                 { "name": "ignored", "type": "boolean", "optional": true, "description": "Indicates whether the accessibility of the associated AX object node is ignored, whether heuristically or explicitly." },
120                 { "name": "ignoredByDefault", "type": "boolean", "optional": true, "description": "State indicating whether the accessibility of the associated AX object node is ignored by default for node type." },
121                 { "name": "invalid", "type": "string", "optional": true, "enum": ["true", "false", "grammar", "spelling"], "description": "Invalid status of form controls." },
122                 { "name": "hidden", "type": "boolean", "optional": true, "description": "Hidden state. True if node or an ancestor is hidden via CSS or explicit @aria-hidden, to clarify why the element is ignored." },
123                 { "name": "label", "type": "string", "description": "Computed label value for the node, sometimes calculated by referencing other nodes." },
124                 { "name": "liveRegionAtomic", "type": "boolean", "optional": true, "description": "Value of @aria-atomic." },
125                 { "name": "liveRegionRelevant", "type": "array", "items": { "type": "string" }, "optional": true, "description": "Token value(s) of element's @aria-relevant attribute. Array of string values matching $ref LiveRegionRelevant. FIXME: Enum values blocked by http://webkit.org/b/133711" },
126                 { "name": "liveRegionStatus", "type": "string", "optional": true, "enum": ["assertive", "polite", "off"], "description": "Value of element's @aria-live attribute." },
127                 { "name": "mouseEventNodeId", "$ref": "NodeId", "optional": true, "description": "<code>DOMNode</code> id of node or closest ancestor node that has a mousedown, mouseup, or click event handler." },
128                 { "name": "nodeId", "$ref": "NodeId", "description": "Target <code>DOMNode</code> id." },
129                 { "name": "ownedNodeIds", "type": "array", "items": { "$ref": "NodeId" }, "optional": true, "description": "Array of <code>DOMNode</code> ids of any nodes referenced via @aria-owns." },
130                 { "name": "parentNodeId", "$ref": "NodeId", "optional": true, "description": "<code>DOMNode</code> id of the accessibility tree parent object if available." },
131                 { "name": "pressed", "type": "boolean", "optional": true, "description": "Pressed state for toggle buttons." },
132                 { "name": "readonly", "type": "boolean", "optional": true, "description": "Readonly state of text controls." },
133                 { "name": "required", "type": "boolean", "optional": true, "description": "Required state of form controls." },
134                 { "name": "role", "type": "string", "description": "Computed value for first recognized role token, default role per element, or overridden role." },
135                 { "name": "selected", "type": "boolean", "optional": true, "description": "Selected state of certain form controls." },
136                 { "name": "selectedChildNodeIds", "type": "array", "items": { "$ref": "NodeId" }, "optional": true, "description": "Array of <code>DOMNode</code> ids of any children marked as selected." }
137             ]
138         },
139         {
140             "id": "RGBAColor",
141             "type": "object",
142             "description": "A structure holding an RGBA color.",
143             "properties": [
144                 { "name": "r", "type": "integer", "description": "The red component, in the [0-255] range." },
145                 { "name": "g", "type": "integer", "description": "The green component, in the [0-255] range." },
146                 { "name": "b", "type": "integer", "description": "The blue component, in the [0-255] range." },
147                 { "name": "a", "type": "number", "optional": true, "description": "The alpha component, in the [0-1] range (default: 1)." }
148             ]
149         },
150         {
151             "id": "Quad",
152             "type": "array",
153             "items": { "type": "number" },
154             "minItems": 8,
155             "maxItems": 8,
156             "description": "An array of quad vertices, x immediately followed by y for each point, points clock-wise."
157         },
158         {
159             "id": "HighlightConfig",
160             "type": "object",
161             "description": "Configuration data for the highlighting of page elements.",
162             "properties": [
163                 { "name": "showInfo", "type": "boolean", "optional": true, "description": "Whether the node info tooltip should be shown (default: false)." },
164                 { "name": "contentColor", "$ref": "RGBAColor", "optional": true, "description": "The content box highlight fill color (default: transparent)." },
165                 { "name": "paddingColor", "$ref": "RGBAColor", "optional": true, "description": "The padding highlight fill color (default: transparent)." },
166                 { "name": "borderColor", "$ref": "RGBAColor", "optional": true, "description": "The border highlight fill color (default: transparent)." },
167                 { "name": "marginColor", "$ref": "RGBAColor", "optional": true, "description": "The margin highlight fill color (default: transparent)." }
168             ]
169         }
170     ],
171     "commands": [
172         {
173             "name": "getDocument",
174             "description": "Returns the root DOM node to the caller.",
175             "returns": [
176                 { "name": "root", "$ref": "Node", "description": "Resulting node." }
177             ]
178         },
179         {
180             "name": "requestChildNodes",
181             "description": "Requests that children of the node with given id are returned to the caller in form of <code>setChildNodes</code> events where not only immediate children are retrieved, but all children down to the specified depth.",
182             "parameters": [
183                 { "name": "nodeId", "$ref": "NodeId", "description": "Id of the node to get children for." },
184                 { "name": "depth", "type": "integer", "optional": true, "description": "The maximum depth at which children should be retrieved, defaults to 1. Use -1 for the entire subtree or provide an integer larger than 0." }
185             ]
186         },
187         {
188             "name": "querySelector",
189             "description": "Executes <code>querySelector</code> on a given node.",
190             "parameters": [
191                 { "name": "nodeId", "$ref": "NodeId", "description": "Id of the node to query upon." },
192                 { "name": "selector", "type": "string", "description": "Selector string." }
193             ],
194             "returns": [
195                 { "name": "nodeId", "$ref": "NodeId", "description": "Query selector result." }
196             ]
197         },
198         {
199             "name": "querySelectorAll",
200             "description": "Executes <code>querySelectorAll</code> on a given node.",
201             "parameters": [
202                 { "name": "nodeId", "$ref": "NodeId", "description": "Id of the node to query upon." },
203                 { "name": "selector", "type": "string", "description": "Selector string." }
204             ],
205             "returns": [
206                 { "name": "nodeIds", "type": "array", "items": { "$ref": "NodeId" }, "description": "Query selector result." }
207             ]
208         },
209         {
210             "name": "setNodeName",
211             "description": "Sets node name for a node with given id.",
212             "parameters": [
213                 { "name": "nodeId", "$ref": "NodeId", "description": "Id of the node to set name for." },
214                 { "name": "name", "type": "string", "description": "New node's name." }
215             ],
216             "returns": [
217                 { "name": "nodeId", "$ref": "NodeId", "description": "New node's id." }
218             ]
219         },
220         {
221             "name": "setNodeValue",
222             "description": "Sets node value for a node with given id.",
223             "parameters": [
224                 { "name": "nodeId", "$ref": "NodeId", "description": "Id of the node to set value for." },
225                 { "name": "value", "type": "string", "description": "New node's value." }
226             ]
227         },
228         {
229             "name": "removeNode",
230             "description": "Removes node with given id.",
231             "parameters": [
232                 { "name": "nodeId", "$ref": "NodeId", "description": "Id of the node to remove." }
233             ]
234         },
235         {
236             "name": "setAttributeValue",
237             "description": "Sets attribute for an element with given id.",
238             "parameters": [
239                 { "name": "nodeId", "$ref": "NodeId", "description": "Id of the element to set attribute for." },
240                 { "name": "name", "type": "string", "description": "Attribute name." },
241                 { "name": "value", "type": "string", "description": "Attribute value." }
242             ]
243         },
244         {
245             "name": "setAttributesAsText",
246             "description": "Sets attributes on element with given id. This method is useful when user edits some existing attribute value and types in several attribute name/value pairs.",
247             "parameters": [
248                 { "name": "nodeId", "$ref": "NodeId", "description": "Id of the element to set attributes for." },
249                 { "name": "text", "type": "string", "description": "Text with a number of attributes. Will parse this text using HTML parser." },
250                 { "name": "name", "type": "string", "optional": true, "description": "Attribute name to replace with new attributes derived from text in case text parsed successfully." }
251             ]
252         },
253         {
254             "name": "removeAttribute",
255             "description": "Removes attribute with given name from an element with given id.",
256             "parameters": [
257                 { "name": "nodeId", "$ref": "NodeId", "description": "Id of the element to remove attribute from." },
258                 { "name": "name", "type": "string", "description": "Name of the attribute to remove." }
259             ]
260         },
261         {
262             "name": "getSupportedEventNames",
263             "description": "Gets the list of builtin DOM event names.",
264             "returns": [
265                 { "name": "eventNames", "type": "array", "items": { "type": "string" } }
266             ]
267         },
268         {
269             "name": "getDataBindingsForNode",
270             "description": "Returns all data binding relationships between data that is associated with the node and the node itself.",
271             "parameters": [
272                 { "name": "nodeId", "$ref": "NodeId", "description": "Id of the node to get data bindings for." }
273             ],
274             "returns": [
275                 { "name": "dataBindings", "type": "array", "items": { "$ref": "DataBinding"}, "description": "Array of binding relationships between data and node" }
276             ]
277         },
278         {
279             "name": "getAssociatedDataForNode",
280             "description": "Returns all data that has been associated with the node and is available for data binding.",
281             "parameters": [
282                 { "name": "nodeId", "$ref": "NodeId", "description": "Id of the node to get associated data for." }
283             ],
284             "returns": [
285                 { "name": "associatedData", "type": "string", "optional": true, "description": "Associated data bound to this node. Sent as a JSON string." }
286             ]
287         },
288         {
289             "name": "getEventListenersForNode",
290             "description": "Returns event listeners relevant to the node.",
291             "parameters": [
292                 { "name": "nodeId", "$ref": "NodeId", "description": "Id of the node to get listeners for." },
293                 { "name": "objectGroup", "type": "string", "optional": true, "description": "Symbolic group name for handler value. Handler value is not returned without this parameter specified." }
294             ],
295             "returns": [
296                 { "name": "listeners", "type": "array", "items": { "$ref": "EventListener"}, "description": "Array of relevant listeners." }
297             ]
298         },
299         {
300             "name": "setEventListenerDisabled",
301             "description": "Enable/disable the given event listener. A disabled event listener will not fire.",
302             "parameters": [
303                 { "name": "eventListenerId", "$ref": "EventListenerId" },
304                 { "name": "disabled", "type": "boolean" }
305             ]
306         },
307         {
308             "name": "setBreakpointForEventListener",
309             "description": "Set a breakpoint on the given event listener.",
310             "parameters": [
311                 { "name": "eventListenerId", "$ref": "EventListenerId" }
312             ]
313         },
314         {
315             "name": "removeBreakpointForEventListener",
316             "description": "Remove any breakpoints on the given event listener.",
317             "parameters": [
318                 { "name": "eventListenerId", "$ref": "EventListenerId" }
319             ]
320         },
321         {
322             "name": "getAccessibilityPropertiesForNode",
323             "description": "Returns a dictionary of accessibility properties for the node.",
324             "parameters": [
325                 { "name": "nodeId", "$ref": "NodeId", "description": "Id of the node for which to get accessibility properties." }
326             ],
327             "returns": [
328                 { "name": "properties", "$ref": "AccessibilityProperties", "description": "Dictionary of relevant accessibility properties." }
329             ]
330         },
331         {
332             "name": "getOuterHTML",
333             "description": "Returns node's HTML markup.",
334             "parameters": [
335                 { "name": "nodeId", "$ref": "NodeId", "description": "Id of the node to get markup for." }
336             ],
337             "returns": [
338                 { "name": "outerHTML", "type": "string", "description": "Outer HTML markup." }
339             ]
340         },
341         {
342             "name": "setOuterHTML",
343             "description": "Sets node HTML markup, returns new node id.",
344             "parameters": [
345                 { "name": "nodeId", "$ref": "NodeId", "description": "Id of the node to set markup for." },
346                 { "name": "outerHTML", "type": "string", "description": "Outer HTML markup to set." }
347             ]
348         },
349         {
350             "name": "insertAdjacentHTML",
351             "parameters": [
352                 { "name": "nodeId", "$ref": "NodeId" },
353                 { "name": "position", "type": "string" },
354                 { "name": "html", "type": "string" }
355             ]
356         },
357         {
358             "name": "performSearch",
359             "description": "Searches for a given string in the DOM tree. Use <code>getSearchResults</code> to access search results or <code>cancelSearch</code> to end this search session.",
360             "parameters": [
361                 { "name": "query", "type": "string", "description": "Plain text or query selector or XPath search query." },
362                 { "name": "nodeIds", "type": "array", "items": { "$ref": "NodeId" }, "optional": true, "description": "Ids of nodes to use as starting points for the search." },
363                 { "name": "caseSensitive", "type": "boolean", "optional": true, "description": "If true, search is case sensitive." }
364             ],
365             "returns": [
366                 { "name": "searchId", "type": "string", "description": "Unique search session identifier." },
367                 { "name": "resultCount", "type": "integer", "description": "Number of search results." }
368             ]
369         },
370         {
371             "name": "getSearchResults",
372             "description": "Returns search results from given <code>fromIndex</code> to given <code>toIndex</code> from the sarch with the given identifier.",
373             "parameters": [
374                 { "name": "searchId", "type": "string", "description": "Unique search session identifier." },
375                 { "name": "fromIndex", "type": "integer", "description": "Start index of the search result to be returned." },
376                 { "name": "toIndex", "type": "integer", "description": "End index of the search result to be returned." }
377             ],
378             "returns": [
379                 { "name": "nodeIds", "type": "array", "items": { "$ref": "NodeId" }, "description": "Ids of the search result nodes." }
380             ]
381         },
382         {
383             "name": "discardSearchResults",
384             "description": "Discards search results from the session with the given id. <code>getSearchResults</code> should no longer be called for that search.",
385             "parameters": [
386                 { "name": "searchId", "type": "string", "description": "Unique search session identifier." }
387             ]
388         },
389         {
390             "name": "requestNode",
391             "description": "Requests that the node is sent to the caller given the JavaScript node object reference. All nodes that form the path from the node to the root are also sent to the client as a series of <code>setChildNodes</code> notifications.",
392             "parameters": [
393                 { "name": "objectId", "$ref": "Runtime.RemoteObjectId", "description": "JavaScript object id to convert into node." }
394             ],
395             "returns": [
396                 { "name": "nodeId", "$ref": "NodeId", "description": "Node id for given object." }
397             ]
398         },
399         {
400             "name": "setInspectModeEnabled",
401             "description": "Enters the 'inspect' mode. In this mode, elements that user is hovering over are highlighted. Backend then generates 'inspect' command upon element selection.",
402             "parameters": [
403                 { "name": "enabled", "type": "boolean", "description": "True to enable inspection mode, false to disable it." },
404                 { "name": "highlightConfig", "$ref": "HighlightConfig", "optional": true, "description": "A descriptor for the highlight appearance of hovered-over nodes. May be omitted if <code>enabled == false</code>." }
405             ]
406         },
407         {
408             "name": "highlightRect",
409             "description": "Highlights given rectangle. Coordinates are absolute with respect to the main frame viewport.",
410             "parameters": [
411                 { "name": "x", "type": "integer", "description": "X coordinate" },
412                 { "name": "y", "type": "integer", "description": "Y coordinate" },
413                 { "name": "width", "type": "integer", "description": "Rectangle width" },
414                 { "name": "height", "type": "integer", "description": "Rectangle height" },
415                 { "name": "color", "$ref": "RGBAColor", "optional": true, "description": "The highlight fill color (default: transparent)." },
416                 { "name": "outlineColor", "$ref": "RGBAColor", "optional": true, "description": "The highlight outline color (default: transparent)." },
417                 { "name": "usePageCoordinates", "type": "boolean", "optional": true, "description": "Indicates whether the provided parameters are in page coordinates or in viewport coordinates (the default)." }
418             ]
419         },
420         {
421             "name": "highlightQuad",
422             "description": "Highlights given quad. Coordinates are absolute with respect to the main frame viewport.",
423             "parameters": [
424                 { "name": "quad", "$ref": "Quad", "description": "Quad to highlight" },
425                 { "name": "color", "$ref": "RGBAColor", "optional": true, "description": "The highlight fill color (default: transparent)." },
426                 { "name": "outlineColor", "$ref": "RGBAColor", "optional": true, "description": "The highlight outline color (default: transparent)." },
427                 { "name": "usePageCoordinates", "type": "boolean", "optional": true, "description": "Indicates whether the provided parameters are in page coordinates or in viewport coordinates (the default)." }
428             ]
429         },
430         {
431             "name": "highlightSelector",
432             "description": "Highlights all DOM nodes that match a given selector. A string containing a CSS selector must be specified.",
433             "parameters": [
434                 { "name": "highlightConfig", "$ref": "HighlightConfig", "description": "A descriptor for the highlight appearance." },
435                 { "name": "selectorString", "type": "string", "description": "A CSS selector for finding matching nodes to highlight." },
436                 { "name": "frameId", "type": "string", "optional": true, "description": "Identifier of the frame which will be searched using the selector.  If not provided, the main frame will be used." }
437             ]
438         },
439         {
440             "name": "highlightNode",
441             "description": "Highlights DOM node with given id or with the given JavaScript object wrapper. Either nodeId or objectId must be specified.",
442             "parameters": [
443                 { "name": "highlightConfig", "$ref": "HighlightConfig", "description": "A descriptor for the highlight appearance." },
444                 { "name": "nodeId", "$ref": "NodeId", "optional": true, "description": "Identifier of the node to highlight." },
445                 { "name": "objectId", "$ref": "Runtime.RemoteObjectId", "optional": true, "description": "JavaScript object id of the node to be highlighted." }
446             ]
447         },
448         {
449             "name": "highlightNodeList",
450             "description": "Highlights each DOM node in the given list.",
451             "parameters": [
452                 { "name": "nodeIds", "type": "array", "items": { "$ref": "NodeId" } },
453                 { "name": "highlightConfig", "$ref": "HighlightConfig" }
454             ]
455         },
456         {
457             "name": "hideHighlight",
458             "description": "Hides DOM node highlight."
459         },
460         {
461             "name": "highlightFrame",
462             "parameters": [
463                 { "name": "frameId", "$ref": "Network.FrameId", "description": "Identifier of the frame to highlight." },
464                 { "name": "contentColor", "$ref": "RGBAColor", "optional": true, "description": "The content box highlight fill color (default: transparent)." },
465                 { "name": "contentOutlineColor", "$ref": "RGBAColor", "optional": true, "description": "The content box highlight outline color (default: transparent)." }
466             ],
467             "description": "Highlights owner element of the frame with given id."
468         },
469         {
470             "name": "pushNodeByPathToFrontend",
471             "description": "Requests that the node is sent to the caller given its path.",
472             "parameters": [
473                 { "name": "path", "type": "string", "description": "Path to node in the proprietary format." }
474             ],
475             "returns": [
476                 { "name": "nodeId", "$ref": "NodeId", "description": "Id of the node for given path." }
477             ]
478         },
479         {
480             "name": "resolveNode",
481             "description": "Resolves JavaScript node object for given node id.",
482             "parameters": [
483                 { "name": "nodeId", "$ref": "NodeId", "description": "Id of the node to resolve." },
484                 { "name": "objectGroup", "type": "string", "optional": true, "description": "Symbolic group name that can be used to release multiple objects." }
485             ],
486             "returns": [
487                 { "name": "object", "$ref": "Runtime.RemoteObject", "description": "JavaScript object wrapper for given node." }
488             ]
489         },
490         {
491             "name": "getAttributes",
492             "description": "Returns attributes for the specified node.",
493             "parameters": [
494                 { "name": "nodeId", "$ref": "NodeId", "description": "Id of the node to retrieve attributes for." }
495             ],
496             "returns": [
497                 { "name": "attributes", "type": "array", "items": { "type": "string" }, "description": "An interleaved array of node attribute names and values." }
498             ]
499         },
500         {
501             "name": "moveTo",
502             "description": "Moves node into the new container, places it before the given anchor.",
503             "parameters": [
504                 { "name": "nodeId", "$ref": "NodeId", "description": "Id of the node to drop." },
505                 { "name": "targetNodeId", "$ref": "NodeId", "description": "Id of the element to drop into." },
506                 { "name": "insertBeforeNodeId", "$ref": "NodeId", "optional": true, "description": "Drop node before given one." }
507             ],
508             "returns": [
509                 { "name": "nodeId", "$ref": "NodeId", "description": "New id of the moved node." }
510             ]
511         },
512         {
513             "name": "undo",
514             "description": "Undoes the last performed action."
515         },
516         {
517             "name": "redo",
518             "description": "Re-does the last undone action."
519         },
520         {
521             "name": "markUndoableState",
522             "description": "Marks last undoable state."
523         },
524         {
525             "name": "focus",
526             "description": "Focuses the given element.",
527             "parameters": [
528                 { "name": "nodeId", "$ref": "NodeId", "description": "Id of the node to focus." }
529             ]
530         },
531         {
532             "name": "setInspectedNode",
533             "description": "Enables console to refer to the node with given id via $0 (see Command Line API for more details).",
534             "parameters": [
535                 { "name": "nodeId", "$ref": "NodeId", "description": "DOM node id to be accessible by means of $0 command line API." }
536             ]
537         }
538     ],
539     "events": [
540         {
541             "name": "documentUpdated",
542             "description": "Fired when <code>Document</code> has been totally updated. Node ids are no longer valid."
543         },
544         {
545             "name": "inspect",
546             "description": "Inspect a particular node.",
547             "parameters": [
548                 { "name": "nodeId", "$ref": "NodeId", "description": "Equivalent of Inspector.inspect but with a nodeId instead of a RemoteObject. Useful for augmented contexts." }
549             ]
550         },
551         {
552             "name": "setChildNodes",
553             "description": "Fired when backend wants to provide client with the missing DOM structure. This happens upon most of the calls requesting node ids.",
554             "parameters": [
555                 { "name": "parentId", "$ref": "NodeId", "description": "Parent node id to populate with children." },
556                 { "name": "nodes", "type": "array", "items": { "$ref": "Node"}, "description": "Child nodes array." }
557             ]
558         },
559         {
560             "name": "attributeModified",
561             "description": "Fired when <code>Element</code>'s attribute is modified.",
562             "parameters": [
563                 { "name": "nodeId", "$ref": "NodeId", "description": "Id of the node that has changed." },
564                 { "name": "name", "type": "string", "description": "Attribute name." },
565                 { "name": "value", "type": "string", "description": "Attribute value." }
566             ]
567         },
568         {
569             "name": "attributeRemoved",
570             "description": "Fired when <code>Element</code>'s attribute is removed.",
571             "parameters": [
572                 { "name": "nodeId", "$ref": "NodeId", "description": "Id of the node that has changed." },
573                 { "name": "name", "type": "string", "description": "Attribute name." }
574             ]
575         },
576         {
577             "name": "inlineStyleInvalidated",
578             "description": "Fired when <code>Element</code>'s inline style is modified via a CSS property modification.",
579             "parameters": [
580                 { "name": "nodeIds", "type": "array", "items": { "$ref": "NodeId" }, "description": "Ids of the nodes for which the inline styles have been invalidated." }
581             ]
582         },
583         {
584             "name": "characterDataModified",
585             "description": "Mirrors <code>DOMCharacterDataModified</code> event.",
586             "parameters": [
587                 { "name": "nodeId", "$ref": "NodeId", "description": "Id of the node that has changed." },
588                 { "name": "characterData", "type": "string", "description": "New text value." }
589             ]
590         },
591         {
592             "name": "childNodeCountUpdated",
593             "description": "Fired when <code>Container</code>'s child node count has changed.",
594             "parameters": [
595                 { "name": "nodeId", "$ref": "NodeId", "description": "Id of the node that has changed." },
596                 { "name": "childNodeCount", "type": "integer", "description": "New node count." }
597             ]
598         },
599         {
600             "name": "childNodeInserted",
601             "description": "Mirrors <code>DOMNodeInserted</code> event.",
602             "parameters": [
603                 { "name": "parentNodeId", "$ref": "NodeId", "description": "Id of the node that has changed." },
604                 { "name": "previousNodeId", "$ref": "NodeId", "description": "Id of the previous sibling." },
605                 { "name": "node", "$ref": "Node", "description": "Inserted node data." }
606             ]
607         },
608         {
609             "name": "childNodeRemoved",
610             "description": "Mirrors <code>DOMNodeRemoved</code> event.",
611             "parameters": [
612                 { "name": "parentNodeId", "$ref": "NodeId", "description": "Parent id." },
613                 { "name": "nodeId", "$ref": "NodeId", "description": "Id of the node that has been removed." }
614             ]
615         },
616         {
617             "name": "shadowRootPushed",
618             "description": "Called when shadow root is pushed into the element.",
619             "parameters": [
620                 { "name": "hostId", "$ref": "NodeId", "description": "Host element id." },
621                 { "name": "root", "$ref": "Node", "description": "Shadow root." }
622             ]
623         },
624         {
625             "name": "shadowRootPopped",
626             "description": "Called when shadow root is popped from the element.",
627             "parameters": [
628                 { "name": "hostId", "$ref": "NodeId", "description": "Host element id." },
629                 { "name": "rootId", "$ref": "NodeId", "description": "Shadow root id." }
630             ]
631         },
632         {
633             "name": "customElementStateChanged",
634             "description": "Called when the custom element state is changed.",
635             "parameters": [
636                 { "name": "nodeId", "$ref": "NodeId", "description": "Element id." },
637                 { "name": "customElementState", "$ref": "CustomElementState", "description": "Custom element state." }
638             ]
639         },
640         {
641             "name": "pseudoElementAdded",
642             "description": "Called when a pseudo element is added to an element.",
643             "parameters": [
644                 { "name": "parentId", "$ref": "NodeId", "description": "Pseudo element's parent element id." },
645                 { "name": "pseudoElement", "$ref": "Node", "description": "The added pseudo element." }
646             ]
647         },
648         {
649             "name": "pseudoElementRemoved",
650             "description": "Called when a pseudo element is removed from an element.",
651             "parameters": [
652                 { "name": "parentId", "$ref": "NodeId", "description": "Pseudo element's parent element id." },
653                 { "name": "pseudoElementId", "$ref": "NodeId", "description": "The removed pseudo element id." }
654             ]
655         },
656         {
657             "name": "didAddEventListener",
658             "description": "Called when an event listener is added to a node.",
659             "parameters": [
660                 { "name": "nodeId", "$ref": "NodeId" }
661             ]
662         },
663         {
664             "name": "willRemoveEventListener",
665             "description": "Called after a request has been made to remove an event listener from a node.",
666             "parameters": [
667                 { "name": "nodeId", "$ref": "NodeId" }
668             ]
669         },
670         {
671             "name": "didFireEvent",
672             "description": "Called when an event is fired on a node.",
673             "parameters": [
674                 { "name": "nodeId", "$ref": "NodeId" },
675                 { "name": "eventName", "type": "string" },
676                 { "name": "timestamp", "$ref": "Network.Timestamp", "description": "Time when the event was fired" },
677                 { "name": "data", "type": "object", "optional": true, "description": "Holds ancillary information about the event or its target." }
678             ]
679         },
680         {
681             "name": "videoLowPowerChanged",
682             "description": "Called when a video element enters/exits low power mode.",
683             "parameters": [
684                 { "name": "nodeId", "$ref": "NodeId" },
685                 { "name": "timestamp", "$ref": "Network.Timestamp", "description": "Time when the video element entered/exited low power mode" },
686                 { "name": "isLowPower", "type": "boolean" }
687             ]
688         }
689     ]
690 }