cdp

package
v0.1.1 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Oct 17, 2019 License: MIT Imports: 12 Imported by: 0

Documentation

Index

Constants

View Source
const EmptyFrameID = FrameID("")

EmptyFrameID is the "non-existent" frame id.

View Source
const EmptyNodeID = NodeID(0)

EmptyNodeID is the "non-existent" node id.

Variables

View Source
var MonotonicTimeEpoch *time.Time

MonotonicTimeEpoch is the MonotonicTime time epoch.

Functions

func Execute

func Execute(ctx context.Context, method string, params easyjson.Marshaler, res easyjson.Unmarshaler) error

Execute uses the context's message executor to send a command or event method marshaling the provided parameters, and unmarshaling to res.

func WithExecutor

func WithExecutor(parent context.Context, executor Executor) context.Context

WithExecutor sets the message executor for the context.

Types

type BackendNode

type BackendNode struct {
	NodeType      NodeType      `json:"nodeType"` // Node's nodeType.
	NodeName      string        `json:"nodeName"` // Node's nodeName.
	BackendNodeID BackendNodeID `json:"backendNodeId"`
}

BackendNode backend node with a friendly name.

See: https://chromedevtools.github.io/devtools-protocol/tot/DOM#type-BackendNode

func (BackendNode) MarshalEasyJSON

func (v BackendNode) MarshalEasyJSON(w *jwriter.Writer)

MarshalEasyJSON supports easyjson.Marshaler interface

func (BackendNode) MarshalJSON

func (v BackendNode) MarshalJSON() ([]byte, error)

MarshalJSON supports json.Marshaler interface

func (*BackendNode) UnmarshalEasyJSON

func (v *BackendNode) UnmarshalEasyJSON(l *jlexer.Lexer)

UnmarshalEasyJSON supports easyjson.Unmarshaler interface

func (*BackendNode) UnmarshalJSON

func (v *BackendNode) UnmarshalJSON(data []byte) error

UnmarshalJSON supports json.Unmarshaler interface

type BackendNodeID

type BackendNodeID int64

BackendNodeID unique DOM node identifier used to reference a node that may not have been pushed to the front-end.

See: https://chromedevtools.github.io/devtools-protocol/tot/DOM#type-BackendNodeId

func (BackendNodeID) Int64

func (t BackendNodeID) Int64() int64

Int64 returns the BackendNodeID as int64 value.

func (*BackendNodeID) UnmarshalEasyJSON

func (t *BackendNodeID) UnmarshalEasyJSON(in *jlexer.Lexer)

UnmarshalEasyJSON satisfies easyjson.Unmarshaler.

func (*BackendNodeID) UnmarshalJSON

func (t *BackendNodeID) UnmarshalJSON(buf []byte) error

UnmarshalJSON satisfies json.Unmarshaler.

type ErrUnknownCommandOrEvent

type ErrUnknownCommandOrEvent string

ErrUnknownCommandOrEvent is an unknown command or event error.

func (ErrUnknownCommandOrEvent) Error

func (err ErrUnknownCommandOrEvent) Error() string

Error satisfies the error interface.

type Error

type Error string

Error is a error.

const (
	// ErrInvalidContext is the invalid context error.
	ErrInvalidContext Error = "invalid context"

	// ErrMsgMissingParamsOrResult is the msg missing params or result error.
	ErrMsgMissingParamsOrResult Error = "msg missing params or result"
)

Error values.

func (Error) Error

func (err Error) Error() string

Error satisfies the error interface.

type Executor

type Executor interface {
	// Execute executes the command.
	Execute(context.Context, string, easyjson.Marshaler, easyjson.Unmarshaler) error
}

Executor is the common interface for executing a command.

func ExecutorFromContext

func ExecutorFromContext(ctx context.Context) Executor

ExecutorFromContext returns the message executor for the context.

type Frame

