Skip to content
Snippets Groups Projects
browser_protocol.json 271 KiB
Newer Older
  • Learn to ignore specific revisions
  •             {
                    "name": "getDOMStorageItems",
                    "parameters": [
                        { "name": "storageId", "$ref": "StorageId" }
                    ],
                    "returns": [
                        { "name": "entries", "type": "array", "items": { "$ref": "Item" } }
                    ]
                },
                {
                    "name": "setDOMStorageItem",
                    "parameters": [
                        { "name": "storageId", "$ref": "StorageId" },
                        { "name": "key", "type": "string" },
                        { "name": "value", "type": "string" }
                    ]
                },
                {
                    "name": "removeDOMStorageItem",
                    "parameters": [
                        { "name": "storageId", "$ref": "StorageId" },
                        { "name": "key", "type": "string" }
                    ]
                }
            ],
            "events": [
                {
                    "name": "domStorageItemsCleared",
                    "parameters": [
                        { "name": "storageId",  "$ref": "StorageId" }
                    ]
                },
                {
                    "name": "domStorageItemRemoved",
                    "parameters": [
                        { "name": "storageId",  "$ref": "StorageId" },
                        { "name": "key", "type": "string" }
                    ]
                },
                {
                    "name": "domStorageItemAdded",
                    "parameters": [
                        { "name": "storageId",  "$ref": "StorageId" },
                        { "name": "key", "type": "string" },
                        { "name": "newValue", "type": "string" }
                    ]
                },
                {
                    "name": "domStorageItemUpdated",
                    "parameters": [
                        { "name": "storageId",  "$ref": "StorageId" },
                        { "name": "key", "type": "string" },
                        { "name": "oldValue", "type": "string" },
                        { "name": "newValue", "type": "string" }
                    ]
                }
            ]
        },
        {
            "domain": "ApplicationCache",
    
            "experimental": true,
    
            "types": [
                {
                    "id": "ApplicationCacheResource",
                    "type": "object",
                    "description": "Detailed application cache resource information.",
                    "properties": [
                        { "name": "url", "type": "string", "description": "Resource url." },
                        { "name": "size", "type": "integer", "description": "Resource size." },
                        { "name": "type", "type": "string", "description": "Resource type." }
                    ]
                },
                {
                    "id": "ApplicationCache",
                    "type": "object",
                    "description": "Detailed application cache information.",
                    "properties": [
                        { "name": "manifestURL", "type": "string", "description": "Manifest URL." },
                        { "name": "size", "type": "number", "description": "Application cache size." },
                        { "name": "creationTime", "type": "number", "description": "Application cache creation time." },
                        { "name": "updateTime", "type": "number", "description": "Application cache update time." },
                        { "name": "resources", "type": "array", "items": { "$ref": "ApplicationCacheResource" }, "description": "Application cache resources." }
                    ]
                },
                {
                    "id": "FrameWithManifest",
                    "type": "object",
                    "description": "Frame identifier - manifest URL pair.",
                    "properties": [
                        { "name": "frameId", "$ref": "Page.FrameId", "description": "Frame identifier." },
                        { "name": "manifestURL", "type": "string", "description": "Manifest URL." },
                        { "name": "status", "type": "integer", "description": "Application cache status." }
                    ]
                }
            ],
            "commands": [
                {
                    "name": "getFramesWithManifests",
                    "returns": [
                        { "name": "frameIds", "type": "array", "items": { "$ref": "FrameWithManifest" }, "description": "Array of frame identifiers with manifest urls for each frame containing a document associated with some application cache." }
                    ],
                    "description": "Returns array of frame identifiers with manifest urls for each frame containing a document associated with some application cache."
                },
                {
                    "name": "enable",
                    "description": "Enables application cache domain notifications."
                },
                {
                    "name": "getManifestForFrame",
                    "parameters": [
                        { "name": "frameId", "$ref": "Page.FrameId", "description": "Identifier of the frame containing document whose manifest is retrieved." }
                    ],
                    "returns": [
                        { "name": "manifestURL", "type": "string", "description": "Manifest URL for document in the given frame." }
                    ],
                    "description": "Returns manifest URL for document in the given frame."
                },
                {
                    "name": "getApplicationCacheForFrame",
                    "parameters": [
                        { "name": "frameId", "$ref": "Page.FrameId", "description": "Identifier of the frame containing document whose application cache is retrieved." }
                    ],
                    "returns": [
                        { "name": "applicationCache", "$ref": "ApplicationCache", "description": "Relevant application cache data for the document in given frame." }
                    ],
                    "description": "Returns relevant application cache data for the document in given frame."
                }
            ],
            "events": [
                {
                    "name": "applicationCacheStatusUpdated",
                    "parameters": [
                        { "name": "frameId", "$ref": "Page.FrameId", "description": "Identifier of the frame containing document whose application cache updated status." },
                        { "name": "manifestURL", "type": "string", "description": "Manifest URL." },
                        { "name": "status", "type": "integer", "description": "Updated application cache status." }
                    ]
                },
                {
                    "name": "networkStateUpdated",
                    "parameters": [
                        { "name": "isNowOnline", "type": "boolean" }
                    ]
                }
            ]
        },
        {
    
            "domain": "DOM",
            "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>",
            "dependencies": ["Runtime"],
    
                    "id": "NodeId",
                    "type": "integer",
                    "description": "Unique DOM node identifier."
    
                },
                {
                    "id": "BackendNodeId",
                    "type": "integer",
                    "description": "Unique DOM node identifier used to reference a node that may not have been pushed to the front-end.",
    
                    "experimental": true
    
                },
                {
                    "id": "BackendNode",
                    "type": "object",
                    "properties": [
                        { "name": "nodeType", "type": "integer", "description": "<code>Node</code>'s nodeType." },
                        { "name": "nodeName", "type": "string", "description": "<code>Node</code>'s nodeName." },
                        { "name": "backendNodeId", "$ref": "BackendNodeId" }
                    ],
    
                    "experimental": true,
    
                    "description": "Backend node with a friendly name."
                },
                {
                    "id": "PseudoType",
                    "type": "string",
                    "enum": [
                        "first-line",
                        "first-letter",
                        "before",
                        "after",
                        "backdrop",
                        "selection",
                        "first-line-inherited",
                        "scrollbar",
                        "scrollbar-thumb",
                        "scrollbar-button",
                        "scrollbar-track",
                        "scrollbar-track-piece",
                        "scrollbar-corner",
                        "resizer",
                        "input-list-button"
                    ],
                    "description": "Pseudo element type."
                },
                {
                    "id": "ShadowRootType",
                    "type": "string",
    
                    "enum": ["user-agent", "open", "closed"],
    
                    "description": "Shadow root type."
                },
                {
                    "id": "Node",
                    "type": "object",
                    "properties": [
                        { "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." },
    
                        { "name": "parentId", "$ref": "NodeId", "optional": true, "description": "The id of the parent node if any.", "experimental": true },
                        { "name": "backendNodeId", "$ref": "BackendNodeId", "description": "The BackendNodeId for this node.", "experimental": true },
    
                        { "name": "nodeType", "type": "integer", "description": "<code>Node</code>'s nodeType." },
                        { "name": "nodeName", "type": "string", "description": "<code>Node</code>'s nodeName." },
                        { "name": "localName", "type": "string", "description": "<code>Node</code>'s localName." },
                        { "name": "nodeValue", "type": "string", "description": "<code>Node</code>'s nodeValue." },
                        { "name": "childNodeCount", "type": "integer", "optional": true, "description": "Child count for <code>Container</code> nodes." },
                        { "name": "children", "type": "array", "optional": true, "items": { "$ref": "Node" }, "description": "Child nodes of this node when requested with children." },
                        { "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>." },
                        { "name": "documentURL", "type": "string", "optional": true, "description": "Document URL that <code>Document</code> or <code>FrameOwner</code> node points to." },
    
                        { "name": "baseURL", "type": "string", "optional": true, "description": "Base URL that <code>Document</code> or <code>FrameOwner</code> node uses for URL completion.", "experimental": true },
    
                        { "name": "publicId", "type": "string", "optional": true, "description": "<code>DocumentType</code>'s publicId." },
                        { "name": "systemId", "type": "string", "optional": true, "description": "<code>DocumentType</code>'s systemId." },
                        { "name": "internalSubset", "type": "string", "optional": true, "description": "<code>DocumentType</code>'s internalSubset." },
                        { "name": "xmlVersion", "type": "string", "optional": true, "description": "<code>Document</code>'s XML version in case of XML documents." },
                        { "name": "name", "type": "string", "optional": true, "description": "<code>Attr</code>'s name." },
                        { "name": "value", "type": "string", "optional": true, "description": "<code>Attr</code>'s value." },
                        { "name": "pseudoType", "$ref": "PseudoType", "optional": true, "description": "Pseudo element type for this node." },
                        { "name": "shadowRootType", "$ref": "ShadowRootType", "optional": true, "description": "Shadow root type." },
    
                        { "name": "frameId", "$ref": "Page.FrameId", "optional": true, "description": "Frame ID for frame owner elements.", "experimental": true },
    
                        { "name": "contentDocument", "$ref": "Node", "optional": true, "description": "Content document for frame owner elements." },
    
                        { "name": "shadowRoots", "type": "array", "optional": true, "items": { "$ref": "Node" }, "description": "Shadow root list for given element host.", "experimental": true },
                        { "name": "templateContent", "$ref": "Node", "optional": true, "description": "Content document fragment for template elements.", "experimental": true },
                        { "name": "pseudoElements", "type": "array", "items": { "$ref": "Node" }, "optional": true, "description": "Pseudo elements associated with this node.", "experimental": true },
    
                        { "name": "importedDocument", "$ref": "Node", "optional": true, "description": "Import document for the HTMLImport links." },
    
                        { "name": "distributedNodes", "type": "array", "items": { "$ref": "BackendNode" }, "optional": true, "description": "Distributed nodes for given insertion point.", "experimental": true },
                        { "name": "isSVG", "type": "boolean", "optional": true, "description": "Whether the node is SVG.", "experimental": true }
    
                    ],
                    "description": "DOM interaction is implemented in terms of mirror objects that represent the actual DOM nodes. DOMNode is a base node mirror type."
                },
                {
                    "id": "RGBA",
                    "type": "object",
                    "properties": [
                        { "name": "r", "type": "integer", "description": "The red component, in the [0-255] range." },
                        { "name": "g", "type": "integer", "description": "The green component, in the [0-255] range." },
                        { "name": "b", "type": "integer", "description": "The blue component, in the [0-255] range." },
                        { "name": "a", "type": "number", "optional": true, "description": "The alpha component, in the [0-1] range (default: 1)." }
                    ],
                    "description": "A structure holding an RGBA color."
                },
                {
                    "id": "Quad",
                    "type": "array",
                    "items": { "type": "number" },
                    "minItems": 8,
                    "maxItems": 8,
                    "description": "An array of quad vertices, x immediately followed by y for each point, points clock-wise.",
    
                    "experimental": true
    
                    "experimental": true,
    
                    "properties": [
                        { "name": "content", "$ref": "Quad", "description": "Content box" },
                        { "name": "padding", "$ref": "Quad", "description": "Padding box" },
                        { "name": "border", "$ref": "Quad", "description": "Border box" },
                        { "name": "margin", "$ref": "Quad", "description": "Margin box" },
                        { "name": "width", "type": "integer", "description": "Node width" },
                        { "name": "height", "type": "integer", "description": "Node height" },
                        { "name": "shapeOutside", "$ref": "ShapeOutsideInfo", "optional": true, "description": "Shape outside coordinates" }
                    ],
                    "description": "Box model."
                },
                {
                    "id": "ShapeOutsideInfo",
                    "type": "object",
    
                    "experimental": true,
    
                    "properties": [
                        { "name": "bounds", "$ref": "Quad", "description": "Shape bounds" },
                        { "name": "shape", "type": "array", "items": { "type": "any"}, "description": "Shape coordinate details" },
                        { "name": "marginShape", "type": "array", "items": { "type": "any"}, "description": "Margin shape bounds" }
                    ],
                    "description": "CSS Shape Outside details."
                },
                {
                    "id": "Rect",
                    "type": "object",
    
                    "experimental": true,
    
                    "properties": [
                        { "name": "x", "type": "number", "description": "X coordinate" },
                        { "name": "y", "type": "number", "description": "Y coordinate" },
                        { "name": "width", "type": "number", "description": "Rectangle width" },
                        { "name": "height", "type": "number", "description": "Rectangle height" }
                    ],
                    "description": "Rectangle."
                }
            ],
            "commands": [
                {
                    "name": "enable",
                    "description": "Enables DOM agent for the given page."
                },
                {
                    "name": "disable",
                    "description": "Disables DOM agent for the given page."
                },
                {
                    "name": "getDocument",
    
                    "parameters": [
                        { "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.", "experimental": true },
                        { "name": "pierce", "type": "boolean", "optional": true, "description": "Whether or not iframes and shadow roots should be traversed when returning the subtree (default is false).", "experimental": true }
                    ],
    
                    "returns": [
                        { "name": "root", "$ref": "Node", "description": "Resulting node." }
                    ],
    
                    "description": "Returns the root DOM node (and optionally the subtree) to the caller."
                },
                {
                    "name": "getFlattenedDocument",
                    "parameters": [
                        { "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.", "experimental": true },
                        { "name": "pierce", "type": "boolean", "optional": true, "description": "Whether or not iframes and shadow roots should be traversed when returning the subtree (default is false).", "experimental": true }
                    ],
                    "returns": [
                        { "name": "nodes", "type": "array", "items": { "$ref": "Node" }, "description": "Resulting node." }
                    ],
                    "description": "Returns the root DOM node (and optionally the subtree) to the caller."
                },
                {
                    "name": "collectClassNamesFromSubtree",
                    "parameters": [
                        { "name": "nodeId", "$ref": "NodeId", "description": "Id of the node to collect class names." }
                    ],
                    "returns": [
                        {"name": "classNames", "type": "array", "items": { "type": "string" }, "description": "Class name list." }
                    ],
                    "description": "Collects class names for the node with given id and all of it's child nodes.",
                    "experimental": true
    
                },
                {
                    "name": "requestChildNodes",
                    "parameters": [
                        { "name": "nodeId", "$ref": "NodeId", "description": "Id of the node to get children for." },
    
                        { "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.", "experimental": true },
                        { "name": "pierce", "type": "boolean", "optional": true, "description": "Whether or not iframes and shadow roots should be traversed when returning the sub-tree (default is false).", "experimental": true }
    
                    ],
                    "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."
                },
                {
                    "name": "querySelector",
                    "parameters": [
                        { "name": "nodeId", "$ref": "NodeId", "description": "Id of the node to query upon." },
                        { "name": "selector", "type": "string", "description": "Selector string." }
                    ],
                    "returns": [
                        { "name": "nodeId", "$ref": "NodeId", "description": "Query selector result." }
                    ],
                    "description": "Executes <code>querySelector</code> on a given node."
                },
                {
                    "name": "querySelectorAll",
                    "parameters": [
                        { "name": "nodeId", "$ref": "NodeId", "description": "Id of the node to query upon." },
                        { "name": "selector", "type": "string", "description": "Selector string." }
                    ],
                    "returns": [
                        { "name": "nodeIds", "type": "array", "items": { "$ref": "NodeId" }, "description": "Query selector result." }
                    ],
                    "description": "Executes <code>querySelectorAll</code> on a given node."
                },
                {
                    "name": "setNodeName",
                    "parameters": [
                        { "name": "nodeId", "$ref": "NodeId", "description": "Id of the node to set name for." },
                        { "name": "name", "type": "string", "description": "New node's name." }
                    ],
                    "returns": [
                        { "name": "nodeId", "$ref": "NodeId", "description": "New node's id." }
                    ],
                    "description": "Sets node name for a node with given id."
                },
                {
                    "name": "setNodeValue",
                    "parameters": [
                        { "name": "nodeId", "$ref": "NodeId", "description": "Id of the node to set value for." },
                        { "name": "value", "type": "string", "description": "New node's value." }
                    ],
                    "description": "Sets node value for a node with given id."
                },
                {
                    "name": "removeNode",
                    "parameters": [
                        { "name": "nodeId", "$ref": "NodeId", "description": "Id of the node to remove." }
                    ],
                    "description": "Removes node with given id."
                },
                {
                    "name": "setAttributeValue",
                    "parameters": [
                        { "name": "nodeId", "$ref": "NodeId", "description": "Id of the element to set attribute for." },
                        { "name": "name", "type": "string", "description": "Attribute name." },
                        { "name": "value", "type": "string", "description": "Attribute value." }
                    ],
                    "description": "Sets attribute for an element with given id."
                },
                {
                    "name": "setAttributesAsText",
                    "parameters": [
                        { "name": "nodeId", "$ref": "NodeId", "description": "Id of the element to set attributes for." },
                        { "name": "text", "type": "string", "description": "Text with a number of attributes. Will parse this text using HTML parser." },
                        { "name": "name", "type": "string", "optional": true, "description": "Attribute name to replace with new attributes derived from text in case text parsed successfully." }
                    ],
                    "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."
                },
                {
                    "name": "removeAttribute",
                    "parameters": [
                        { "name": "nodeId", "$ref": "NodeId", "description": "Id of the element to remove attribute from." },
                        { "name": "name", "type": "string", "description": "Name of the attribute to remove." }
                    ],
                    "description": "Removes attribute with given name from an element with given id."
                },
                {
                    "name": "getOuterHTML",
                    "parameters": [
                        { "name": "nodeId", "$ref": "NodeId", "description": "Id of the node to get markup for." }
                    ],
                    "returns": [
                        { "name": "outerHTML", "type": "string", "description": "Outer HTML markup." }
                    ],
                    "description": "Returns node's HTML markup."
                },
                {
                    "name": "setOuterHTML",
                    "parameters": [
                        { "name": "nodeId", "$ref": "NodeId", "description": "Id of the node to set markup for." },
                        { "name": "outerHTML", "type": "string", "description": "Outer HTML markup to set." }
                    ],
                    "description": "Sets node HTML markup, returns new node id."
                },
                {
                    "name": "performSearch",
                    "parameters": [
                        { "name": "query", "type": "string", "description": "Plain text or query selector or XPath search query." },
    
                        { "name": "includeUserAgentShadowDOM", "type": "boolean", "optional": true, "description": "True to search in user agent shadow DOM.", "experimental": true }
    
                    ],
                    "returns": [
                        { "name": "searchId", "type": "string", "description": "Unique search session identifier." },
                        { "name": "resultCount", "type": "integer", "description": "Number of search results." }
                    ],
                    "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.",
    
                    "experimental": true
    
                },
                {
                    "name": "getSearchResults",
                    "parameters": [
                        { "name": "searchId", "type": "string", "description": "Unique search session identifier." },
                        { "name": "fromIndex", "type": "integer", "description": "Start index of the search result to be returned." },
                        { "name": "toIndex", "type": "integer", "description": "End index of the search result to be returned." }
                    ],
                    "returns": [
                        { "name": "nodeIds", "type": "array", "items": { "$ref": "NodeId" }, "description": "Ids of the search result nodes." }
                    ],
                    "description": "Returns search results from given <code>fromIndex</code> to given <code>toIndex</code> from the sarch with the given identifier.",
    
                    "experimental": true
    
                },
                {
                    "name": "discardSearchResults",
                    "parameters": [
                        { "name": "searchId", "type": "string", "description": "Unique search session identifier." }
                    ],
                    "description": "Discards search results from the session with the given id. <code>getSearchResults</code> should no longer be called for that search.",
    
                    "experimental": true
    
                },
                {
                    "name": "requestNode",
                    "parameters": [
                        { "name": "objectId", "$ref": "Runtime.RemoteObjectId", "description": "JavaScript object id to convert into node." }
                    ],
                    "returns": [
                        { "name": "nodeId", "$ref": "NodeId", "description": "Node id for given object." }
                    ],
                    "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."
                },
                {
                    "name": "highlightRect",
    
    svatal's avatar
    svatal committed
                    "description": "Highlights given rectangle.",
                    "redirect": "Overlay"
    
    svatal's avatar
    svatal committed
                    "description": "Highlights DOM node.",
                    "redirect": "Overlay"
    
    svatal's avatar
    svatal committed
                    "description": "Hides any highlight.",
                    "redirect": "Overlay"
    
                },
                {
                    "name": "pushNodeByPathToFrontend",
                    "parameters": [
                        { "name": "path", "type": "string", "description": "Path to node in the proprietary format." }
                    ],
                    "returns": [
                        { "name": "nodeId", "$ref": "NodeId", "description": "Id of the node for given path." }
                    ],
                    "description": "Requests that the node is sent to the caller given its path. // FIXME, use XPath",
    
                    "experimental": true
    
                },
                {
                    "name": "pushNodesByBackendIdsToFrontend",
                    "parameters": [
                        { "name": "backendNodeIds", "type": "array", "items": {"$ref": "BackendNodeId"}, "description": "The array of backend node ids." }
                    ],
                    "returns": [
                        { "name": "nodeIds", "type": "array", "items": {"$ref": "NodeId"}, "description": "The array of ids of pushed nodes that correspond to the backend ids specified in backendNodeIds." }
                    ],
                    "description": "Requests that a batch of nodes is sent to the caller given their backend node ids.",
    
                    "experimental": true
    
                },
                {
                    "name": "setInspectedNode",
                    "parameters": [
                        { "name": "nodeId", "$ref": "NodeId", "description": "DOM node id to be accessible by means of $x command line API." }
                    ],
                    "description": "Enables console to refer to the node with given id via $x (see Command Line API for more details $x functions).",
    
                    "experimental": true
    
                },
                {
                    "name": "resolveNode",
                    "parameters": [
                        { "name": "nodeId", "$ref": "NodeId", "description": "Id of the node to resolve." },
                        { "name": "objectGroup", "type": "string", "optional": true, "description": "Symbolic group name that can be used to release multiple objects." }
                    ],
                    "returns": [
                        { "name": "object", "$ref": "Runtime.RemoteObject", "description": "JavaScript object wrapper for given node." }
                    ],
                    "description": "Resolves JavaScript node object for given node id."
                },
                {
                    "name": "getAttributes",
                    "parameters": [
                        { "name": "nodeId", "$ref": "NodeId", "description": "Id of the node to retrieve attibutes for." }
                    ],
                    "returns": [
                        { "name": "attributes", "type": "array", "items": { "type": "string" }, "description": "An interleaved array of node attribute names and values." }
                    ],
                    "description": "Returns attributes for the specified node."
                },
                {
                    "name": "copyTo",
                    "parameters": [
                        { "name": "nodeId", "$ref": "NodeId", "description": "Id of the node to copy." },
                        { "name": "targetNodeId", "$ref": "NodeId", "description": "Id of the element to drop the copy into." },
                        { "name": "insertBeforeNodeId", "$ref": "NodeId", "optional": true, "description": "Drop the copy before this node (if absent, the copy becomes the last child of <code>targetNodeId</code>)." }
                    ],
                    "returns": [
                        { "name": "nodeId", "$ref": "NodeId", "description": "Id of the node clone." }
                    ],
                    "description": "Creates a deep copy of the specified node and places it into the target container before the given anchor.",
    
                    "experimental": true
    
                },
                {
                    "name": "moveTo",
                    "parameters": [
                        { "name": "nodeId", "$ref": "NodeId", "description": "Id of the node to move." },
                        { "name": "targetNodeId", "$ref": "NodeId", "description": "Id of the element to drop the moved node into." },
                        { "name": "insertBeforeNodeId", "$ref": "NodeId", "optional": true, "description": "Drop node before this one (if absent, the moved node becomes the last child of <code>targetNodeId</code>)." }
                    ],
                    "returns": [
                        { "name": "nodeId", "$ref": "NodeId", "description": "New id of the moved node." }
                    ],
                    "description": "Moves node into the new container, places it before the given anchor."
                },
                {
                    "name": "undo",
                    "description": "Undoes the last performed action.",
    
                    "experimental": true
    
                },
                {
                    "name": "redo",
                    "description": "Re-does the last undone action.",
    
                    "experimental": true
    
                },
                {
                    "name": "markUndoableState",
                    "description": "Marks last undoable state.",
    
                    "experimental": true
    
                },
                {
                    "name": "focus",
                    "parameters": [
                        { "name": "nodeId", "$ref": "NodeId", "description": "Id of the node to focus." }
                    ],
                    "description": "Focuses the given element.",
    
                    "experimental": true
    
                },
                {
                    "name": "setFileInputFiles",
                    "parameters": [
                        { "name": "nodeId", "$ref": "NodeId", "description": "Id of the file input node to set files for." },
                        { "name": "files", "type": "array", "items": { "type": "string" }, "description": "Array of file paths to set." }
                    ],
                    "description": "Sets files for the given file input element.",
    
                    "experimental": true
    
                },
                {
                    "name": "getBoxModel",
                    "parameters": [
                        { "name": "nodeId", "$ref": "NodeId", "description": "Id of the node to get box model for." }
                    ],
                    "returns": [
                        { "name": "model", "$ref": "BoxModel", "description": "Box model for the node." }
                    ],
                    "description": "Returns boxes for the currently selected nodes.",
    
                    "experimental": true
    
                },
                {
                    "name": "getNodeForLocation",
                    "parameters": [
                        { "name": "x", "type": "integer", "description": "X coordinate." },
    
    svatal's avatar
    svatal committed
                        { "name": "y", "type": "integer", "description": "Y coordinate." },
                        { "name": "includeUserAgentShadowDOM", "type": "boolean", "optional": true, "description": "False to skip to the nearest non-UA shadow root ancestor (default: false)." }
    
                    ],
                    "returns": [
                        { "name": "nodeId", "$ref": "NodeId", "description": "Id of the node at given coordinates." }
                    ],
                    "description": "Returns node id at given location.",
    
                    "experimental": true
    
                },
                {
                    "name": "getRelayoutBoundary",
                    "parameters": [
                        { "name": "nodeId", "$ref": "NodeId", "description": "Id of the node." }
                    ],
                    "returns": [
                        { "name": "nodeId", "$ref": "NodeId", "description": "Relayout boundary node id for the given node." }
                    ],
                    "description": "Returns the id of the nearest ancestor that is a relayout boundary.",
    
                    "experimental": true
    
                }
            ],
            "events": [
                {
                    "name": "documentUpdated",
                    "description": "Fired when <code>Document</code> has been totally updated. Node ids are no longer valid."
                },
                {
                    "name": "setChildNodes",
                    "parameters": [
                        { "name": "parentId", "$ref": "NodeId", "description": "Parent node id to populate with children." },
                        { "name": "nodes", "type": "array", "items": { "$ref": "Node" }, "description": "Child nodes array." }
                    ],
                    "description": "Fired when backend wants to provide client with the missing DOM structure. This happens upon most of the calls requesting node ids."
                },
                {
                    "name": "attributeModified",
                    "parameters": [
                        { "name": "nodeId", "$ref": "NodeId", "description": "Id of the node that has changed." },
                        { "name": "name", "type": "string", "description": "Attribute name." },
                        { "name": "value", "type": "string", "description": "Attribute value." }
                    ],
                    "description": "Fired when <code>Element</code>'s attribute is modified."
                },
                {
                    "name": "attributeRemoved",
                    "parameters": [
                        { "name": "nodeId", "$ref": "NodeId", "description": "Id of the node that has changed." },
                        { "name": "name", "type": "string", "description": "A ttribute name." }
                    ],
                    "description": "Fired when <code>Element</code>'s attribute is removed."
                },
                {
                    "name": "inlineStyleInvalidated",
                    "parameters": [
                        { "name": "nodeIds", "type": "array", "items": { "$ref": "NodeId" }, "description": "Ids of the nodes for which the inline styles have been invalidated." }
                    ],
                    "description": "Fired when <code>Element</code>'s inline style is modified via a CSS property modification.",
    
                    "experimental": true
    
                },
                {
                    "name": "characterDataModified",
                    "parameters": [
                        { "name": "nodeId", "$ref": "NodeId", "description": "Id of the node that has changed." },
                        { "name": "characterData", "type": "string", "description": "New text value." }
                    ],
                    "description": "Mirrors <code>DOMCharacterDataModified</code> event."
                },
                {
                    "name": "childNodeCountUpdated",
                    "parameters": [
                        { "name": "nodeId", "$ref": "NodeId", "description": "Id of the node that has changed." },
                        { "name": "childNodeCount", "type": "integer", "description": "New node count." }
                    ],
                    "description": "Fired when <code>Container</code>'s child node count has changed."
                },
                {
                    "name": "childNodeInserted",
                    "parameters": [
                        { "name": "parentNodeId", "$ref": "NodeId", "description": "Id of the node that has changed." },
                        { "name": "previousNodeId", "$ref": "NodeId", "description": "If of the previous siblint." },
                        { "name": "node", "$ref": "Node", "description": "Inserted node data." }
                    ],
                    "description": "Mirrors <code>DOMNodeInserted</code> event."
                },
                {
                    "name": "childNodeRemoved",
                    "parameters": [
                        { "name": "parentNodeId", "$ref": "NodeId", "description": "Parent id." },
                        { "name": "nodeId", "$ref": "NodeId", "description": "Id of the node that has been removed." }
                    ],
                    "description": "Mirrors <code>DOMNodeRemoved</code> event."
                },
                {
                    "name": "shadowRootPushed",
                    "parameters": [
                        { "name": "hostId", "$ref": "NodeId", "description": "Host element id." },
                        { "name": "root", "$ref": "Node", "description": "Shadow root." }
                    ],
                    "description": "Called when shadow root is pushed into the element.",
    
                    "experimental": true
    
                },
                {
                    "name": "shadowRootPopped",
                    "parameters": [
                        { "name": "hostId", "$ref": "NodeId", "description": "Host element id." },
                        { "name": "rootId", "$ref": "NodeId", "description": "Shadow root id." }
                    ],
                    "description": "Called when shadow root is popped from the element.",
    
                    "experimental": true
    
                },
                {
                    "name": "pseudoElementAdded",
                    "parameters": [
                        { "name": "parentId", "$ref": "NodeId", "description": "Pseudo element's parent element id." },
                        { "name": "pseudoElement", "$ref": "Node", "description": "The added pseudo element." }
                    ],
                    "description": "Called when a pseudo element is added to an element.",
    
                    "experimental": true
    
                },
                {
                    "name": "pseudoElementRemoved",
                    "parameters": [
                        { "name": "parentId", "$ref": "NodeId", "description": "Pseudo element's parent element id." },
                        { "name": "pseudoElementId", "$ref": "NodeId", "description": "The removed pseudo element id." }
                    ],
                    "description": "Called when a pseudo element is removed from an element.",
    
                    "experimental": true
    
                },
                {
                    "name": "distributedNodesUpdated",
                    "parameters": [
                        { "name": "insertionPointId", "$ref": "NodeId", "description": "Insertion point where distrubuted nodes were updated." },
                        { "name": "distributedNodes", "type": "array", "items": { "$ref": "BackendNode" }, "description": "Distributed nodes for given insertion point." }
                    ],
                    "description": "Called when distrubution is changed.",
    
                    "experimental": true
    
            "experimental": true,
    
            "description": "This domain exposes CSS read/write operations. All CSS objects (stylesheets, rules, and styles) have an associated <code>id</code> used in subsequent operations on the related object. Each object type has a specific <code>id</code> structure, and those are not interchangeable between objects of different kinds. CSS objects can be loaded using the <code>get*ForNode()</code> calls (which accept a DOM node id). A client can also discover all the existing stylesheets with the <code>getAllStyleSheets()</code> method (or keeping track of the <code>styleSheetAdded</code>/<code>styleSheetRemoved</code> events) and subsequently load the required stylesheet contents using the <code>getStyleSheet[Text]()</code> methods.",
    
            "dependencies": ["DOM"],
    
            "types": [
                {
                    "id": "StyleSheetId",
                    "type": "string"
                },
                {
                    "id": "StyleSheetOrigin",
                    "type": "string",
                    "enum": ["injected", "user-agent", "inspector", "regular"],
                    "description": "Stylesheet type: \"injected\" for stylesheets injected via extension, \"user-agent\" for user-agent stylesheets, \"inspector\" for stylesheets created by the inspector (i.e. those holding the \"via inspector\" rules), \"regular\" for regular stylesheets."
                },
                {
    
                    "id": "PseudoElementMatches",
    
                    "type": "object",
                    "properties": [
    
                        { "name": "pseudoType", "$ref": "DOM.PseudoType", "description": "Pseudo element type."},
    
                        { "name": "matches", "type": "array", "items": { "$ref": "RuleMatch" }, "description": "Matches of CSS rules applicable to the pseudo style."}
                    ],
                    "description": "CSS rule collection for a single pseudo style."
                },
                {
                    "id": "InheritedStyleEntry",
                    "type": "object",
                    "properties": [
                        { "name": "inlineStyle", "$ref": "CSSStyle", "optional": true, "description": "The ancestor node's inline style, if any, in the style inheritance chain." },
                        { "name": "matchedCSSRules", "type": "array", "items": { "$ref": "RuleMatch" }, "description": "Matches of CSS rules matching the ancestor node in the style inheritance chain." }
                    ],
                    "description": "Inherited CSS rule collection from ancestor node."
                },
                {
                    "id": "RuleMatch",
                    "type": "object",
                    "properties": [
                        { "name": "rule", "$ref": "CSSRule", "description": "CSS rule in the match." },
                        { "name": "matchingSelectors", "type": "array", "items": { "type": "integer" }, "description": "Matching selector indices in the rule's selectorList selectors (0-based)." }
                    ],
                    "description": "Match data for a CSS rule."
                },
                {
    
                    "id": "Value",
    
                    "type": "object",
                    "properties": [
    
                        { "name": "text", "type": "string", "description": "Value text." },
                        { "name": "range", "$ref": "SourceRange", "optional": true, "description": "Value range in the underlying resource (if available)." }
    
                    ],
                    "description": "Data for a simple selector (these are delimited by commas in a selector list)."
                },
                {
                    "id": "SelectorList",
                    "type": "object",
                    "properties": [
    
                        { "name": "selectors", "type": "array", "items": { "$ref": "Value" }, "description": "Selectors in the list." },
    
                        { "name": "text", "type": "string", "description": "Rule selector text." }
                    ],
                    "description": "Selector list data."
                },
                {
                    "id": "CSSStyleSheetHeader",
                    "type": "object",
                    "properties": [
                        { "name": "styleSheetId", "$ref": "StyleSheetId", "description": "The stylesheet identifier."},
                        { "name": "frameId", "$ref": "Page.FrameId", "description": "Owner frame identifier."},
                        { "name": "sourceURL", "type": "string", "description": "Stylesheet resource URL."},
                        { "name": "sourceMapURL", "type": "string", "optional": true, "description": "URL of source map associated with the stylesheet (if any)." },
                        { "name": "origin", "$ref": "StyleSheetOrigin", "description": "Stylesheet origin."},
                        { "name": "title", "type": "string", "description": "Stylesheet title."},
                        { "name": "ownerNode", "$ref": "DOM.BackendNodeId", "optional": true, "description": "The backend id for the owner node of the stylesheet." },
                        { "name": "disabled", "type": "boolean", "description": "Denotes whether the stylesheet is disabled."},
                        { "name": "hasSourceURL", "type": "boolean", "optional": true, "description": "Whether the sourceURL field value comes from the sourceURL comment." },
                        { "name": "isInline", "type": "boolean", "description": "Whether this stylesheet is created for STYLE tag by parser. This flag is not set for document.written STYLE tags." },
                        { "name": "startLine", "type": "number", "description": "Line offset of the stylesheet within the resource (zero based)." },
    
    svatal's avatar
    svatal committed
                        { "name": "startColumn", "type": "number", "description": "Column offset of the stylesheet within the resource (zero based)." },
                        { "name": "length", "type": "number", "description": "Size of the content (in characters).", "experimental": true }
    
                    ],
                    "description": "CSS stylesheet metainformation."
                },
                {
                    "id": "CSSRule",
                    "type": "object",
                    "properties": [
                        { "name": "styleSheetId", "$ref": "StyleSheetId", "optional": true, "description": "The css style sheet identifier (absent for user agent stylesheet and user-specified stylesheet rules) this rule came from." },
                        { "name": "selectorList", "$ref": "SelectorList", "description": "Rule selector data." },
                        { "name": "origin", "$ref": "StyleSheetOrigin", "description": "Parent stylesheet's origin."},
                        { "name": "style", "$ref": "CSSStyle", "description": "Associated style declaration." },
                        { "name": "media", "type": "array", "items": { "$ref": "CSSMedia" }, "optional": true, "description": "Media list array (for rules involving media queries). The array enumerates media queries starting with the innermost one, going outwards." }
                    ],
                    "description": "CSS rule representation."
                },
    
                {
                    "id": "RuleUsage",
                    "type": "object",
                    "properties": [
                        { "name": "styleSheetId", "$ref": "StyleSheetId", "description": "The css style sheet identifier (absent for user agent stylesheet and user-specified stylesheet rules) this rule came from." },
                        { "name": "startOffset", "type": "number", "description": "Offset of the start of the rule (including selector) from the beginning of the stylesheet." },
                        { "name": "endOffset", "type": "number", "description": "Offset of the end of the rule body from the beginning of the stylesheet." },
                        { "name": "used", "type": "boolean", "description": "Indicates whether the rule was actually used by some element in the page." }
                    ],
    
    svatal's avatar
    svatal committed
                    "description": "CSS coverage information.",
    
                    "experimental": true
                },
    
                {
                    "id": "SourceRange",
                    "type": "object",
                    "properties": [
                        { "name": "startLine", "type": "integer", "description": "Start line of range." },
                        { "name": "startColumn", "type": "integer", "description": "Start column of range (inclusive)." },
                        { "name": "endLine", "type": "integer", "description": "End line of range" },
                        { "name": "endColumn", "type": "integer", "description": "End column of range (exclusive)." }
                    ],
                    "description": "Text range within a resource. All numbers are zero-based."
                },
                {
                    "id": "ShorthandEntry",
                    "type": "object",
                    "properties": [
                        { "name": "name", "type": "string", "description": "Shorthand name." },
    
                        { "name": "value", "type": "string", "description": "Shorthand value." },
                        { "name": "important", "type": "boolean", "optional": true, "description": "Whether the property has \"!important\" annotation (implies <code>false</code> if absent)." }
    
                    ]
                },
                {
                    "id": "CSSComputedStyleProperty",
                    "type": "object",
                    "properties": [
                        { "name": "name", "type": "string", "description": "Computed style property name." },
                        { "name": "value", "type": "string", "description": "Computed style property value." }
                    ]
                },
                {
                    "id": "CSSStyle",
                    "type": "object",
                    "properties": [
                        { "name": "styleSheetId", "$ref": "StyleSheetId", "optional": true, "description": "The css style sheet identifier (absent for user agent stylesheet and user-specified stylesheet rules) this rule came from." },
                        { "name": "cssProperties", "type": "array", "items": { "$ref": "CSSProperty" }, "description": "CSS properties in the style." },
                        { "name": "shorthandEntries", "type": "array", "items": { "$ref": "ShorthandEntry" }, "description": "Computed values for all shorthands found in the style." },
                        { "name": "cssText", "type": "string", "optional": true, "description": "Style declaration text (if available)." },
                        { "name": "range", "$ref": "SourceRange", "optional": true, "description": "Style declaration range in the enclosing stylesheet (if available)." }
                    ],
                    "description": "CSS style representation."
                },
                {
                    "id": "CSSProperty",
                    "type": "object",
                    "properties": [
                        { "name": "name", "type": "string", "description": "The property name." },
                        { "name": "value", "type": "string", "description": "The property value." },
                        { "name": "important", "type": "boolean", "optional": true, "description": "Whether the property has \"!important\" annotation (implies <code>false</code> if absent)." },
                        { "name": "implicit", "type": "boolean", "optional": true, "description": "Whether the property is implicit (implies <code>false</code> if absent)." },
                        { "name": "text", "type": "string", "optional": true, "description": "The full property text as specified in the style." },
                        { "name": "parsedOk", "type": "boolean", "optional": true, "description": "Whether the property is understood by the browser (implies <code>true</code> if absent)." },
                        { "name": "disabled", "type": "boolean", "optional": true, "description": "Whether the property is disabled by the user (present for source-based properties only)." },
                        { "name": "range", "$ref": "SourceRange", "optional": true, "description": "The entire property range in the enclosing style declaration (if available)." }
                    ],
                    "description": "CSS property declaration data."
                },
                {
                    "id": "CSSMedia",
                    "type": "object",
                    "properties": [
                        { "name": "text", "type": "string", "description": "Media query text." },
                        { "name": "source", "type": "string", "enum": ["mediaRule", "importRule", "linkedSheet", "inlineSheet"], "description": "Source of the media query: \"mediaRule\" if specified by a @media rule, \"importRule\" if specified by an @import rule, \"linkedSheet\" if specified by a \"media\" attribute in a linked stylesheet's LINK tag, \"inlineSheet\" if specified by a \"media\" attribute in an inline stylesheet's STYLE tag." },
                        { "name": "sourceURL", "type": "string", "optional": true, "description": "URL of the document containing the media query description." },
                        { "name": "range", "$ref": "SourceRange", "optional": true, "description": "The associated rule (@media or @import) header range in the enclosing stylesheet (if available)." },
    
                        { "name": "styleSheetId", "$ref": "StyleSheetId", "optional": true, "description": "Identifier of the stylesheet containing this object (if exists)." },
                        { "name": "mediaList", "type": "array", "items": { "$ref": "MediaQuery" }, "optional": true, "experimental": true, "description": "Array of media queries." }
    
                    ],
                    "description": "CSS media rule descriptor."
                },
                {
                    "id": "MediaQuery",
                    "type": "object",
                    "properties": [
                        { "name": "expressions", "type": "array", "items": { "$ref": "MediaQueryExpression" }, "description": "Array of media query expressions." },
                        { "name": "active", "type": "boolean", "description": "Whether the media query condition is satisfied." }
                    ],
                    "description": "Media query descriptor.",
    
                    "experimental": true
    
                },
                {
                    "id": "MediaQueryExpression",
                    "type": "object",
                    "properties": [
                        { "name": "value", "type": "number", "description": "Media query expression value."},
                        { "name": "unit", "type": "string", "description": "Media query expression units."},
                        { "name": "feature", "type": "string", "description": "Media query expression feature."},
                        { "name": "valueRange", "$ref": "SourceRange", "optional": true, "description": "The associated range of the value text in the enclosing stylesheet (if available)." },
                        { "name": "computedLength", "type": "number", "optional": true, "description": "Computed length of media query expression (if applicable)."}
                    ],
                    "description": "Media query expression descriptor.",
    
                    "experimental": true
    
                },
                {
                    "id": "PlatformFontUsage",
                    "type": "object",
                    "properties": [
                        { "name": "familyName", "type": "string", "description": "Font's family name reported by platform."},
    
                        { "name": "isCustomFont", "type": "boolean", "description": "Indicates if the font was downloaded or resolved locally."},
    
                        { "name": "glyphCount", "type": "number", "description": "Amount of glyphs that were rendered with this font."}
                    ],
                    "description": "Information about amount of glyphs that were rendered with given font.",
    
                    "experimental": true
                },
                {
                    "id": "CSSKeyframesRule",
                    "type": "object",
                    "properties": [
                        { "name": "animationName", "$ref": "Value", "description": "Animation name." },
                        { "name": "keyframes", "type": "array", "items": { "$ref": "CSSKeyframeRule" }, "description": "List of keyframes." }
                    ],
                    "description": "CSS keyframes rule representation."
                },
                {
                    "id": "CSSKeyframeRule",
                    "type": "object",
                    "properties": [
                        { "name": "styleSheetId", "$ref": "StyleSheetId", "optional": true, "description": "The css style sheet identifier (absent for user agent stylesheet and user-specified stylesheet rules) this rule came from." },
                        { "name": "origin", "$ref": "StyleSheetOrigin", "description": "Parent stylesheet's origin."},
                        { "name": "keyText", "$ref": "Value", "description": "Associated key text." },
                        { "name": "style", "$ref": "CSSStyle", "description": "Associated style declaration." }
                    ],
                    "description": "CSS keyframe rule representation."
                },
                {
                    "id": "StyleDeclarationEdit",
                    "type": "object",
                    "properties": [
                        { "name": "styleSheetId", "$ref": "StyleSheetId", "description": "The css style sheet identifier." },
                        { "name": "range", "$ref": "SourceRange", "description": "The range of the style text in the enclosing stylesheet." },
                        { "name": "text", "type": "string", "description": "New style text."}
                    ],
                    "description": "A descriptor of operation to mutate style declaration text."
                },
                {
                    "id": "InlineTextBox",
                    "type": "object",
                    "properties": [