chromedp/cdp/dom/dom.go

2635 lines
61 KiB
Go
Raw Normal View History

2017-01-24 15:09:23 +00:00
// Package dom provides the Chrome Debugging Protocol
// commands, types, and events for the Chrome DOM domain.
//
// This domain exposes DOM read/write operations. Each DOM Node is
// represented with its mirror object that has an id. This id 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 iframe owner elements will return corresponding document
// elements as their child nodes.</p>.
//
// Generated by the chromedp-gen command.
package dom
// AUTOGENERATED. DO NOT EDIT.
import (
"context"
. "github.com/knq/chromedp/cdp"
"github.com/knq/chromedp/cdp/runtime"
"github.com/mailru/easyjson"
)
var (
_ BackendNode
_ BackendNodeID
_ ComputedProperty
_ ErrorType
_ Frame
_ FrameID
_ LoaderID
_ Message
_ MessageError
_ MethodType
_ Node
_ NodeID
_ NodeType
_ PseudoType
_ RGBA
_ ShadowRootType
_ Timestamp
)
// EnableParams enables DOM agent for the given page.
type EnableParams struct{}
// Enable enables DOM agent for the given page.
func Enable() *EnableParams {
return &EnableParams{}
}
// Do executes DOM.enable.
func (p *EnableParams) Do(ctxt context.Context, h FrameHandler) (err error) {
if ctxt == nil {
ctxt = context.Background()
}
// execute
ch := h.Execute(ctxt, CommandDOMEnable, Empty)
// read response
select {
case res := <-ch:
if res == nil {
return ErrChannelClosed
}
switch v := res.(type) {
case easyjson.RawMessage:
return nil
case error:
return v
}
case <-ctxt.Done():
return ErrContextDone
}
return ErrUnknownResult
}
// DisableParams disables DOM agent for the given page.
type DisableParams struct{}
// Disable disables DOM agent for the given page.
func Disable() *DisableParams {
return &DisableParams{}
}
// Do executes DOM.disable.
func (p *DisableParams) Do(ctxt context.Context, h FrameHandler) (err error) {
if ctxt == nil {
ctxt = context.Background()
}
// execute
ch := h.Execute(ctxt, CommandDOMDisable, Empty)
// read response
select {
case res := <-ch:
if res == nil {
return ErrChannelClosed
}
switch v := res.(type) {
case easyjson.RawMessage:
return nil
case error:
return v
}
case <-ctxt.Done():
return ErrContextDone
}
return ErrUnknownResult
}
// GetDocumentParams returns the root DOM node (and optionally the subtree)
// to the caller.
type GetDocumentParams struct {
Depth int64 `json:"depth,omitempty"` // 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.
Pierce bool `json:"pierce,omitempty"` // Whether or not iframes and shadow roots should be traversed when returning the subtree (default is false).
}
// GetDocument returns the root DOM node (and optionally the subtree) to the
// caller.
//
// parameters:
func GetDocument() *GetDocumentParams {
return &GetDocumentParams{}
}
// WithDepth 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.
func (p GetDocumentParams) WithDepth(depth int64) *GetDocumentParams {
p.Depth = depth
return &p
}
// WithPierce whether or not iframes and shadow roots should be traversed
// when returning the subtree (default is false).
func (p GetDocumentParams) WithPierce(pierce bool) *GetDocumentParams {
p.Pierce = pierce
return &p
}
// GetDocumentReturns return values.
type GetDocumentReturns struct {
Root *Node `json:"root,omitempty"` // Resulting node.
}
// Do executes DOM.getDocument.
//
// returns:
// root - Resulting node.
func (p *GetDocumentParams) Do(ctxt context.Context, h FrameHandler) (root *Node, err error) {
if ctxt == nil {
ctxt = context.Background()
}
// marshal
buf, err := easyjson.Marshal(p)
if err != nil {
return nil, err
}
// execute
ch := h.Execute(ctxt, CommandDOMGetDocument, easyjson.RawMessage(buf))
// read response
select {
case res := <-ch:
if res == nil {
return nil, ErrChannelClosed
}
switch v := res.(type) {
case easyjson.RawMessage:
// unmarshal
var r GetDocumentReturns
err = easyjson.Unmarshal(v, &r)
if err != nil {
return nil, ErrInvalidResult
}
return r.Root, nil
case error:
return nil, v
}
case <-ctxt.Done():
return nil, ErrContextDone
}
return nil, ErrUnknownResult
}
// CollectClassNamesFromSubtreeParams collects class names for the node with
// given id and all of it's child nodes.
type CollectClassNamesFromSubtreeParams struct {
NodeID NodeID `json:"nodeId"` // Id of the node to collect class names.
}
// CollectClassNamesFromSubtree collects class names for the node with given
// id and all of it's child nodes.
//
// parameters:
// nodeId - Id of the node to collect class names.
func CollectClassNamesFromSubtree(nodeId NodeID) *CollectClassNamesFromSubtreeParams {
return &CollectClassNamesFromSubtreeParams{
NodeID: nodeId,
}
}
// CollectClassNamesFromSubtreeReturns return values.
type CollectClassNamesFromSubtreeReturns struct {
ClassNames []string `json:"classNames,omitempty"` // Class name list.
}
// Do executes DOM.collectClassNamesFromSubtree.
//
// returns:
// classNames - Class name list.
func (p *CollectClassNamesFromSubtreeParams) Do(ctxt context.Context, h FrameHandler) (classNames []string, err error) {
if ctxt == nil {
ctxt = context.Background()
}
// marshal
buf, err := easyjson.Marshal(p)
if err != nil {
return nil, err
}
// execute
ch := h.Execute(ctxt, CommandDOMCollectClassNamesFromSubtree, easyjson.RawMessage(buf))
// read response
select {
case res := <-ch:
if res == nil {
return nil, ErrChannelClosed
}
switch v := res.(type) {
case easyjson.RawMessage:
// unmarshal
var r CollectClassNamesFromSubtreeReturns
err = easyjson.Unmarshal(v, &r)
if err != nil {
return nil, ErrInvalidResult
}
return r.ClassNames, nil
case error:
return nil, v
}
case <-ctxt.Done():
return nil, ErrContextDone
}
return nil, ErrUnknownResult
}
// RequestChildNodesParams requests that children of the node with given id
// are returned to the caller in form of setChildNodes events where not only
// immediate children are retrieved, but all children down to the specified
// depth.
type RequestChildNodesParams struct {
NodeID NodeID `json:"nodeId"` // Id of the node to get children for.
Depth int64 `json:"depth,omitempty"` // 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.
Pierce bool `json:"pierce,omitempty"` // Whether or not iframes and shadow roots should be traversed when returning the sub-tree (default is false).
}
// RequestChildNodes requests that children of the node with given id are
// returned to the caller in form of setChildNodes events where not only
// immediate children are retrieved, but all children down to the specified
// depth.
//
// parameters:
// nodeId - Id of the node to get children for.
func RequestChildNodes(nodeId NodeID) *RequestChildNodesParams {
return &RequestChildNodesParams{
NodeID: nodeId,
}
}
// WithDepth 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.
func (p RequestChildNodesParams) WithDepth(depth int64) *RequestChildNodesParams {
p.Depth = depth
return &p
}
// WithPierce whether or not iframes and shadow roots should be traversed
// when returning the sub-tree (default is false).
func (p RequestChildNodesParams) WithPierce(pierce bool) *RequestChildNodesParams {
p.Pierce = pierce
return &p
}
// Do executes DOM.requestChildNodes.
func (p *RequestChildNodesParams) Do(ctxt context.Context, h FrameHandler) (err error) {
if ctxt == nil {
ctxt = context.Background()
}
// marshal
buf, err := easyjson.Marshal(p)
if err != nil {
return err
}
// execute
ch := h.Execute(ctxt, CommandDOMRequestChildNodes, easyjson.RawMessage(buf))
// read response
select {
case res := <-ch:
if res == nil {
return ErrChannelClosed
}
switch v := res.(type) {
case easyjson.RawMessage:
return nil
case error:
return v
}
case <-ctxt.Done():
return ErrContextDone
}
return ErrUnknownResult
}
// QuerySelectorParams executes querySelector on a given node.
type QuerySelectorParams struct {
NodeID NodeID `json:"nodeId"` // Id of the node to query upon.
Selector string `json:"selector"` // Selector string.
}
// QuerySelector executes querySelector on a given node.
//
// parameters:
// nodeId - Id of the node to query upon.
// selector - Selector string.
func QuerySelector(nodeId NodeID, selector string) *QuerySelectorParams {
return &QuerySelectorParams{
NodeID: nodeId,
Selector: selector,
}
}
// QuerySelectorReturns return values.
type QuerySelectorReturns struct {
NodeID NodeID `json:"nodeId,omitempty"` // Query selector result.
}
// Do executes DOM.querySelector.
//
// returns:
// nodeId - Query selector result.
func (p *QuerySelectorParams) Do(ctxt context.Context, h FrameHandler) (nodeId NodeID, err error) {
if ctxt == nil {
ctxt = context.Background()
}
// marshal
buf, err := easyjson.Marshal(p)
if err != nil {
return 0, err
}
// execute
ch := h.Execute(ctxt, CommandDOMQuerySelector, easyjson.RawMessage(buf))
// read response
select {
case res := <-ch:
if res == nil {
return 0, ErrChannelClosed
}
switch v := res.(type) {
case easyjson.RawMessage:
// unmarshal
var r QuerySelectorReturns
err = easyjson.Unmarshal(v, &r)
if err != nil {
return 0, ErrInvalidResult
}
return r.NodeID, nil
case error:
return 0, v
}
case <-ctxt.Done():
return 0, ErrContextDone
}
return 0, ErrUnknownResult
}
// QuerySelectorAllParams executes querySelectorAll on a given node.
type QuerySelectorAllParams struct {
NodeID NodeID `json:"nodeId"` // Id of the node to query upon.
Selector string `json:"selector"` // Selector string.
}
// QuerySelectorAll executes querySelectorAll on a given node.
//
// parameters:
// nodeId - Id of the node to query upon.
// selector - Selector string.
func QuerySelectorAll(nodeId NodeID, selector string) *QuerySelectorAllParams {
return &QuerySelectorAllParams{
NodeID: nodeId,
Selector: selector,
}
}
// QuerySelectorAllReturns return values.
type QuerySelectorAllReturns struct {
NodeIds []NodeID `json:"nodeIds,omitempty"` // Query selector result.
}
// Do executes DOM.querySelectorAll.
//
// returns:
// nodeIds - Query selector result.
func (p *QuerySelectorAllParams) Do(ctxt context.Context, h FrameHandler) (nodeIds []NodeID, err error) {
if ctxt == nil {
ctxt = context.Background()
}
// marshal
buf, err := easyjson.Marshal(p)
if err != nil {
return nil, err
}
// execute
ch := h.Execute(ctxt, CommandDOMQuerySelectorAll, easyjson.RawMessage(buf))
// read response
select {
case res := <-ch:
if res == nil {
return nil, ErrChannelClosed
}
switch v := res.(type) {
case easyjson.RawMessage:
// unmarshal
var r QuerySelectorAllReturns
err = easyjson.Unmarshal(v, &r)
if err != nil {
return nil, ErrInvalidResult
}
return r.NodeIds, nil
case error:
return nil, v
}
case <-ctxt.Done():
return nil, ErrContextDone
}
return nil, ErrUnknownResult
}
// SetNodeNameParams sets node name for a node with given id.
type SetNodeNameParams struct {
NodeID NodeID `json:"nodeId"` // Id of the node to set name for.
Name string `json:"name"` // New node's name.
}
// SetNodeName sets node name for a node with given id.
//
// parameters:
// nodeId - Id of the node to set name for.
// name - New node's name.
func SetNodeName(nodeId NodeID, name string) *SetNodeNameParams {
return &SetNodeNameParams{
NodeID: nodeId,
Name: name,
}
}
// SetNodeNameReturns return values.
type SetNodeNameReturns struct {
NodeID NodeID `json:"nodeId,omitempty"` // New node's id.
}
// Do executes DOM.setNodeName.
//
// returns:
// nodeId - New node's id.
func (p *SetNodeNameParams) Do(ctxt context.Context, h FrameHandler) (nodeId NodeID, err error) {
if ctxt == nil {
ctxt = context.Background()
}
// marshal
buf, err := easyjson.Marshal(p)
if err != nil {
return 0, err
}
// execute
ch := h.Execute(ctxt, CommandDOMSetNodeName, easyjson.RawMessage(buf))
// read response
select {
case res := <-ch:
if res == nil {
return 0, ErrChannelClosed
}
switch v := res.(type) {
case easyjson.RawMessage:
// unmarshal
var r SetNodeNameReturns
err = easyjson.Unmarshal(v, &r)
if err != nil {
return 0, ErrInvalidResult
}
return r.NodeID, nil
case error:
return 0, v
}
case <-ctxt.Done():
return 0, ErrContextDone
}
return 0, ErrUnknownResult
}
// SetNodeValueParams sets node value for a node with given id.
type SetNodeValueParams struct {
NodeID NodeID `json:"nodeId"` // Id of the node to set value for.
Value string `json:"value"` // New node's value.
}
// SetNodeValue sets node value for a node with given id.
//
// parameters:
// nodeId - Id of the node to set value for.
// value - New node's value.
func SetNodeValue(nodeId NodeID, value string) *SetNodeValueParams {
return &SetNodeValueParams{
NodeID: nodeId,
Value: value,
}
}
// Do executes DOM.setNodeValue.
func (p *SetNodeValueParams) Do(ctxt context.Context, h FrameHandler) (err error) {
if ctxt == nil {
ctxt = context.Background()
}
// marshal
buf, err := easyjson.Marshal(p)
if err != nil {
return err
}
// execute
ch := h.Execute(ctxt, CommandDOMSetNodeValue, easyjson.RawMessage(buf))
// read response
select {
case res := <-ch:
if res == nil {
return ErrChannelClosed
}
switch v := res.(type) {
case easyjson.RawMessage:
return nil
case error:
return v
}
case <-ctxt.Done():
return ErrContextDone
}
return ErrUnknownResult
}
// RemoveNodeParams removes node with given id.
type RemoveNodeParams struct {
NodeID NodeID `json:"nodeId"` // Id of the node to remove.
}
// RemoveNode removes node with given id.
//
// parameters:
// nodeId - Id of the node to remove.
func RemoveNode(nodeId NodeID) *RemoveNodeParams {
return &RemoveNodeParams{
NodeID: nodeId,
}
}
// Do executes DOM.removeNode.
func (p *RemoveNodeParams) Do(ctxt context.Context, h FrameHandler) (err error) {
if ctxt == nil {
ctxt = context.Background()
}
// marshal
buf, err := easyjson.Marshal(p)
if err != nil {
return err
}
// execute
ch := h.Execute(ctxt, CommandDOMRemoveNode, easyjson.RawMessage(buf))
// read response
select {
case res := <-ch:
if res == nil {
return ErrChannelClosed
}
switch v := res.(type) {
case easyjson.RawMessage:
return nil
case error:
return v
}
case <-ctxt.Done():
return ErrContextDone
}
return ErrUnknownResult
}
// SetAttributeValueParams sets attribute for an element with given id.
type SetAttributeValueParams struct {
NodeID NodeID `json:"nodeId"` // Id of the element to set attribute for.
Name string `json:"name"` // Attribute name.
Value string `json:"value"` // Attribute value.
}
// SetAttributeValue sets attribute for an element with given id.
//
// parameters:
// nodeId - Id of the element to set attribute for.
// name - Attribute name.
// value - Attribute value.
func SetAttributeValue(nodeId NodeID, name string, value string) *SetAttributeValueParams {
return &SetAttributeValueParams{
NodeID: nodeId,
Name: name,
Value: value,
}
}
// Do executes DOM.setAttributeValue.
func (p *SetAttributeValueParams) Do(ctxt context.Context, h FrameHandler) (err error) {
if ctxt == nil {
ctxt = context.Background()
}
// marshal
buf, err := easyjson.Marshal(p)
if err != nil {
return err
}
// execute
ch := h.Execute(ctxt, CommandDOMSetAttributeValue, easyjson.RawMessage(buf))
// read response
select {
case res := <-ch:
if res == nil {
return ErrChannelClosed
}
switch v := res.(type) {
case easyjson.RawMessage:
return nil
case error:
return v
}
case <-ctxt.Done():
return ErrContextDone
}
return ErrUnknownResult
}
// SetAttributesAsTextParams 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.
type SetAttributesAsTextParams struct {
NodeID NodeID `json:"nodeId"` // Id of the element to set attributes for.
Text string `json:"text"` // Text with a number of attributes. Will parse this text using HTML parser.
Name string `json:"name,omitempty"` // Attribute name to replace with new attributes derived from text in case text parsed successfully.
}
// SetAttributesAsText 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.
//
// parameters:
// nodeId - Id of the element to set attributes for.
// text - Text with a number of attributes. Will parse this text using HTML parser.
func SetAttributesAsText(nodeId NodeID, text string) *SetAttributesAsTextParams {
return &SetAttributesAsTextParams{
NodeID: nodeId,
Text: text,
}
}
// WithName attribute name to replace with new attributes derived from text
// in case text parsed successfully.
func (p SetAttributesAsTextParams) WithName(name string) *SetAttributesAsTextParams {
p.Name = name
return &p
}
// Do executes DOM.setAttributesAsText.
func (p *SetAttributesAsTextParams) Do(ctxt context.Context, h FrameHandler) (err error) {
if ctxt == nil {
ctxt = context.Background()
}
// marshal
buf, err := easyjson.Marshal(p)
if err != nil {
return err
}
// execute
ch := h.Execute(ctxt, CommandDOMSetAttributesAsText, easyjson.RawMessage(buf))
// read response
select {
case res := <-ch:
if res == nil {
return ErrChannelClosed
}
switch v := res.(type) {
case easyjson.RawMessage:
return nil
case error:
return v
}
case <-ctxt.Done():
return ErrContextDone
}
return ErrUnknownResult
}
// RemoveAttributeParams removes attribute with given name from an element
// with given id.
type RemoveAttributeParams struct {
NodeID NodeID `json:"nodeId"` // Id of the element to remove attribute from.
Name string `json:"name"` // Name of the attribute to remove.
}
// RemoveAttribute removes attribute with given name from an element with
// given id.
//
// parameters:
// nodeId - Id of the element to remove attribute from.
// name - Name of the attribute to remove.
func RemoveAttribute(nodeId NodeID, name string) *RemoveAttributeParams {
return &RemoveAttributeParams{
NodeID: nodeId,
Name: name,
}
}
// Do executes DOM.removeAttribute.
func (p *RemoveAttributeParams) Do(ctxt context.Context, h FrameHandler) (err error) {
if ctxt == nil {
ctxt = context.Background()
}
// marshal
buf, err := easyjson.Marshal(p)
if err != nil {
return err
}
// execute
ch := h.Execute(ctxt, CommandDOMRemoveAttribute, easyjson.RawMessage(buf))
// read response
select {
case res := <-ch:
if res == nil {
return ErrChannelClosed
}
switch v := res.(type) {
case easyjson.RawMessage:
return nil
case error:
return v
}
case <-ctxt.Done():
return ErrContextDone
}
return ErrUnknownResult
}
// GetOuterHTMLParams returns node's HTML markup.
type GetOuterHTMLParams struct {
NodeID NodeID `json:"nodeId"` // Id of the node to get markup for.
}
// GetOuterHTML returns node's HTML markup.
//
// parameters:
// nodeId - Id of the node to get markup for.
func GetOuterHTML(nodeId NodeID) *GetOuterHTMLParams {
return &GetOuterHTMLParams{
NodeID: nodeId,
}
}
// GetOuterHTMLReturns return values.
type GetOuterHTMLReturns struct {
OuterHTML string `json:"outerHTML,omitempty"` // Outer HTML markup.
}
// Do executes DOM.getOuterHTML.
//
// returns:
// outerHTML - Outer HTML markup.
func (p *GetOuterHTMLParams) Do(ctxt context.Context, h FrameHandler) (outerHTML string, err error) {
if ctxt == nil {
ctxt = context.Background()
}
// marshal
buf, err := easyjson.Marshal(p)
if err != nil {
return "", err
}
// execute
ch := h.Execute(ctxt, CommandDOMGetOuterHTML, easyjson.RawMessage(buf))
// read response
select {
case res := <-ch:
if res == nil {
return "", ErrChannelClosed
}
switch v := res.(type) {
case easyjson.RawMessage:
// unmarshal
var r GetOuterHTMLReturns
err = easyjson.Unmarshal(v, &r)
if err != nil {
return "", ErrInvalidResult
}
return r.OuterHTML, nil
case error:
return "", v
}
case <-ctxt.Done():
return "", ErrContextDone
}
return "", ErrUnknownResult
}
// SetOuterHTMLParams sets node HTML markup, returns new node id.
type SetOuterHTMLParams struct {
NodeID NodeID `json:"nodeId"` // Id of the node to set markup for.
OuterHTML string `json:"outerHTML"` // Outer HTML markup to set.
}
// SetOuterHTML sets node HTML markup, returns new node id.
//
// parameters:
// nodeId - Id of the node to set markup for.
// outerHTML - Outer HTML markup to set.
func SetOuterHTML(nodeId NodeID, outerHTML string) *SetOuterHTMLParams {
return &SetOuterHTMLParams{
NodeID: nodeId,
OuterHTML: outerHTML,
}
}
// Do executes DOM.setOuterHTML.
func (p *SetOuterHTMLParams) Do(ctxt context.Context, h FrameHandler) (err error) {
if ctxt == nil {
ctxt = context.Background()
}
// marshal
buf, err := easyjson.Marshal(p)
if err != nil {
return err
}
// execute
ch := h.Execute(ctxt, CommandDOMSetOuterHTML, easyjson.RawMessage(buf))
// read response
select {
case res := <-ch:
if res == nil {
return ErrChannelClosed
}
switch v := res.(type) {
case easyjson.RawMessage:
return nil
case error:
return v
}
case <-ctxt.Done():
return ErrContextDone
}
return ErrUnknownResult
}
// PerformSearchParams searches for a given string in the DOM tree. Use
// getSearchResults to access search results or cancelSearch to end this search
// session.
type PerformSearchParams struct {
Query string `json:"query"` // Plain text or query selector or XPath search query.
IncludeUserAgentShadowDOM bool `json:"includeUserAgentShadowDOM,omitempty"` // True to search in user agent shadow DOM.
}
// PerformSearch searches for a given string in the DOM tree. Use
// getSearchResults to access search results or cancelSearch to end this search
// session.
//
// parameters:
// query - Plain text or query selector or XPath search query.
func PerformSearch(query string) *PerformSearchParams {
return &PerformSearchParams{
Query: query,
}
}
// WithIncludeUserAgentShadowDOM true to search in user agent shadow DOM.
func (p PerformSearchParams) WithIncludeUserAgentShadowDOM(includeUserAgentShadowDOM bool) *PerformSearchParams {
p.IncludeUserAgentShadowDOM = includeUserAgentShadowDOM
return &p
}
// PerformSearchReturns return values.
type PerformSearchReturns struct {
SearchID string `json:"searchId,omitempty"` // Unique search session identifier.
ResultCount int64 `json:"resultCount,omitempty"` // Number of search results.
}
// Do executes DOM.performSearch.
//
// returns:
// searchId - Unique search session identifier.
// resultCount - Number of search results.
func (p *PerformSearchParams) Do(ctxt context.Context, h FrameHandler) (searchId string, resultCount int64, err error) {
if ctxt == nil {
ctxt = context.Background()
}
// marshal
buf, err := easyjson.Marshal(p)
if err != nil {
return "", 0, err
}
// execute
ch := h.Execute(ctxt, CommandDOMPerformSearch, easyjson.RawMessage(buf))
// read response
select {
case res := <-ch:
if res == nil {
return "", 0, ErrChannelClosed
}
switch v := res.(type) {
case easyjson.RawMessage:
// unmarshal
var r PerformSearchReturns
err = easyjson.Unmarshal(v, &r)
if err != nil {
return "", 0, ErrInvalidResult
}
return r.SearchID, r.ResultCount, nil
case error:
return "", 0, v
}
case <-ctxt.Done():
return "", 0, ErrContextDone
}
return "", 0, ErrUnknownResult
}
// GetSearchResultsParams returns search results from given fromIndex to
// given toIndex from the sarch with the given identifier.
type GetSearchResultsParams struct {
SearchID string `json:"searchId"` // Unique search session identifier.
FromIndex int64 `json:"fromIndex"` // Start index of the search result to be returned.
ToIndex int64 `json:"toIndex"` // End index of the search result to be returned.
}
// GetSearchResults returns search results from given fromIndex to given
// toIndex from the sarch with the given identifier.
//
// parameters:
// searchId - Unique search session identifier.
// fromIndex - Start index of the search result to be returned.
// toIndex - End index of the search result to be returned.
func GetSearchResults(searchId string, fromIndex int64, toIndex int64) *GetSearchResultsParams {
return &GetSearchResultsParams{
SearchID: searchId,
FromIndex: fromIndex,
ToIndex: toIndex,
}
}
// GetSearchResultsReturns return values.
type GetSearchResultsReturns struct {
NodeIds []NodeID `json:"nodeIds,omitempty"` // Ids of the search result nodes.
}
// Do executes DOM.getSearchResults.
//
// returns:
// nodeIds - Ids of the search result nodes.
func (p *GetSearchResultsParams) Do(ctxt context.Context, h FrameHandler) (nodeIds []NodeID, err error) {
if ctxt == nil {
ctxt = context.Background()
}
// marshal
buf, err := easyjson.Marshal(p)
if err != nil {
return nil, err
}
// execute
ch := h.Execute(ctxt, CommandDOMGetSearchResults, easyjson.RawMessage(buf))
// read response
select {
case res := <-ch:
if res == nil {
return nil, ErrChannelClosed
}
switch v := res.(type) {
case easyjson.RawMessage:
// unmarshal
var r GetSearchResultsReturns
err = easyjson.Unmarshal(v, &r)
if err != nil {
return nil, ErrInvalidResult
}
return r.NodeIds, nil
case error:
return nil, v
}
case <-ctxt.Done():
return nil, ErrContextDone
}
return nil, ErrUnknownResult
}
// DiscardSearchResultsParams discards search results from the session with
// the given id. getSearchResults should no longer be called for that search.
type DiscardSearchResultsParams struct {
SearchID string `json:"searchId"` // Unique search session identifier.
}
// DiscardSearchResults discards search results from the session with the
// given id. getSearchResults should no longer be called for that search.
//
// parameters:
// searchId - Unique search session identifier.
func DiscardSearchResults(searchId string) *DiscardSearchResultsParams {
return &DiscardSearchResultsParams{
SearchID: searchId,
}
}
// Do executes DOM.discardSearchResults.
func (p *DiscardSearchResultsParams) Do(ctxt context.Context, h FrameHandler) (err error) {
if ctxt == nil {
ctxt = context.Background()
}
// marshal
buf, err := easyjson.Marshal(p)
if err != nil {
return err
}
// execute
ch := h.Execute(ctxt, CommandDOMDiscardSearchResults, easyjson.RawMessage(buf))
// read response
select {
case res := <-ch:
if res == nil {
return ErrChannelClosed
}
switch v := res.(type) {
case easyjson.RawMessage:
return nil
case error:
return v
}
case <-ctxt.Done():
return ErrContextDone
}
return ErrUnknownResult
}
// RequestNodeParams 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 setChildNodes
// notifications.
type RequestNodeParams struct {
ObjectID runtime.RemoteObjectID `json:"objectId"` // JavaScript object id to convert into node.
}
// RequestNode 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 setChildNodes
// notifications.
//
// parameters:
// objectId - JavaScript object id to convert into node.
func RequestNode(objectId runtime.RemoteObjectID) *RequestNodeParams {
return &RequestNodeParams{
ObjectID: objectId,
}
}
// RequestNodeReturns return values.
type RequestNodeReturns struct {
NodeID NodeID `json:"nodeId,omitempty"` // Node id for given object.
}
// Do executes DOM.requestNode.
//
// returns:
// nodeId - Node id for given object.
func (p *RequestNodeParams) Do(ctxt context.Context, h FrameHandler) (nodeId NodeID, err error) {
if ctxt == nil {
ctxt = context.Background()
}
// marshal
buf, err := easyjson.Marshal(p)
if err != nil {
return 0, err
}
// execute
ch := h.Execute(ctxt, CommandDOMRequestNode, easyjson.RawMessage(buf))
// read response
select {
case res := <-ch:
if res == nil {
return 0, ErrChannelClosed
}
switch v := res.(type) {
case easyjson.RawMessage:
// unmarshal
var r RequestNodeReturns
err = easyjson.Unmarshal(v, &r)
if err != nil {
return 0, ErrInvalidResult
}
return r.NodeID, nil
case error:
return 0, v
}
case <-ctxt.Done():
return 0, ErrContextDone
}
return 0, ErrUnknownResult
}
// SetInspectModeParams enters the 'inspect' mode. In this mode, elements
// that user is hovering over are highlighted. Backend then generates
// 'inspectNodeRequested' event upon element selection.
type SetInspectModeParams struct {
Mode InspectMode `json:"mode"` // Set an inspection mode.
HighlightConfig *HighlightConfig `json:"highlightConfig,omitempty"` // A descriptor for the highlight appearance of hovered-over nodes. May be omitted if enabled == false.
}
// SetInspectMode enters the 'inspect' mode. In this mode, elements that user
// is hovering over are highlighted. Backend then generates
// 'inspectNodeRequested' event upon element selection.
//
// parameters:
// mode - Set an inspection mode.
func SetInspectMode(mode InspectMode) *SetInspectModeParams {
return &SetInspectModeParams{
Mode: mode,
}
}
// WithHighlightConfig a descriptor for the highlight appearance of
// hovered-over nodes. May be omitted if enabled == false.
func (p SetInspectModeParams) WithHighlightConfig(highlightConfig *HighlightConfig) *SetInspectModeParams {
p.HighlightConfig = highlightConfig
return &p
}
// Do executes DOM.setInspectMode.
func (p *SetInspectModeParams) Do(ctxt context.Context, h FrameHandler) (err error) {
if ctxt == nil {
ctxt = context.Background()
}
// marshal
buf, err := easyjson.Marshal(p)
if err != nil {
return err
}
// execute
ch := h.Execute(ctxt, CommandDOMSetInspectMode, easyjson.RawMessage(buf))
// read response
select {
case res := <-ch:
if res == nil {
return ErrChannelClosed
}
switch v := res.(type) {
case easyjson.RawMessage:
return nil
case error:
return v
}
case <-ctxt.Done():
return ErrContextDone
}
return ErrUnknownResult
}
// HighlightRectParams highlights given rectangle. Coordinates are absolute
// with respect to the main frame viewport.
type HighlightRectParams struct {
X int64 `json:"x"` // X coordinate
Y int64 `json:"y"` // Y coordinate
Width int64 `json:"width"` // Rectangle width
Height int64 `json:"height"` // Rectangle height
Color *RGBA `json:"color,omitempty"` // The highlight fill color (default: transparent).
OutlineColor *RGBA `json:"outlineColor,omitempty"` // The highlight outline color (default: transparent).
}
// HighlightRect highlights given rectangle. Coordinates are absolute with
// respect to the main frame viewport.
//
// parameters:
// x - X coordinate
// y - Y coordinate
// width - Rectangle width
// height - Rectangle height
func HighlightRect(x int64, y int64, width int64, height int64) *HighlightRectParams {
return &HighlightRectParams{
X: x,
Y: y,
Width: width,
Height: height,
}
}
// WithColor the highlight fill color (default: transparent).
func (p HighlightRectParams) WithColor(color *RGBA) *HighlightRectParams {
p.Color = color
return &p
}
// WithOutlineColor the highlight outline color (default: transparent).
func (p HighlightRectParams) WithOutlineColor(outlineColor *RGBA) *HighlightRectParams {
p.OutlineColor = outlineColor
return &p
}
// Do executes DOM.highlightRect.
func (p *HighlightRectParams) Do(ctxt context.Context, h FrameHandler) (err error) {
if ctxt == nil {
ctxt = context.Background()
}
// marshal
buf, err := easyjson.Marshal(p)
if err != nil {
return err
}
// execute
ch := h.Execute(ctxt, CommandDOMHighlightRect, easyjson.RawMessage(buf))
// read response
select {
case res := <-ch:
if res == nil {
return ErrChannelClosed
}
switch v := res.(type) {
case easyjson.RawMessage:
return nil
case error:
return v
}
case <-ctxt.Done():
return ErrContextDone
}
return ErrUnknownResult
}
// HighlightQuadParams highlights given quad. Coordinates are absolute with
// respect to the main frame viewport.
type HighlightQuadParams struct {
Quad Quad `json:"quad"` // Quad to highlight
Color *RGBA `json:"color,omitempty"` // The highlight fill color (default: transparent).
OutlineColor *RGBA `json:"outlineColor,omitempty"` // The highlight outline color (default: transparent).
}
// HighlightQuad highlights given quad. Coordinates are absolute with respect
// to the main frame viewport.
//
// parameters:
// quad - Quad to highlight
func HighlightQuad(quad Quad) *HighlightQuadParams {
return &HighlightQuadParams{
Quad: quad,
}
}
// WithColor the highlight fill color (default: transparent).
func (p HighlightQuadParams) WithColor(color *RGBA) *HighlightQuadParams {
p.Color = color
return &p
}
// WithOutlineColor the highlight outline color (default: transparent).
func (p HighlightQuadParams) WithOutlineColor(outlineColor *RGBA) *HighlightQuadParams {
p.OutlineColor = outlineColor
return &p
}
// Do executes DOM.highlightQuad.
func (p *HighlightQuadParams) Do(ctxt context.Context, h FrameHandler) (err error) {
if ctxt == nil {
ctxt = context.Background()
}
// marshal
buf, err := easyjson.Marshal(p)
if err != nil {
return err
}
// execute
ch := h.Execute(ctxt, CommandDOMHighlightQuad, easyjson.RawMessage(buf))
// read response
select {
case res := <-ch:
if res == nil {
return ErrChannelClosed
}
switch v := res.(type) {
case easyjson.RawMessage:
return nil
case error:
return v
}
case <-ctxt.Done():
return ErrContextDone
}
return ErrUnknownResult
}
// HighlightNodeParams highlights DOM node with given id or with the given
// JavaScript object wrapper. Either nodeId or objectId must be specified.
type HighlightNodeParams struct {
HighlightConfig *HighlightConfig `json:"highlightConfig"` // A descriptor for the highlight appearance.
NodeID NodeID `json:"nodeId,omitempty"` // Identifier of the node to highlight.
BackendNodeID BackendNodeID `json:"backendNodeId,omitempty"` // Identifier of the backend node to highlight.
ObjectID runtime.RemoteObjectID `json:"objectId,omitempty"` // JavaScript object id of the node to be highlighted.
}
// HighlightNode highlights DOM node with given id or with the given
// JavaScript object wrapper. Either nodeId or objectId must be specified.
//
// parameters:
// highlightConfig - A descriptor for the highlight appearance.
func HighlightNode(highlightConfig *HighlightConfig) *HighlightNodeParams {
return &HighlightNodeParams{
HighlightConfig: highlightConfig,
}
}
// WithNodeID identifier of the node to highlight.
func (p HighlightNodeParams) WithNodeID(nodeId NodeID) *HighlightNodeParams {
p.NodeID = nodeId
return &p
}
// WithBackendNodeID identifier of the backend node to highlight.
func (p HighlightNodeParams) WithBackendNodeID(backendNodeId BackendNodeID) *HighlightNodeParams {
p.BackendNodeID = backendNodeId
return &p
}
// WithObjectID javaScript object id of the node to be highlighted.
func (p HighlightNodeParams) WithObjectID(objectId runtime.RemoteObjectID) *HighlightNodeParams {
p.ObjectID = objectId
return &p
}
// Do executes DOM.highlightNode.
func (p *HighlightNodeParams) Do(ctxt context.Context, h FrameHandler) (err error) {
if ctxt == nil {
ctxt = context.Background()
}
// marshal
buf, err := easyjson.Marshal(p)
if err != nil {
return err
}
// execute
ch := h.Execute(ctxt, CommandDOMHighlightNode, easyjson.RawMessage(buf))
// read response
select {
case res := <-ch:
if res == nil {
return ErrChannelClosed
}
switch v := res.(type) {
case easyjson.RawMessage:
return nil
case error:
return v
}
case <-ctxt.Done():
return ErrContextDone
}
return ErrUnknownResult
}
// HideHighlightParams hides DOM node highlight.
type HideHighlightParams struct{}
// HideHighlight hides DOM node highlight.
func HideHighlight() *HideHighlightParams {
return &HideHighlightParams{}
}
// Do executes DOM.hideHighlight.
func (p *HideHighlightParams) Do(ctxt context.Context, h FrameHandler) (err error) {
if ctxt == nil {
ctxt = context.Background()
}
// execute
ch := h.Execute(ctxt, CommandDOMHideHighlight, Empty)
// read response
select {
case res := <-ch:
if res == nil {
return ErrChannelClosed
}
switch v := res.(type) {
case easyjson.RawMessage:
return nil
case error:
return v
}
case <-ctxt.Done():
return ErrContextDone
}
return ErrUnknownResult
}
// HighlightFrameParams highlights owner element of the frame with given id.
type HighlightFrameParams struct {
FrameID FrameID `json:"frameId"` // Identifier of the frame to highlight.
ContentColor *RGBA `json:"contentColor,omitempty"` // The content box highlight fill color (default: transparent).
ContentOutlineColor *RGBA `json:"contentOutlineColor,omitempty"` // The content box highlight outline color (default: transparent).
}
// HighlightFrame highlights owner element of the frame with given id.
//
// parameters:
// frameId - Identifier of the frame to highlight.
func HighlightFrame(frameId FrameID) *HighlightFrameParams {
return &HighlightFrameParams{
FrameID: frameId,
}
}
// WithContentColor the content box highlight fill color (default:
// transparent).
func (p HighlightFrameParams) WithContentColor(contentColor *RGBA) *HighlightFrameParams {
p.ContentColor = contentColor
return &p
}
// WithContentOutlineColor the content box highlight outline color (default:
// transparent).
func (p HighlightFrameParams) WithContentOutlineColor(contentOutlineColor *RGBA) *HighlightFrameParams {
p.ContentOutlineColor = contentOutlineColor
return &p
}
// Do executes DOM.highlightFrame.
func (p *HighlightFrameParams) Do(ctxt context.Context, h FrameHandler) (err error) {
if ctxt == nil {
ctxt = context.Background()
}
// marshal
buf, err := easyjson.Marshal(p)
if err != nil {
return err
}
// execute
ch := h.Execute(ctxt, CommandDOMHighlightFrame, easyjson.RawMessage(buf))
// read response
select {
case res := <-ch:
if res == nil {
return ErrChannelClosed
}
switch v := res.(type) {
case easyjson.RawMessage:
return nil
case error:
return v
}
case <-ctxt.Done():
return ErrContextDone
}
return ErrUnknownResult
}
// PushNodeByPathToFrontendParams requests that the node is sent to the
// caller given its path. // FIXME, use XPath.
type PushNodeByPathToFrontendParams struct {
Path string `json:"path"` // Path to node in the proprietary format.
}
// PushNodeByPathToFrontend requests that the node is sent to the caller
// given its path. // FIXME, use XPath.
//
// parameters:
// path - Path to node in the proprietary format.
func PushNodeByPathToFrontend(path string) *PushNodeByPathToFrontendParams {
return &PushNodeByPathToFrontendParams{
Path: path,
}
}
// PushNodeByPathToFrontendReturns return values.
type PushNodeByPathToFrontendReturns struct {
NodeID NodeID `json:"nodeId,omitempty"` // Id of the node for given path.
}
// Do executes DOM.pushNodeByPathToFrontend.
//
// returns:
// nodeId - Id of the node for given path.
func (p *PushNodeByPathToFrontendParams) Do(ctxt context.Context, h FrameHandler) (nodeId NodeID, err error) {
if ctxt == nil {
ctxt = context.Background()
}
// marshal
buf, err := easyjson.Marshal(p)
if err != nil {
return 0, err
}
// execute
ch := h.Execute(ctxt, CommandDOMPushNodeByPathToFrontend, easyjson.RawMessage(buf))
// read response
select {
case res := <-ch:
if res == nil {
return 0, ErrChannelClosed
}
switch v := res.(type) {
case easyjson.RawMessage:
// unmarshal
var r PushNodeByPathToFrontendReturns
err = easyjson.Unmarshal(v, &r)
if err != nil {
return 0, ErrInvalidResult
}
return r.NodeID, nil
case error:
return 0, v
}
case <-ctxt.Done():
return 0, ErrContextDone
}
return 0, ErrUnknownResult
}
// PushNodesByBackendIdsToFrontendParams requests that a batch of nodes is
// sent to the caller given their backend node ids.
type PushNodesByBackendIdsToFrontendParams struct {
BackendNodeIds []BackendNodeID `json:"backendNodeIds"` // The array of backend node ids.
}
// PushNodesByBackendIdsToFrontend requests that a batch of nodes is sent to
// the caller given their backend node ids.
//
// parameters:
// backendNodeIds - The array of backend node ids.
func PushNodesByBackendIdsToFrontend(backendNodeIds []BackendNodeID) *PushNodesByBackendIdsToFrontendParams {
return &PushNodesByBackendIdsToFrontendParams{
BackendNodeIds: backendNodeIds,
}
}
// PushNodesByBackendIdsToFrontendReturns return values.
type PushNodesByBackendIdsToFrontendReturns struct {
NodeIds []NodeID `json:"nodeIds,omitempty"` // The array of ids of pushed nodes that correspond to the backend ids specified in backendNodeIds.
}
// Do executes DOM.pushNodesByBackendIdsToFrontend.
//
// returns:
// nodeIds - The array of ids of pushed nodes that correspond to the backend ids specified in backendNodeIds.
func (p *PushNodesByBackendIdsToFrontendParams) Do(ctxt context.Context, h FrameHandler) (nodeIds []NodeID, err error) {
if ctxt == nil {
ctxt = context.Background()
}
// marshal
buf, err := easyjson.Marshal(p)
if err != nil {
return nil, err
}
// execute
ch := h.Execute(ctxt, CommandDOMPushNodesByBackendIdsToFrontend, easyjson.RawMessage(buf))
// read response
select {
case res := <-ch:
if res == nil {
return nil, ErrChannelClosed
}
switch v := res.(type) {
case easyjson.RawMessage:
// unmarshal
var r PushNodesByBackendIdsToFrontendReturns
err = easyjson.Unmarshal(v, &r)
if err != nil {
return nil, ErrInvalidResult
}
return r.NodeIds, nil
case error:
return nil, v
}
case <-ctxt.Done():
return nil, ErrContextDone
}
return nil, ErrUnknownResult
}
// SetInspectedNodeParams enables console to refer to the node with given id
// via $x (see Command Line API for more details $x functions).
type SetInspectedNodeParams struct {
NodeID NodeID `json:"nodeId"` // DOM node id to be accessible by means of $x command line API.
}
// SetInspectedNode enables console to refer to the node with given id via $x
// (see Command Line API for more details $x functions).
//
// parameters:
// nodeId - DOM node id to be accessible by means of $x command line API.
func SetInspectedNode(nodeId NodeID) *SetInspectedNodeParams {
return &SetInspectedNodeParams{
NodeID: nodeId,
}
}
// Do executes DOM.setInspectedNode.
func (p *SetInspectedNodeParams) Do(ctxt context.Context, h FrameHandler) (err error) {
if ctxt == nil {
ctxt = context.Background()
}
// marshal
buf, err := easyjson.Marshal(p)
if err != nil {
return err
}
// execute
ch := h.Execute(ctxt, CommandDOMSetInspectedNode, easyjson.RawMessage(buf))
// read response
select {
case res := <-ch:
if res == nil {
return ErrChannelClosed
}
switch v := res.(type) {
case easyjson.RawMessage:
return nil
case error:
return v
}
case <-ctxt.Done():
return ErrContextDone
}
return ErrUnknownResult
}
// ResolveNodeParams resolves JavaScript node object for given node id.
type ResolveNodeParams struct {
NodeID NodeID `json:"nodeId"` // Id of the node to resolve.
ObjectGroup string `json:"objectGroup,omitempty"` // Symbolic group name that can be used to release multiple objects.
}
// ResolveNode resolves JavaScript node object for given node id.
//
// parameters:
// nodeId - Id of the node to resolve.
func ResolveNode(nodeId NodeID) *ResolveNodeParams {
return &ResolveNodeParams{
NodeID: nodeId,
}
}
// WithObjectGroup symbolic group name that can be used to release multiple
// objects.
func (p ResolveNodeParams) WithObjectGroup(objectGroup string) *ResolveNodeParams {
p.ObjectGroup = objectGroup
return &p
}
// ResolveNodeReturns return values.
type ResolveNodeReturns struct {
Object *runtime.RemoteObject `json:"object,omitempty"` // JavaScript object wrapper for given node.
}
// Do executes DOM.resolveNode.
//
// returns:
// object - JavaScript object wrapper for given node.
func (p *ResolveNodeParams) Do(ctxt context.Context, h FrameHandler) (object *runtime.RemoteObject, err error) {
if ctxt == nil {
ctxt = context.Background()
}
// marshal
buf, err := easyjson.Marshal(p)
if err != nil {
return nil, err
}
// execute
ch := h.Execute(ctxt, CommandDOMResolveNode, easyjson.RawMessage(buf))
// read response
select {
case res := <-ch:
if res == nil {
return nil, ErrChannelClosed
}
switch v := res.(type) {
case easyjson.RawMessage:
// unmarshal
var r ResolveNodeReturns
err = easyjson.Unmarshal(v, &r)
if err != nil {
return nil, ErrInvalidResult
}
return r.Object, nil
case error:
return nil, v
}
case <-ctxt.Done():
return nil, ErrContextDone
}
return nil, ErrUnknownResult
}
// GetAttributesParams returns attributes for the specified node.
type GetAttributesParams struct {
NodeID NodeID `json:"nodeId"` // Id of the node to retrieve attibutes for.
}
// GetAttributes returns attributes for the specified node.
//
// parameters:
// nodeId - Id of the node to retrieve attibutes for.
func GetAttributes(nodeId NodeID) *GetAttributesParams {
return &GetAttributesParams{
NodeID: nodeId,
}
}
// GetAttributesReturns return values.
type GetAttributesReturns struct {
Attributes []string `json:"attributes,omitempty"` // An interleaved array of node attribute names and values.
}
// Do executes DOM.getAttributes.
//
// returns:
// attributes - An interleaved array of node attribute names and values.
func (p *GetAttributesParams) Do(ctxt context.Context, h FrameHandler) (attributes []string, err error) {
if ctxt == nil {
ctxt = context.Background()
}
// marshal
buf, err := easyjson.Marshal(p)
if err != nil {
return nil, err
}
// execute
ch := h.Execute(ctxt, CommandDOMGetAttributes, easyjson.RawMessage(buf))
// read response
select {
case res := <-ch:
if res == nil {
return nil, ErrChannelClosed
}
switch v := res.(type) {
case easyjson.RawMessage:
// unmarshal
var r GetAttributesReturns
err = easyjson.Unmarshal(v, &r)
if err != nil {
return nil, ErrInvalidResult
}
return r.Attributes, nil
case error:
return nil, v
}
case <-ctxt.Done():
return nil, ErrContextDone
}
return nil, ErrUnknownResult
}
// CopyToParams creates a deep copy of the specified node and places it into
// the target container before the given anchor.
type CopyToParams struct {
NodeID NodeID `json:"nodeId"` // Id of the node to copy.
TargetNodeID NodeID `json:"targetNodeId"` // Id of the element to drop the copy into.
InsertBeforeNodeID NodeID `json:"insertBeforeNodeId,omitempty"` // Drop the copy before this node (if absent, the copy becomes the last child of targetNodeId).
}
// CopyTo creates a deep copy of the specified node and places it into the
// target container before the given anchor.
//
// parameters:
// nodeId - Id of the node to copy.
// targetNodeId - Id of the element to drop the copy into.
func CopyTo(nodeId NodeID, targetNodeId NodeID) *CopyToParams {
return &CopyToParams{
NodeID: nodeId,
TargetNodeID: targetNodeId,
}
}
// WithInsertBeforeNodeID drop the copy before this node (if absent, the copy
// becomes the last child of targetNodeId).
func (p CopyToParams) WithInsertBeforeNodeID(insertBeforeNodeId NodeID) *CopyToParams {
p.InsertBeforeNodeID = insertBeforeNodeId
return &p
}
// CopyToReturns return values.
type CopyToReturns struct {
NodeID NodeID `json:"nodeId,omitempty"` // Id of the node clone.
}
// Do executes DOM.copyTo.
//
// returns:
// nodeId - Id of the node clone.
func (p *CopyToParams) Do(ctxt context.Context, h FrameHandler) (nodeId NodeID, err error) {
if ctxt == nil {
ctxt = context.Background()
}
// marshal
buf, err := easyjson.Marshal(p)
if err != nil {
return 0, err
}
// execute
ch := h.Execute(ctxt, CommandDOMCopyTo, easyjson.RawMessage(buf))
// read response
select {
case res := <-ch:
if res == nil {
return 0, ErrChannelClosed
}
switch v := res.(type) {
case easyjson.RawMessage:
// unmarshal
var r CopyToReturns
err = easyjson.Unmarshal(v, &r)
if err != nil {
return 0, ErrInvalidResult
}
return r.NodeID, nil
case error:
return 0, v
}
case <-ctxt.Done():
return 0, ErrContextDone
}
return 0, ErrUnknownResult
}
// MoveToParams moves node into the new container, places it before the given
// anchor.
type MoveToParams struct {
NodeID NodeID `json:"nodeId"` // Id of the node to move.
TargetNodeID NodeID `json:"targetNodeId"` // Id of the element to drop the moved node into.
InsertBeforeNodeID NodeID `json:"insertBeforeNodeId,omitempty"` // Drop node before this one (if absent, the moved node becomes the last child of targetNodeId).
}
// MoveTo moves node into the new container, places it before the given
// anchor.
//
// parameters:
// nodeId - Id of the node to move.
// targetNodeId - Id of the element to drop the moved node into.
func MoveTo(nodeId NodeID, targetNodeId NodeID) *MoveToParams {
return &MoveToParams{
NodeID: nodeId,
TargetNodeID: targetNodeId,
}
}
// WithInsertBeforeNodeID drop node before this one (if absent, the moved
// node becomes the last child of targetNodeId).
func (p MoveToParams) WithInsertBeforeNodeID(insertBeforeNodeId NodeID) *MoveToParams {
p.InsertBeforeNodeID = insertBeforeNodeId
return &p
}
// MoveToReturns return values.
type MoveToReturns struct {
NodeID NodeID `json:"nodeId,omitempty"` // New id of the moved node.
}
// Do executes DOM.moveTo.
//
// returns:
// nodeId - New id of the moved node.
func (p *MoveToParams) Do(ctxt context.Context, h FrameHandler) (nodeId NodeID, err error) {
if ctxt == nil {
ctxt = context.Background()
}
// marshal
buf, err := easyjson.Marshal(p)
if err != nil {
return 0, err
}
// execute
ch := h.Execute(ctxt, CommandDOMMoveTo, easyjson.RawMessage(buf))
// read response
select {
case res := <-ch:
if res == nil {
return 0, ErrChannelClosed
}
switch v := res.(type) {
case easyjson.RawMessage:
// unmarshal
var r MoveToReturns
err = easyjson.Unmarshal(v, &r)
if err != nil {
return 0, ErrInvalidResult
}
return r.NodeID, nil
case error:
return 0, v
}
case <-ctxt.Done():
return 0, ErrContextDone
}
return 0, ErrUnknownResult
}
// UndoParams undoes the last performed action.
type UndoParams struct{}
// Undo undoes the last performed action.
func Undo() *UndoParams {
return &UndoParams{}
}
// Do executes DOM.undo.
func (p *UndoParams) Do(ctxt context.Context, h FrameHandler) (err error) {
if ctxt == nil {
ctxt = context.Background()
}
// execute
ch := h.Execute(ctxt, CommandDOMUndo, Empty)
// read response
select {
case res := <-ch:
if res == nil {
return ErrChannelClosed
}
switch v := res.(type) {
case easyjson.RawMessage:
return nil
case error:
return v
}
case <-ctxt.Done():
return ErrContextDone
}
return ErrUnknownResult
}
// RedoParams re-does the last undone action.
type RedoParams struct{}
// Redo re-does the last undone action.
func Redo() *RedoParams {
return &RedoParams{}
}
// Do executes DOM.redo.
func (p *RedoParams) Do(ctxt context.Context, h FrameHandler) (err error) {
if ctxt == nil {
ctxt = context.Background()
}
// execute
ch := h.Execute(ctxt, CommandDOMRedo, Empty)
// read response
select {
case res := <-ch:
if res == nil {
return ErrChannelClosed
}
switch v := res.(type) {
case easyjson.RawMessage:
return nil
case error:
return v
}
case <-ctxt.Done():
return ErrContextDone
}
return ErrUnknownResult
}
// MarkUndoableStateParams marks last undoable state.
type MarkUndoableStateParams struct{}
// MarkUndoableState marks last undoable state.
func MarkUndoableState() *MarkUndoableStateParams {
return &MarkUndoableStateParams{}
}
// Do executes DOM.markUndoableState.
func (p *MarkUndoableStateParams) Do(ctxt context.Context, h FrameHandler) (err error) {
if ctxt == nil {
ctxt = context.Background()
}
// execute
ch := h.Execute(ctxt, CommandDOMMarkUndoableState, Empty)
// read response
select {
case res := <-ch:
if res == nil {
return ErrChannelClosed
}
switch v := res.(type) {
case easyjson.RawMessage:
return nil
case error:
return v
}
case <-ctxt.Done():
return ErrContextDone
}
return ErrUnknownResult
}
// FocusParams focuses the given element.
type FocusParams struct {
NodeID NodeID `json:"nodeId"` // Id of the node to focus.
}
// Focus focuses the given element.
//
// parameters:
// nodeId - Id of the node to focus.
func Focus(nodeId NodeID) *FocusParams {
return &FocusParams{
NodeID: nodeId,
}
}
// Do executes DOM.focus.
func (p *FocusParams) Do(ctxt context.Context, h FrameHandler) (err error) {
if ctxt == nil {
ctxt = context.Background()
}
// marshal
buf, err := easyjson.Marshal(p)
if err != nil {
return err
}
// execute
ch := h.Execute(ctxt, CommandDOMFocus, easyjson.RawMessage(buf))
// read response
select {
case res := <-ch:
if res == nil {
return ErrChannelClosed
}
switch v := res.(type) {
case easyjson.RawMessage:
return nil
case error:
return v
}
case <-ctxt.Done():
return ErrContextDone
}
return ErrUnknownResult
}
// SetFileInputFilesParams sets files for the given file input element.
type SetFileInputFilesParams struct {
NodeID NodeID `json:"nodeId"` // Id of the file input node to set files for.
Files []string `json:"files"` // Array of file paths to set.
}
// SetFileInputFiles sets files for the given file input element.
//
// parameters:
// nodeId - Id of the file input node to set files for.
// files - Array of file paths to set.
func SetFileInputFiles(nodeId NodeID, files []string) *SetFileInputFilesParams {
return &SetFileInputFilesParams{
NodeID: nodeId,
Files: files,
}
}
// Do executes DOM.setFileInputFiles.
func (p *SetFileInputFilesParams) Do(ctxt context.Context, h FrameHandler) (err error) {
if ctxt == nil {
ctxt = context.Background()
}
// marshal
buf, err := easyjson.Marshal(p)
if err != nil {
return err
}
// execute
ch := h.Execute(ctxt, CommandDOMSetFileInputFiles, easyjson.RawMessage(buf))
// read response
select {
case res := <-ch:
if res == nil {
return ErrChannelClosed
}
switch v := res.(type) {
case easyjson.RawMessage:
return nil
case error:
return v
}
case <-ctxt.Done():
return ErrContextDone
}
return ErrUnknownResult
}
// GetBoxModelParams returns boxes for the currently selected nodes.
type GetBoxModelParams struct {
NodeID NodeID `json:"nodeId"` // Id of the node to get box model for.
}
// GetBoxModel returns boxes for the currently selected nodes.
//
// parameters:
// nodeId - Id of the node to get box model for.
func GetBoxModel(nodeId NodeID) *GetBoxModelParams {
return &GetBoxModelParams{
NodeID: nodeId,
}
}
// GetBoxModelReturns return values.
type GetBoxModelReturns struct {
Model *BoxModel `json:"model,omitempty"` // Box model for the node.
}
// Do executes DOM.getBoxModel.
//
// returns:
// model - Box model for the node.
func (p *GetBoxModelParams) Do(ctxt context.Context, h FrameHandler) (model *BoxModel, err error) {
if ctxt == nil {
ctxt = context.Background()
}
// marshal
buf, err := easyjson.Marshal(p)
if err != nil {
return nil, err
}
// execute
ch := h.Execute(ctxt, CommandDOMGetBoxModel, easyjson.RawMessage(buf))
// read response
select {
case res := <-ch:
if res == nil {
return nil, ErrChannelClosed
}
switch v := res.(type) {
case easyjson.RawMessage:
// unmarshal
var r GetBoxModelReturns
err = easyjson.Unmarshal(v, &r)
if err != nil {
return nil, ErrInvalidResult
}
return r.Model, nil
case error:
return nil, v
}
case <-ctxt.Done():
return nil, ErrContextDone
}
return nil, ErrUnknownResult
}
// GetNodeForLocationParams returns node id at given location.
type GetNodeForLocationParams struct {
X int64 `json:"x"` // X coordinate.
Y int64 `json:"y"` // Y coordinate.
}
// GetNodeForLocation returns node id at given location.
//
// parameters:
// x - X coordinate.
// y - Y coordinate.
func GetNodeForLocation(x int64, y int64) *GetNodeForLocationParams {
return &GetNodeForLocationParams{
X: x,
Y: y,
}
}
// GetNodeForLocationReturns return values.
type GetNodeForLocationReturns struct {
NodeID NodeID `json:"nodeId,omitempty"` // Id of the node at given coordinates.
}
// Do executes DOM.getNodeForLocation.
//
// returns:
// nodeId - Id of the node at given coordinates.
func (p *GetNodeForLocationParams) Do(ctxt context.Context, h FrameHandler) (nodeId NodeID, err error) {
if ctxt == nil {
ctxt = context.Background()
}
// marshal
buf, err := easyjson.Marshal(p)
if err != nil {
return 0, err
}
// execute
ch := h.Execute(ctxt, CommandDOMGetNodeForLocation, easyjson.RawMessage(buf))
// read response
select {
case res := <-ch:
if res == nil {
return 0, ErrChannelClosed
}
switch v := res.(type) {
case easyjson.RawMessage:
// unmarshal
var r GetNodeForLocationReturns
err = easyjson.Unmarshal(v, &r)
if err != nil {
return 0, ErrInvalidResult
}
return r.NodeID, nil
case error:
return 0, v
}
case <-ctxt.Done():
return 0, ErrContextDone
}
return 0, ErrUnknownResult
}
// GetRelayoutBoundaryParams returns the id of the nearest ancestor that is a
// relayout boundary.
type GetRelayoutBoundaryParams struct {
NodeID NodeID `json:"nodeId"` // Id of the node.
}
// GetRelayoutBoundary returns the id of the nearest ancestor that is a
// relayout boundary.
//
// parameters:
// nodeId - Id of the node.
func GetRelayoutBoundary(nodeId NodeID) *GetRelayoutBoundaryParams {
return &GetRelayoutBoundaryParams{
NodeID: nodeId,
}
}
// GetRelayoutBoundaryReturns return values.
type GetRelayoutBoundaryReturns struct {
NodeID NodeID `json:"nodeId,omitempty"` // Relayout boundary node id for the given node.
}
// Do executes DOM.getRelayoutBoundary.
//
// returns:
// nodeId - Relayout boundary node id for the given node.
func (p *GetRelayoutBoundaryParams) Do(ctxt context.Context, h FrameHandler) (nodeId NodeID, err error) {
if ctxt == nil {
ctxt = context.Background()
}
// marshal
buf, err := easyjson.Marshal(p)
if err != nil {
return 0, err
}
// execute
ch := h.Execute(ctxt, CommandDOMGetRelayoutBoundary, easyjson.RawMessage(buf))
// read response
select {
case res := <-ch:
if res == nil {
return 0, ErrChannelClosed
}
switch v := res.(type) {
case easyjson.RawMessage:
// unmarshal
var r GetRelayoutBoundaryReturns
err = easyjson.Unmarshal(v, &r)
if err != nil {
return 0, ErrInvalidResult
}
return r.NodeID, nil
case error:
return 0, v
}
case <-ctxt.Done():
return 0, ErrContextDone
}
return 0, ErrUnknownResult
}
// GetHighlightObjectForTestParams for testing.
type GetHighlightObjectForTestParams struct {
NodeID NodeID `json:"nodeId"` // Id of the node to get highlight object for.
}
// GetHighlightObjectForTest for testing.
//
// parameters:
// nodeId - Id of the node to get highlight object for.
func GetHighlightObjectForTest(nodeId NodeID) *GetHighlightObjectForTestParams {
return &GetHighlightObjectForTestParams{
NodeID: nodeId,
}
}
// GetHighlightObjectForTestReturns return values.
type GetHighlightObjectForTestReturns struct {
Highlight easyjson.RawMessage `json:"highlight,omitempty"`
}
// Do executes DOM.getHighlightObjectForTest.
//
// returns:
// highlight - Highlight data for the node.
func (p *GetHighlightObjectForTestParams) Do(ctxt context.Context, h FrameHandler) (highlight easyjson.RawMessage, err error) {
if ctxt == nil {
ctxt = context.Background()
}
// marshal
buf, err := easyjson.Marshal(p)
if err != nil {
return nil, err
}
// execute
ch := h.Execute(ctxt, CommandDOMGetHighlightObjectForTest, easyjson.RawMessage(buf))
// read response
select {
case res := <-ch:
if res == nil {
return nil, ErrChannelClosed
}
switch v := res.(type) {
case easyjson.RawMessage:
// unmarshal
var r GetHighlightObjectForTestReturns
err = easyjson.Unmarshal(v, &r)
if err != nil {
return nil, ErrInvalidResult
}
return r.Highlight, nil
case error:
return nil, v
}
case <-ctxt.Done():
return nil, ErrContextDone
}
return nil, ErrUnknownResult
}