type Frame struct {
	ID             FrameID          `json:"id"`                       // Frame unique identifier.
	ParentID       FrameID          `json:"parentId,omitempty"`       // Parent frame identifier.
	LoaderID       LoaderID         `json:"loaderId"`                 // Identifier of the loader associated with this frame.
	Name           string           `json:"name,omitempty"`           // Frame's name as specified in the tag.
	URL            string           `json:"url"`                      // Frame document's URL without fragment.
	URLFragment    string           `json:"urlFragment,omitempty"`    // Frame document's URL fragment including the '#'.
	SecurityOrigin string           `json:"securityOrigin"`           // Frame document's security origin.
	MimeType       string           `json:"mimeType"`                 // Frame document's mimeType as determined by the browser.
	UnreachableURL string           `json:"unreachableUrl,omitempty"` // If the frame failed to load, this contains the URL that could not be loaded. Note that unlike url above, this URL may contain a fragment.
	State          FrameState       `json:"-"`                        // Frame state.
	Root           *Node            `json:"-"`                        // Frame document root.
	Nodes          map[NodeID]*Node `json:"-"`                        // Frame nodes.
	sync.RWMutex   `json:"-"`       // Read write mutex.
}

Frame information about the Frame on the page.

See: https://chromedevtools.github.io/devtools-protocol/tot/Page#type-Frame

func (Frame) MarshalEasyJSON

func (v Frame) MarshalEasyJSON(w *jwriter.Writer)

MarshalEasyJSON supports easyjson.Marshaler interface

func (Frame) MarshalJSON

func (v Frame) MarshalJSON() ([]byte, error)

MarshalJSON supports json.Marshaler interface

func (*Frame) UnmarshalEasyJSON

func (v *Frame) UnmarshalEasyJSON(l *jlexer.Lexer)

UnmarshalEasyJSON supports easyjson.Unmarshaler interface

func (*Frame) UnmarshalJSON

func (v *Frame) UnmarshalJSON(data []byte) error

UnmarshalJSON supports json.Unmarshaler interface

type FrameID

type FrameID string

FrameID unique frame identifier.

See: https://chromedevtools.github.io/devtools-protocol/tot/Page#type-FrameId

func (FrameID) String

func (t FrameID) String() string

String returns the FrameID as string value.

func (*FrameID) UnmarshalEasyJSON

func (t *FrameID) UnmarshalEasyJSON(in *jlexer.Lexer)

UnmarshalEasyJSON satisfies easyjson.Unmarshaler.

func (*FrameID) UnmarshalJSON

func (t *FrameID) UnmarshalJSON(buf []byte) error

UnmarshalJSON satisfies json.Unmarshaler.

type FrameState

type FrameState uint16

FrameState is the state of a Frame.

const (
	FrameDOMContentEventFired FrameState = 1 << (15 - iota)
	FrameLoadEventFired
	FrameAttached
	FrameNavigated
	FrameLoading
	FrameScheduledNavigation
)

FrameState enum values.

func (FrameState) String

func (fs FrameState) String() string

String satisfies stringer interface.

type LoaderID

type LoaderID string

LoaderID unique loader identifier.

See: https://chromedevtools.github.io/devtools-protocol/tot/Network#type-LoaderId

func (LoaderID) String

func (t LoaderID) String() string

String returns the LoaderID as string value.

type MonotonicTime

type MonotonicTime time.Time

MonotonicTime monotonically increasing time in seconds since an arbitrary point in the past.

See: https://chromedevtools.github.io/devtools-protocol/tot/Network#type-MonotonicTime

func (MonotonicTime) MarshalEasyJSON

func (t MonotonicTime) MarshalEasyJSON(out *jwriter.Writer)

MarshalEasyJSON satisfies easyjson.Marshaler.

func (MonotonicTime) MarshalJSON

func (t MonotonicTime) MarshalJSON() ([]byte, error)

MarshalJSON satisfies json.Marshaler.

func (MonotonicTime) Time

func (t MonotonicTime) Time() time.Time

Time returns the MonotonicTime as time.Time value.

func (*MonotonicTime) UnmarshalEasyJSON

func (t *MonotonicTime) UnmarshalEasyJSON(in *jlexer.Lexer)

UnmarshalEasyJSON satisfies easyjson.Unmarshaler.

func (*MonotonicTime) UnmarshalJSON

func (t *MonotonicTime) UnmarshalJSON(buf []byte) error

UnmarshalJSON satisfies json.Unmarshaler.

type Node

type Node struct {
	NodeID           NodeID         `json:"nodeId"`                     // Node identifier that is passed into the rest of the DOM messages as the nodeId. Backend will only push node with given id once. It is aware of all requested nodes and will only fire DOM events for nodes known to the client.
	ParentID         NodeID         `json:"parentId,omitempty"`         // The id of the parent node if any.
	BackendNodeID    BackendNodeID  `json:"backendNodeId"`              // The BackendNodeId for this node.
	NodeType         NodeType       `json:"nodeType"`                   // Node's nodeType.
	NodeName         string         `json:"nodeName"`                   // Node's nodeName.
	LocalName        string         `json:"localName"`                  // Node's localName.
	NodeValue        string         `json:"nodeValue"`                  // Node's nodeValue.
	ChildNodeCount   int64          `json:"childNodeCount,omitempty"`   // Child count for Container nodes.
	Children         []*Node        `json:"children,omitempty"`         // Child nodes of this node when requested with children.
	Attributes       []string       `json:"attributes,omitempty"`       // Attributes of the Element node in the form of flat array [name1, value1, name2, value2].
	DocumentURL      string         `json:"documentURL,omitempty"`      // Document URL that Document or FrameOwner node points to.
	BaseURL          string         `json:"baseURL,omitempty"`          // Base URL that Document or FrameOwner node uses for URL completion.
	PublicID         string         `json:"publicId,omitempty"`         // DocumentType's publicId.
	SystemID         string         `json:"systemId,omitempty"`         // DocumentType's systemId.
	InternalSubset   string         `json:"internalSubset,omitempty"`   // DocumentType's internalSubset.
	XMLVersion       string         `json:"xmlVersion,omitempty"`       // Document's XML version in case of XML documents.
	Name             string         `json:"name,omitempty"`             // Attr's name.
	Value            string         `json:"value,omitempty"`            // Attr's value.
	PseudoType       PseudoType     `json:"pseudoType,omitempty"`       // Pseudo element type for this node.
	ShadowRootType   ShadowRootType `json:"shadowRootType,omitempty"`   // Shadow root type.
	FrameID          FrameID        `json:"frameId,omitempty"`          // Frame ID for frame owner elements.
	ContentDocument  *Node          `json:"contentDocument,omitempty"`  // Content document for frame owner elements.
	ShadowRoots      []*Node        `json:"shadowRoots,omitempty"`      // Shadow root list for given element host.
	TemplateContent  *Node          `json:"templateContent,omitempty"`  // Content document fragment for template elements.
	PseudoElements   []*Node        `json:"pseudoElements,omitempty"`   // Pseudo elements associated with this node.
	ImportedDocument *Node          `json:"importedDocument,omitempty"` // Import document for the HTMLImport links.
	DistributedNodes []*BackendNode `json:"distributedNodes,omitempty"` // Distributed nodes for given insertion point.
	IsSVG            bool           `json:"isSVG,omitempty"`            // Whether the node is SVG.
	Parent           *Node          `json:"-"`                          // Parent node.
	Invalidated      chan struct{}  `json:"-"`                          // Invalidated channel.
	State            NodeState      `json:"-"`                          // Node state.
	sync.RWMutex     `json:"-"`     // Read write mutex.
}

Node DOM interaction is implemented in terms of mirror objects that represent the actual DOM nodes. DOMNode is a base node mirror type.

See: https://chromedevtools.github.io/devtools-protocol/tot/DOM#type-Node

func (*Node) AttributeValue

func (n *Node) AttributeValue(name string) string

AttributeValue returns the named attribute for the node.

func (*Node) Dump

func (n *Node) Dump(prefix, indent string, nodeIDs bool) string

Dump builds a printable string representation of the node and its children.

func (*Node) FullXPath

func (n *Node) FullXPath() string

FullXPath returns the full XPath for the node, stopping only at the top most document root.

func (*Node) FullXPathByID

func (n *Node) FullXPathByID() string

FullXPathByID returns the full XPath for the node, stopping at the top most document root or at the closest parent node with an id attribute.

func (Node) MarshalEasyJSON

func (v Node) MarshalEasyJSON(w *jwriter.Writer)

MarshalEasyJSON supports easyjson.Marshaler interface

func (Node) MarshalJSON

func (v Node) MarshalJSON() ([]byte, error)

MarshalJSON supports json.Marshaler interface

func (*Node) PartialXPath

func (n *Node) PartialXPath() string

PartialXPath returns the partial XPath for the node, stopping at the nearest parent document node.

func (*Node) PartialXPathByID

func (n *Node) PartialXPathByID() string

PartialXPathByID returns the partial XPath for the node, stopping at the first parent with an id attribute or at nearest parent document node.

func (*Node) UnmarshalEasyJSON

func (v *Node) UnmarshalEasyJSON(l *jlexer.Lexer)

UnmarshalEasyJSON supports easyjson.Unmarshaler interface

func (*Node) UnmarshalJSON

func (v *Node) UnmarshalJSON(data []byte) error

UnmarshalJSON supports json.Unmarshaler interface

type NodeID

type NodeID int64

NodeID unique DOM node identifier.

See: https://chromedevtools.github.io/devtools-protocol/tot/DOM#type-NodeId

func (NodeID) Int64

func (t NodeID) Int64() int64

Int64 returns the NodeID as int64 value.

func (*NodeID) UnmarshalEasyJSON

func (t *NodeID) UnmarshalEasyJSON(in *jlexer.Lexer)

UnmarshalEasyJSON satisfies easyjson.Unmarshaler.

func (*NodeID) UnmarshalJSON

func (t *NodeID) UnmarshalJSON(buf []byte) error

UnmarshalJSON satisfies json.Unmarshaler.

type NodeState

type NodeState uint8

NodeState is the state of a DOM node.

const (
	NodeReady NodeState = 1 << (7 - iota)
	NodeVisible
	NodeHighlighted
)

NodeState enum values.

func (NodeState) String

func (ns NodeState) String() string

String satisfies stringer interface.

type NodeType

type NodeType int64

NodeType node type.

See: https://developer.mozilla.org/en/docs/Web/API/Node/nodeType

const (
	NodeTypeElement               NodeType = 1
	NodeTypeAttribute             NodeType = 2
	NodeTypeText                  NodeType = 3
	NodeTypeCDATA                 NodeType = 4
	NodeTypeEntityReference       NodeType = 5
	NodeTypeEntity                NodeType = 6
	NodeTypeProcessingInstruction NodeType = 7
	NodeTypeComment               NodeType = 8
	NodeTypeDocument              NodeType = 9
	NodeTypeDocumentType          NodeType = 10
	NodeTypeDocumentFragment      NodeType = 11
	NodeTypeNotation              NodeType = 12
)

NodeType values.

func (NodeType) Int64

func (t NodeType) Int64() int64

Int64 returns the NodeType as int64 value.

func (NodeType) MarshalEasyJSON

func (t NodeType) MarshalEasyJSON(out *jwriter.Writer)

MarshalEasyJSON satisfies easyjson.Marshaler.

func (NodeType) MarshalJSON

func (t NodeType) MarshalJSON() ([]byte, error)

MarshalJSON satisfies json.Marshaler.

func (NodeType) String

func (t NodeType) String() string

String returns the NodeType as string value.

func (*NodeType) UnmarshalEasyJSON

func (t *NodeType) UnmarshalEasyJSON(in *jlexer.Lexer)

UnmarshalEasyJSON satisfies easyjson.Unmarshaler.

func (*NodeType) UnmarshalJSON

func (t *NodeType) UnmarshalJSON(buf []byte) error

UnmarshalJSON satisfies json.Unmarshaler.

type PseudoType

type PseudoType string

PseudoType pseudo element type.

See: https://chromedevtools.github.io/devtools-protocol/tot/DOM#type-PseudoType

const (
	PseudoTypeFirstLine           PseudoType = "first-line"
	PseudoTypeFirstLetter         PseudoType = "first-letter"
	PseudoTypeBefore              PseudoType = "before"
	PseudoTypeAfter               PseudoType = "after"
	PseudoTypeBackdrop            PseudoType = "backdrop"
	PseudoTypeSelection           PseudoType = "selection"
	PseudoTypeFirstLineInherited  PseudoType = "first-line-inherited"
	PseudoTypeScrollbar           PseudoType = "scrollbar"
	PseudoTypeScrollbarThumb      PseudoType = "scrollbar-thumb"
	PseudoTypeScrollbarButton     PseudoType = "scrollbar-button"
	PseudoTypeScrollbarTrack      PseudoType = "scrollbar-track"
	PseudoTypeScrollbarTrackPiece PseudoType = "scrollbar-track-piece"
	PseudoTypeScrollbarCorner     PseudoType = "scrollbar-corner"
	PseudoTypeResizer             PseudoType = "resizer"
	PseudoTypeInputListButton     PseudoType = "input-list-button"
)

PseudoType values.

func (PseudoType) MarshalEasyJSON

func (t PseudoType) MarshalEasyJSON(out *jwriter.Writer)

MarshalEasyJSON satisfies easyjson.Marshaler.

func (PseudoType) MarshalJSON

func (t PseudoType) MarshalJSON() ([]byte, error)

MarshalJSON satisfies json.Marshaler.

func (PseudoType) String

func (t PseudoType) String() string

String returns the PseudoType as string value.

func (*PseudoType) UnmarshalEasyJSON

func (t *PseudoType) UnmarshalEasyJSON(in *jlexer.Lexer)

UnmarshalEasyJSON satisfies easyjson.Unmarshaler.

func (*PseudoType) UnmarshalJSON

func (t *PseudoType) UnmarshalJSON(buf []byte) error

UnmarshalJSON satisfies json.Unmarshaler.

type RGBA

type RGBA struct {
	R int64   `json:"r"`           // The red component, in the [0-255] range.
	G int64   `json:"g"`           // The green component, in the [0-255] range.
	B int64   `json:"b"`           // The blue component, in the [0-255] range.
	A float64 `json:"a,omitempty"` // The alpha component, in the [0-1] range (default: 1).
}

RGBA a structure holding an RGBA color.

See: https://chromedevtools.github.io/devtools-protocol/tot/DOM#type-RGBA

func (RGBA) MarshalEasyJSON

func (v RGBA) MarshalEasyJSON(w *jwriter.Writer)

MarshalEasyJSON supports easyjson.Marshaler interface

func (RGBA) MarshalJSON

func (v RGBA) MarshalJSON() ([]byte, error)

MarshalJSON supports json.Marshaler interface

func (*RGBA) UnmarshalEasyJSON

func (v *RGBA) UnmarshalEasyJSON(l *jlexer.Lexer)

UnmarshalEasyJSON supports easyjson.Unmarshaler interface

func (*RGBA) UnmarshalJSON

func (v *RGBA) UnmarshalJSON(data []byte) error

UnmarshalJSON supports json.Unmarshaler interface

type ShadowRootType

type ShadowRootType string

ShadowRootType shadow root type.

See: https://chromedevtools.github.io/devtools-protocol/tot/DOM#type-ShadowRootType

const (
	ShadowRootTypeUserAgent ShadowRootType = "user-agent"
	ShadowRootTypeOpen      ShadowRootType = "open"
	ShadowRootTypeClosed    ShadowRootType = "closed"
)

ShadowRootType values.

func (ShadowRootType) MarshalEasyJSON

func (t ShadowRootType) MarshalEasyJSON(out *jwriter.Writer)

MarshalEasyJSON satisfies easyjson.Marshaler.

func (ShadowRootType) MarshalJSON

func (t ShadowRootType) MarshalJSON() ([]byte, error)

MarshalJSON satisfies json.Marshaler.

func (ShadowRootType) String

func (t ShadowRootType) String() string

String returns the ShadowRootType as string value.

func (*ShadowRootType) UnmarshalEasyJSON

func (t *ShadowRootType) UnmarshalEasyJSON(in *jlexer.Lexer)

UnmarshalEasyJSON satisfies easyjson.Unmarshaler.

func (*ShadowRootType) UnmarshalJSON

func (t *ShadowRootType) UnmarshalJSON(buf []byte) error

UnmarshalJSON satisfies json.Unmarshaler.

type TimeSinceEpoch

type TimeSinceEpoch time.Time

TimeSinceEpoch UTC time in seconds, counted from January 1, 1970.

See: https://chromedevtools.github.io/devtools-protocol/tot/Network#type-TimeSinceEpoch

func (TimeSinceEpoch) MarshalEasyJSON

func (t TimeSinceEpoch) MarshalEasyJSON(out *jwriter.Writer)

MarshalEasyJSON satisfies easyjson.Marshaler.

func (TimeSinceEpoch) MarshalJSON

func (t TimeSinceEpoch) MarshalJSON() ([]byte, error)

MarshalJSON satisfies json.Marshaler.

func (TimeSinceEpoch) Time

func (t TimeSinceEpoch) Time() time.Time

Time returns the TimeSinceEpoch as time.Time value.

func (*TimeSinceEpoch) UnmarshalEasyJSON

func (t *TimeSinceEpoch) UnmarshalEasyJSON(in *jlexer.Lexer)

UnmarshalEasyJSON satisfies easyjson.Unmarshaler.

func (*TimeSinceEpoch) UnmarshalJSON

func (t *TimeSinceEpoch) UnmarshalJSON(buf []byte) error

UnmarshalJSON satisfies json.Unmarshaler.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL