parent
							
								
									f27ba717b1
								
							
						
					
					
						commit
						d70d54233f
					
				
							
								
								
									
										32
									
								
								cdp/cdp.go
									
									
									
									
									
								
							
							
						
						
									
										32
									
								
								cdp/cdp.go
									
									
									
									
									
								
							| @ -7,6 +7,7 @@ import ( | |||||||
| 	"strconv" | 	"strconv" | ||||||
| 	"strings" | 	"strings" | ||||||
| 	"sync" | 	"sync" | ||||||
|  | 	"time" | ||||||
| 
 | 
 | ||||||
| 	"github.com/mailru/easyjson" | 	"github.com/mailru/easyjson" | ||||||
| 	"github.com/mailru/easyjson/jlexer" | 	"github.com/mailru/easyjson/jlexer" | ||||||
| @ -1501,11 +1502,34 @@ func (t LoaderID) String() string { | |||||||
| } | } | ||||||
| 
 | 
 | ||||||
| // Timestamp number of seconds since epoch. | // Timestamp number of seconds since epoch. | ||||||
| type Timestamp float64 | type Timestamp time.Time | ||||||
| 
 | 
 | ||||||
| // Float64 returns the Timestamp as float64 value. | // Time returns the Timestamp as time.Time value. | ||||||
| func (t Timestamp) Float64() float64 { | func (t Timestamp) Time() time.Time { | ||||||
| 	return float64(t) | 	return time.Time(t) | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | // MarshalEasyJSON satisfies easyjson.Marshaler. | ||||||
|  | func (t Timestamp) MarshalEasyJSON(out *jwriter.Writer) { | ||||||
|  | 	v := float64(time.Time(t).UnixNano() / int64(time.Second)) | ||||||
|  | 
 | ||||||
|  | 	out.Buffer.EnsureSpace(20) | ||||||
|  | 	out.Buffer.Buf = strconv.AppendFloat(out.Buffer.Buf, v, 'f', -1, 64) | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | // MarshalJSON satisfies json.Marshaler. | ||||||
|  | func (t Timestamp) MarshalJSON() ([]byte, error) { | ||||||
|  | 	return easyjson.Marshal(t) | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | // UnmarshalEasyJSON satisfies easyjson.Unmarshaler. | ||||||
|  | func (t *Timestamp) UnmarshalEasyJSON(in *jlexer.Lexer) { | ||||||
|  | 	*t = Timestamp(time.Unix(0, int64(in.Float64()*float64(time.Second)))) | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | // UnmarshalJSON satisfies json.Unmarshaler. | ||||||
|  | func (t *Timestamp) UnmarshalJSON(buf []byte) error { | ||||||
|  | 	return easyjson.Unmarshal(buf, t) | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| // NodeID unique DOM node identifier. | // NodeID unique DOM node identifier. | ||||||
|  | |||||||
| @ -4,6 +4,7 @@ package heapprofiler | |||||||
| 
 | 
 | ||||||
| import ( | import ( | ||||||
| 	json "encoding/json" | 	json "encoding/json" | ||||||
|  | 	cdp "github.com/knq/chromedp/cdp" | ||||||
| 	runtime "github.com/knq/chromedp/cdp/runtime" | 	runtime "github.com/knq/chromedp/cdp/runtime" | ||||||
| 	easyjson "github.com/mailru/easyjson" | 	easyjson "github.com/mailru/easyjson" | ||||||
| 	jlexer "github.com/mailru/easyjson/jlexer" | 	jlexer "github.com/mailru/easyjson/jlexer" | ||||||
| @ -1124,7 +1125,15 @@ func easyjsonC5a4559bDecodeGithubComKnqChromedpCdpHeapprofiler14(in *jlexer.Lexe | |||||||
| 		case "lastSeenObjectId": | 		case "lastSeenObjectId": | ||||||
| 			out.LastSeenObjectID = int64(in.Int64()) | 			out.LastSeenObjectID = int64(in.Int64()) | ||||||
| 		case "timestamp": | 		case "timestamp": | ||||||
| 			out.Timestamp = float64(in.Float64()) | 			if in.IsNull() { | ||||||
|  | 				in.Skip() | ||||||
|  | 				out.Timestamp = nil | ||||||
|  | 			} else { | ||||||
|  | 				if out.Timestamp == nil { | ||||||
|  | 					out.Timestamp = new(cdp.Timestamp) | ||||||
|  | 				} | ||||||
|  | 				(*out.Timestamp).UnmarshalEasyJSON(in) | ||||||
|  | 			} | ||||||
| 		default: | 		default: | ||||||
| 			in.SkipRecursive() | 			in.SkipRecursive() | ||||||
| 		} | 		} | ||||||
| @ -1147,13 +1156,17 @@ func easyjsonC5a4559bEncodeGithubComKnqChromedpCdpHeapprofiler14(out *jwriter.Wr | |||||||
| 		out.RawString("\"lastSeenObjectId\":") | 		out.RawString("\"lastSeenObjectId\":") | ||||||
| 		out.Int64(int64(in.LastSeenObjectID)) | 		out.Int64(int64(in.LastSeenObjectID)) | ||||||
| 	} | 	} | ||||||
| 	if in.Timestamp != 0 { | 	if in.Timestamp != nil { | ||||||
| 		if !first { | 		if !first { | ||||||
| 			out.RawByte(',') | 			out.RawByte(',') | ||||||
| 		} | 		} | ||||||
| 		first = false | 		first = false | ||||||
| 		out.RawString("\"timestamp\":") | 		out.RawString("\"timestamp\":") | ||||||
| 		out.Float64(float64(in.Timestamp)) | 		if in.Timestamp == nil { | ||||||
|  | 			out.RawString("null") | ||||||
|  | 		} else { | ||||||
|  | 			(*in.Timestamp).MarshalEasyJSON(out) | ||||||
|  | 		} | ||||||
| 	} | 	} | ||||||
| 	out.RawByte('}') | 	out.RawByte('}') | ||||||
| } | } | ||||||
|  | |||||||
| @ -27,8 +27,8 @@ type EventReportHeapSnapshotProgress struct { | |||||||
| // then one or more heapStatsUpdate events will be sent before a new | // then one or more heapStatsUpdate events will be sent before a new | ||||||
| // lastSeenObjectId event. | // lastSeenObjectId event. | ||||||
| type EventLastSeenObjectID struct { | type EventLastSeenObjectID struct { | ||||||
| 	LastSeenObjectID int64   `json:"lastSeenObjectId,omitempty"` | 	LastSeenObjectID int64          `json:"lastSeenObjectId,omitempty"` | ||||||
| 	Timestamp        float64 `json:"timestamp,omitempty"` | 	Timestamp        *cdp.Timestamp `json:"timestamp,omitempty"` | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| // EventHeapStatsUpdate if heap objects tracking has been started then | // EventHeapStatsUpdate if heap objects tracking has been started then | ||||||
|  | |||||||
| @ -4,6 +4,7 @@ package input | |||||||
| 
 | 
 | ||||||
| import ( | import ( | ||||||
| 	json "encoding/json" | 	json "encoding/json" | ||||||
|  | 	cdp "github.com/knq/chromedp/cdp" | ||||||
| 	easyjson "github.com/mailru/easyjson" | 	easyjson "github.com/mailru/easyjson" | ||||||
| 	jlexer "github.com/mailru/easyjson/jlexer" | 	jlexer "github.com/mailru/easyjson/jlexer" | ||||||
| 	jwriter "github.com/mailru/easyjson/jwriter" | 	jwriter "github.com/mailru/easyjson/jwriter" | ||||||
| @ -632,7 +633,15 @@ func easyjsonC5a4559bDecodeGithubComKnqChromedpCdpInput5(in *jlexer.Lexer, out * | |||||||
| 		case "y": | 		case "y": | ||||||
| 			out.Y = int64(in.Int64()) | 			out.Y = int64(in.Int64()) | ||||||
| 		case "timestamp": | 		case "timestamp": | ||||||
| 			out.Timestamp = float64(in.Float64()) | 			if in.IsNull() { | ||||||
|  | 				in.Skip() | ||||||
|  | 				out.Timestamp = nil | ||||||
|  | 			} else { | ||||||
|  | 				if out.Timestamp == nil { | ||||||
|  | 					out.Timestamp = new(cdp.Timestamp) | ||||||
|  | 				} | ||||||
|  | 				(*out.Timestamp).UnmarshalEasyJSON(in) | ||||||
|  | 			} | ||||||
| 		case "button": | 		case "button": | ||||||
| 			(out.Button).UnmarshalEasyJSON(in) | 			(out.Button).UnmarshalEasyJSON(in) | ||||||
| 		case "deltaX": | 		case "deltaX": | ||||||
| @ -680,7 +689,11 @@ func easyjsonC5a4559bEncodeGithubComKnqChromedpCdpInput5(out *jwriter.Writer, in | |||||||
| 	} | 	} | ||||||
| 	first = false | 	first = false | ||||||
| 	out.RawString("\"timestamp\":") | 	out.RawString("\"timestamp\":") | ||||||
| 	out.Float64(float64(in.Timestamp)) | 	if in.Timestamp == nil { | ||||||
|  | 		out.RawString("null") | ||||||
|  | 	} else { | ||||||
|  | 		(*in.Timestamp).MarshalEasyJSON(out) | ||||||
|  | 	} | ||||||
| 	if !first { | 	if !first { | ||||||
| 		out.RawByte(',') | 		out.RawByte(',') | ||||||
| 	} | 	} | ||||||
| @ -800,7 +813,15 @@ func easyjsonC5a4559bDecodeGithubComKnqChromedpCdpInput6(in *jlexer.Lexer, out * | |||||||
| 		case "modifiers": | 		case "modifiers": | ||||||
| 			(out.Modifiers).UnmarshalEasyJSON(in) | 			(out.Modifiers).UnmarshalEasyJSON(in) | ||||||
| 		case "timestamp": | 		case "timestamp": | ||||||
| 			out.Timestamp = float64(in.Float64()) | 			if in.IsNull() { | ||||||
|  | 				in.Skip() | ||||||
|  | 				out.Timestamp = nil | ||||||
|  | 			} else { | ||||||
|  | 				if out.Timestamp == nil { | ||||||
|  | 					out.Timestamp = new(cdp.Timestamp) | ||||||
|  | 				} | ||||||
|  | 				(*out.Timestamp).UnmarshalEasyJSON(in) | ||||||
|  | 			} | ||||||
| 		default: | 		default: | ||||||
| 			in.SkipRecursive() | 			in.SkipRecursive() | ||||||
| 		} | 		} | ||||||
| @ -850,13 +871,17 @@ func easyjsonC5a4559bEncodeGithubComKnqChromedpCdpInput6(out *jwriter.Writer, in | |||||||
| 		out.RawString("\"modifiers\":") | 		out.RawString("\"modifiers\":") | ||||||
| 		(in.Modifiers).MarshalEasyJSON(out) | 		(in.Modifiers).MarshalEasyJSON(out) | ||||||
| 	} | 	} | ||||||
| 	if in.Timestamp != 0 { | 	if in.Timestamp != nil { | ||||||
| 		if !first { | 		if !first { | ||||||
| 			out.RawByte(',') | 			out.RawByte(',') | ||||||
| 		} | 		} | ||||||
| 		first = false | 		first = false | ||||||
| 		out.RawString("\"timestamp\":") | 		out.RawString("\"timestamp\":") | ||||||
| 		out.Float64(float64(in.Timestamp)) | 		if in.Timestamp == nil { | ||||||
|  | 			out.RawString("null") | ||||||
|  | 		} else { | ||||||
|  | 			(*in.Timestamp).MarshalEasyJSON(out) | ||||||
|  | 		} | ||||||
| 	} | 	} | ||||||
| 	out.RawByte('}') | 	out.RawByte('}') | ||||||
| } | } | ||||||
| @ -912,7 +937,15 @@ func easyjsonC5a4559bDecodeGithubComKnqChromedpCdpInput7(in *jlexer.Lexer, out * | |||||||
| 		case "modifiers": | 		case "modifiers": | ||||||
| 			(out.Modifiers).UnmarshalEasyJSON(in) | 			(out.Modifiers).UnmarshalEasyJSON(in) | ||||||
| 		case "timestamp": | 		case "timestamp": | ||||||
| 			out.Timestamp = float64(in.Float64()) | 			if in.IsNull() { | ||||||
|  | 				in.Skip() | ||||||
|  | 				out.Timestamp = nil | ||||||
|  | 			} else { | ||||||
|  | 				if out.Timestamp == nil { | ||||||
|  | 					out.Timestamp = new(cdp.Timestamp) | ||||||
|  | 				} | ||||||
|  | 				(*out.Timestamp).UnmarshalEasyJSON(in) | ||||||
|  | 			} | ||||||
| 		case "button": | 		case "button": | ||||||
| 			(out.Button).UnmarshalEasyJSON(in) | 			(out.Button).UnmarshalEasyJSON(in) | ||||||
| 		case "clickCount": | 		case "clickCount": | ||||||
| @ -957,13 +990,17 @@ func easyjsonC5a4559bEncodeGithubComKnqChromedpCdpInput7(out *jwriter.Writer, in | |||||||
| 		out.RawString("\"modifiers\":") | 		out.RawString("\"modifiers\":") | ||||||
| 		(in.Modifiers).MarshalEasyJSON(out) | 		(in.Modifiers).MarshalEasyJSON(out) | ||||||
| 	} | 	} | ||||||
| 	if in.Timestamp != 0 { | 	if in.Timestamp != nil { | ||||||
| 		if !first { | 		if !first { | ||||||
| 			out.RawByte(',') | 			out.RawByte(',') | ||||||
| 		} | 		} | ||||||
| 		first = false | 		first = false | ||||||
| 		out.RawString("\"timestamp\":") | 		out.RawString("\"timestamp\":") | ||||||
| 		out.Float64(float64(in.Timestamp)) | 		if in.Timestamp == nil { | ||||||
|  | 			out.RawString("null") | ||||||
|  | 		} else { | ||||||
|  | 			(*in.Timestamp).MarshalEasyJSON(out) | ||||||
|  | 		} | ||||||
| 	} | 	} | ||||||
| 	if in.Button != "" { | 	if in.Button != "" { | ||||||
| 		if !first { | 		if !first { | ||||||
| @ -1031,7 +1068,15 @@ func easyjsonC5a4559bDecodeGithubComKnqChromedpCdpInput8(in *jlexer.Lexer, out * | |||||||
| 		case "modifiers": | 		case "modifiers": | ||||||
| 			(out.Modifiers).UnmarshalEasyJSON(in) | 			(out.Modifiers).UnmarshalEasyJSON(in) | ||||||
| 		case "timestamp": | 		case "timestamp": | ||||||
| 			out.Timestamp = float64(in.Float64()) | 			if in.IsNull() { | ||||||
|  | 				in.Skip() | ||||||
|  | 				out.Timestamp = nil | ||||||
|  | 			} else { | ||||||
|  | 				if out.Timestamp == nil { | ||||||
|  | 					out.Timestamp = new(cdp.Timestamp) | ||||||
|  | 				} | ||||||
|  | 				(*out.Timestamp).UnmarshalEasyJSON(in) | ||||||
|  | 			} | ||||||
| 		case "text": | 		case "text": | ||||||
| 			out.Text = string(in.String()) | 			out.Text = string(in.String()) | ||||||
| 		case "unmodifiedText": | 		case "unmodifiedText": | ||||||
| @ -1080,13 +1125,17 @@ func easyjsonC5a4559bEncodeGithubComKnqChromedpCdpInput8(out *jwriter.Writer, in | |||||||
| 		out.RawString("\"modifiers\":") | 		out.RawString("\"modifiers\":") | ||||||
| 		(in.Modifiers).MarshalEasyJSON(out) | 		(in.Modifiers).MarshalEasyJSON(out) | ||||||
| 	} | 	} | ||||||
| 	if in.Timestamp != 0 { | 	if in.Timestamp != nil { | ||||||
| 		if !first { | 		if !first { | ||||||
| 			out.RawByte(',') | 			out.RawByte(',') | ||||||
| 		} | 		} | ||||||
| 		first = false | 		first = false | ||||||
| 		out.RawString("\"timestamp\":") | 		out.RawString("\"timestamp\":") | ||||||
| 		out.Float64(float64(in.Timestamp)) | 		if in.Timestamp == nil { | ||||||
|  | 			out.RawString("null") | ||||||
|  | 		} else { | ||||||
|  | 			(*in.Timestamp).MarshalEasyJSON(out) | ||||||
|  | 		} | ||||||
| 	} | 	} | ||||||
| 	if in.Text != "" { | 	if in.Text != "" { | ||||||
| 		if !first { | 		if !first { | ||||||
|  | |||||||
| @ -36,19 +36,19 @@ func (p *SetIgnoreInputEventsParams) Do(ctxt context.Context, h cdp.Handler) (er | |||||||
| 
 | 
 | ||||||
| // DispatchKeyEventParams dispatches a key event to the page. | // DispatchKeyEventParams dispatches a key event to the page. | ||||||
| type DispatchKeyEventParams struct { | type DispatchKeyEventParams struct { | ||||||
| 	Type                  KeyType  `json:"type"`                            // Type of the key event. | 	Type                  KeyType        `json:"type"`                            // Type of the key event. | ||||||
| 	Modifiers             Modifier `json:"modifiers,omitempty"`             // Bit field representing pressed modifier keys. Alt=1, Ctrl=2, Meta/Command=4, Shift=8 (default: 0). | 	Modifiers             Modifier       `json:"modifiers,omitempty"`             // Bit field representing pressed modifier keys. Alt=1, Ctrl=2, Meta/Command=4, Shift=8 (default: 0). | ||||||
| 	Timestamp             float64  `json:"timestamp,omitempty"`             // Time at which the event occurred. Measured in UTC time in seconds since January 1, 1970 (default: current time). | 	Timestamp             *cdp.Timestamp `json:"timestamp,omitempty"`             // Time at which the event occurred. Measured in UTC time in seconds since January 1, 1970 (default: current time). | ||||||
| 	Text                  string   `json:"text,omitempty"`                  // Text as generated by processing a virtual key code with a keyboard layout. Not needed for for keyUp and rawKeyDown events (default: "") | 	Text                  string         `json:"text,omitempty"`                  // Text as generated by processing a virtual key code with a keyboard layout. Not needed for for keyUp and rawKeyDown events (default: "") | ||||||
| 	UnmodifiedText        string   `json:"unmodifiedText,omitempty"`        // Text that would have been generated by the keyboard if no modifiers were pressed (except for shift). Useful for shortcut (accelerator) key handling (default: ""). | 	UnmodifiedText        string         `json:"unmodifiedText,omitempty"`        // Text that would have been generated by the keyboard if no modifiers were pressed (except for shift). Useful for shortcut (accelerator) key handling (default: ""). | ||||||
| 	KeyIdentifier         string   `json:"keyIdentifier,omitempty"`         // Unique key identifier (e.g., 'U+0041') (default: ""). | 	KeyIdentifier         string         `json:"keyIdentifier,omitempty"`         // Unique key identifier (e.g., 'U+0041') (default: ""). | ||||||
| 	Code                  string   `json:"code,omitempty"`                  // Unique DOM defined string value for each physical key (e.g., 'KeyA') (default: ""). | 	Code                  string         `json:"code,omitempty"`                  // Unique DOM defined string value for each physical key (e.g., 'KeyA') (default: ""). | ||||||
| 	Key                   string   `json:"key,omitempty"`                   // Unique DOM defined string value describing the meaning of the key in the context of active modifiers, keyboard layout, etc (e.g., 'AltGr') (default: ""). | 	Key                   string         `json:"key,omitempty"`                   // Unique DOM defined string value describing the meaning of the key in the context of active modifiers, keyboard layout, etc (e.g., 'AltGr') (default: ""). | ||||||
| 	WindowsVirtualKeyCode int64    `json:"windowsVirtualKeyCode,omitempty"` // Windows virtual key code (default: 0). | 	WindowsVirtualKeyCode int64          `json:"windowsVirtualKeyCode,omitempty"` // Windows virtual key code (default: 0). | ||||||
| 	NativeVirtualKeyCode  int64    `json:"nativeVirtualKeyCode,omitempty"`  // Native virtual key code (default: 0). | 	NativeVirtualKeyCode  int64          `json:"nativeVirtualKeyCode,omitempty"`  // Native virtual key code (default: 0). | ||||||
| 	AutoRepeat            bool     `json:"autoRepeat,omitempty"`            // Whether the event was generated from auto repeat (default: false). | 	AutoRepeat            bool           `json:"autoRepeat,omitempty"`            // Whether the event was generated from auto repeat (default: false). | ||||||
| 	IsKeypad              bool     `json:"isKeypad,omitempty"`              // Whether the event was generated from the keypad (default: false). | 	IsKeypad              bool           `json:"isKeypad,omitempty"`              // Whether the event was generated from the keypad (default: false). | ||||||
| 	IsSystemKey           bool     `json:"isSystemKey,omitempty"`           // Whether the event was a system key event (default: false). | 	IsSystemKey           bool           `json:"isSystemKey,omitempty"`           // Whether the event was a system key event (default: false). | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| // DispatchKeyEvent dispatches a key event to the page. | // DispatchKeyEvent dispatches a key event to the page. | ||||||
| @ -70,7 +70,7 @@ func (p DispatchKeyEventParams) WithModifiers(modifiers Modifier) *DispatchKeyEv | |||||||
| 
 | 
 | ||||||
| // WithTimestamp time at which the event occurred. Measured in UTC time in | // WithTimestamp time at which the event occurred. Measured in UTC time in | ||||||
| // seconds since January 1, 1970 (default: current time). | // seconds since January 1, 1970 (default: current time). | ||||||
| func (p DispatchKeyEventParams) WithTimestamp(timestamp float64) *DispatchKeyEventParams { | func (p DispatchKeyEventParams) WithTimestamp(timestamp *cdp.Timestamp) *DispatchKeyEventParams { | ||||||
| 	p.Timestamp = timestamp | 	p.Timestamp = timestamp | ||||||
| 	return &p | 	return &p | ||||||
| } | } | ||||||
| @ -152,13 +152,13 @@ func (p *DispatchKeyEventParams) Do(ctxt context.Context, h cdp.Handler) (err er | |||||||
| 
 | 
 | ||||||
| // DispatchMouseEventParams dispatches a mouse event to the page. | // DispatchMouseEventParams dispatches a mouse event to the page. | ||||||
| type DispatchMouseEventParams struct { | type DispatchMouseEventParams struct { | ||||||
| 	Type       MouseType  `json:"type"`                 // Type of the mouse event. | 	Type       MouseType      `json:"type"`                 // Type of the mouse event. | ||||||
| 	X          int64      `json:"x"`                    // X coordinate of the event relative to the main frame's viewport. | 	X          int64          `json:"x"`                    // X coordinate of the event relative to the main frame's viewport. | ||||||
| 	Y          int64      `json:"y"`                    // Y coordinate of the event relative to the main frame's viewport. 0 refers to the top of the viewport and Y increases as it proceeds towards the bottom of the viewport. | 	Y          int64          `json:"y"`                    // Y coordinate of the event relative to the main frame's viewport. 0 refers to the top of the viewport and Y increases as it proceeds towards the bottom of the viewport. | ||||||
| 	Modifiers  Modifier   `json:"modifiers,omitempty"`  // Bit field representing pressed modifier keys. Alt=1, Ctrl=2, Meta/Command=4, Shift=8 (default: 0). | 	Modifiers  Modifier       `json:"modifiers,omitempty"`  // Bit field representing pressed modifier keys. Alt=1, Ctrl=2, Meta/Command=4, Shift=8 (default: 0). | ||||||
| 	Timestamp  float64    `json:"timestamp,omitempty"`  // Time at which the event occurred. Measured in UTC time in seconds since January 1, 1970 (default: current time). | 	Timestamp  *cdp.Timestamp `json:"timestamp,omitempty"`  // Time at which the event occurred. Measured in UTC time in seconds since January 1, 1970 (default: current time). | ||||||
| 	Button     ButtonType `json:"button,omitempty"`     // Mouse button (default: "none"). | 	Button     ButtonType     `json:"button,omitempty"`     // Mouse button (default: "none"). | ||||||
| 	ClickCount int64      `json:"clickCount,omitempty"` // Number of times the mouse button was clicked (default: 0). | 	ClickCount int64          `json:"clickCount,omitempty"` // Number of times the mouse button was clicked (default: 0). | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| // DispatchMouseEvent dispatches a mouse event to the page. | // DispatchMouseEvent dispatches a mouse event to the page. | ||||||
| @ -184,7 +184,7 @@ func (p DispatchMouseEventParams) WithModifiers(modifiers Modifier) *DispatchMou | |||||||
| 
 | 
 | ||||||
| // WithTimestamp time at which the event occurred. Measured in UTC time in | // WithTimestamp time at which the event occurred. Measured in UTC time in | ||||||
| // seconds since January 1, 1970 (default: current time). | // seconds since January 1, 1970 (default: current time). | ||||||
| func (p DispatchMouseEventParams) WithTimestamp(timestamp float64) *DispatchMouseEventParams { | func (p DispatchMouseEventParams) WithTimestamp(timestamp *cdp.Timestamp) *DispatchMouseEventParams { | ||||||
| 	p.Timestamp = timestamp | 	p.Timestamp = timestamp | ||||||
| 	return &p | 	return &p | ||||||
| } | } | ||||||
| @ -209,10 +209,10 @@ func (p *DispatchMouseEventParams) Do(ctxt context.Context, h cdp.Handler) (err | |||||||
| 
 | 
 | ||||||
| // DispatchTouchEventParams dispatches a touch event to the page. | // DispatchTouchEventParams dispatches a touch event to the page. | ||||||
| type DispatchTouchEventParams struct { | type DispatchTouchEventParams struct { | ||||||
| 	Type        TouchType     `json:"type"`                // Type of the touch event. | 	Type        TouchType      `json:"type"`                // Type of the touch event. | ||||||
| 	TouchPoints []*TouchPoint `json:"touchPoints"`         // Touch points. | 	TouchPoints []*TouchPoint  `json:"touchPoints"`         // Touch points. | ||||||
| 	Modifiers   Modifier      `json:"modifiers,omitempty"` // Bit field representing pressed modifier keys. Alt=1, Ctrl=2, Meta/Command=4, Shift=8 (default: 0). | 	Modifiers   Modifier       `json:"modifiers,omitempty"` // Bit field representing pressed modifier keys. Alt=1, Ctrl=2, Meta/Command=4, Shift=8 (default: 0). | ||||||
| 	Timestamp   float64       `json:"timestamp,omitempty"` // Time at which the event occurred. Measured in UTC time in seconds since January 1, 1970 (default: current time). | 	Timestamp   *cdp.Timestamp `json:"timestamp,omitempty"` // Time at which the event occurred. Measured in UTC time in seconds since January 1, 1970 (default: current time). | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| // DispatchTouchEvent dispatches a touch event to the page. | // DispatchTouchEvent dispatches a touch event to the page. | ||||||
| @ -236,7 +236,7 @@ func (p DispatchTouchEventParams) WithModifiers(modifiers Modifier) *DispatchTou | |||||||
| 
 | 
 | ||||||
| // WithTimestamp time at which the event occurred. Measured in UTC time in | // WithTimestamp time at which the event occurred. Measured in UTC time in | ||||||
| // seconds since January 1, 1970 (default: current time). | // seconds since January 1, 1970 (default: current time). | ||||||
| func (p DispatchTouchEventParams) WithTimestamp(timestamp float64) *DispatchTouchEventParams { | func (p DispatchTouchEventParams) WithTimestamp(timestamp *cdp.Timestamp) *DispatchTouchEventParams { | ||||||
| 	p.Timestamp = timestamp | 	p.Timestamp = timestamp | ||||||
| 	return &p | 	return &p | ||||||
| } | } | ||||||
| @ -250,15 +250,15 @@ func (p *DispatchTouchEventParams) Do(ctxt context.Context, h cdp.Handler) (err | |||||||
| // EmulateTouchFromMouseEventParams emulates touch event from the mouse event | // EmulateTouchFromMouseEventParams emulates touch event from the mouse event | ||||||
| // parameters. | // parameters. | ||||||
| type EmulateTouchFromMouseEventParams struct { | type EmulateTouchFromMouseEventParams struct { | ||||||
| 	Type       MouseType  `json:"type"`                 // Type of the mouse event. | 	Type       MouseType      `json:"type"`                 // Type of the mouse event. | ||||||
| 	X          int64      `json:"x"`                    // X coordinate of the mouse pointer in DIP. | 	X          int64          `json:"x"`                    // X coordinate of the mouse pointer in DIP. | ||||||
| 	Y          int64      `json:"y"`                    // Y coordinate of the mouse pointer in DIP. | 	Y          int64          `json:"y"`                    // Y coordinate of the mouse pointer in DIP. | ||||||
| 	Timestamp  float64    `json:"timestamp"`            // Time at which the event occurred. Measured in UTC time in seconds since January 1, 1970. | 	Timestamp  *cdp.Timestamp `json:"timestamp"`            // Time at which the event occurred. Measured in UTC time in seconds since January 1, 1970. | ||||||
| 	Button     ButtonType `json:"button"`               // Mouse button. | 	Button     ButtonType     `json:"button"`               // Mouse button. | ||||||
| 	DeltaX     float64    `json:"deltaX,omitempty"`     // X delta in DIP for mouse wheel event (default: 0). | 	DeltaX     float64        `json:"deltaX,omitempty"`     // X delta in DIP for mouse wheel event (default: 0). | ||||||
| 	DeltaY     float64    `json:"deltaY,omitempty"`     // Y delta in DIP for mouse wheel event (default: 0). | 	DeltaY     float64        `json:"deltaY,omitempty"`     // Y delta in DIP for mouse wheel event (default: 0). | ||||||
| 	Modifiers  Modifier   `json:"modifiers,omitempty"`  // Bit field representing pressed modifier keys. Alt=1, Ctrl=2, Meta/Command=4, Shift=8 (default: 0). | 	Modifiers  Modifier       `json:"modifiers,omitempty"`  // Bit field representing pressed modifier keys. Alt=1, Ctrl=2, Meta/Command=4, Shift=8 (default: 0). | ||||||
| 	ClickCount int64      `json:"clickCount,omitempty"` // Number of times the mouse button was clicked (default: 0). | 	ClickCount int64          `json:"clickCount,omitempty"` // Number of times the mouse button was clicked (default: 0). | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| // EmulateTouchFromMouseEvent emulates touch event from the mouse event | // EmulateTouchFromMouseEvent emulates touch event from the mouse event | ||||||
| @ -270,7 +270,7 @@ type EmulateTouchFromMouseEventParams struct { | |||||||
| //   y - Y coordinate of the mouse pointer in DIP. | //   y - Y coordinate of the mouse pointer in DIP. | ||||||
| //   timestamp - Time at which the event occurred. Measured in UTC time in seconds since January 1, 1970. | //   timestamp - Time at which the event occurred. Measured in UTC time in seconds since January 1, 1970. | ||||||
| //   button - Mouse button. | //   button - Mouse button. | ||||||
| func EmulateTouchFromMouseEvent(typeVal MouseType, x int64, y int64, timestamp float64, button ButtonType) *EmulateTouchFromMouseEventParams { | func EmulateTouchFromMouseEvent(typeVal MouseType, x int64, y int64, timestamp *cdp.Timestamp, button ButtonType) *EmulateTouchFromMouseEventParams { | ||||||
| 	return &EmulateTouchFromMouseEventParams{ | 	return &EmulateTouchFromMouseEventParams{ | ||||||
| 		Type:      typeVal, | 		Type:      typeVal, | ||||||
| 		X:         x, | 		X:         x, | ||||||
|  | |||||||
| @ -375,7 +375,15 @@ func easyjsonC5a4559bDecodeGithubComKnqChromedpCdpLog4(in *jlexer.Lexer, out *En | |||||||
| 		case "text": | 		case "text": | ||||||
| 			out.Text = string(in.String()) | 			out.Text = string(in.String()) | ||||||
| 		case "timestamp": | 		case "timestamp": | ||||||
| 			out.Timestamp = runtime.Timestamp(in.Float64()) | 			if in.IsNull() { | ||||||
|  | 				in.Skip() | ||||||
|  | 				out.Timestamp = nil | ||||||
|  | 			} else { | ||||||
|  | 				if out.Timestamp == nil { | ||||||
|  | 					out.Timestamp = new(runtime.Timestamp) | ||||||
|  | 				} | ||||||
|  | 				(*out.Timestamp).UnmarshalEasyJSON(in) | ||||||
|  | 			} | ||||||
| 		case "url": | 		case "url": | ||||||
| 			out.URL = string(in.String()) | 			out.URL = string(in.String()) | ||||||
| 		case "lineNumber": | 		case "lineNumber": | ||||||
| @ -432,13 +440,17 @@ func easyjsonC5a4559bEncodeGithubComKnqChromedpCdpLog4(out *jwriter.Writer, in E | |||||||
| 		out.RawString("\"text\":") | 		out.RawString("\"text\":") | ||||||
| 		out.String(string(in.Text)) | 		out.String(string(in.Text)) | ||||||
| 	} | 	} | ||||||
| 	if in.Timestamp != 0 { | 	if in.Timestamp != nil { | ||||||
| 		if !first { | 		if !first { | ||||||
| 			out.RawByte(',') | 			out.RawByte(',') | ||||||
| 		} | 		} | ||||||
| 		first = false | 		first = false | ||||||
| 		out.RawString("\"timestamp\":") | 		out.RawString("\"timestamp\":") | ||||||
| 		out.Float64(float64(in.Timestamp)) | 		if in.Timestamp == nil { | ||||||
|  | 			out.RawString("null") | ||||||
|  | 		} else { | ||||||
|  | 			(*in.Timestamp).MarshalEasyJSON(out) | ||||||
|  | 		} | ||||||
| 	} | 	} | ||||||
| 	if in.URL != "" { | 	if in.URL != "" { | ||||||
| 		if !first { | 		if !first { | ||||||
|  | |||||||
| @ -17,7 +17,7 @@ type Entry struct { | |||||||
| 	Source           Source              `json:"source,omitempty"`           // Log entry source. | 	Source           Source              `json:"source,omitempty"`           // Log entry source. | ||||||
| 	Level            Level               `json:"level,omitempty"`            // Log entry severity. | 	Level            Level               `json:"level,omitempty"`            // Log entry severity. | ||||||
| 	Text             string              `json:"text,omitempty"`             // Logged text. | 	Text             string              `json:"text,omitempty"`             // Logged text. | ||||||
| 	Timestamp        runtime.Timestamp   `json:"timestamp,omitempty"`        // Timestamp when this entry was added. | 	Timestamp        *runtime.Timestamp  `json:"timestamp,omitempty"`        // Timestamp when this entry was added. | ||||||
| 	URL              string              `json:"url,omitempty"`              // URL of the resource if known. | 	URL              string              `json:"url,omitempty"`              // URL of the resource if known. | ||||||
| 	LineNumber       int64               `json:"lineNumber,omitempty"`       // Line number in the resource. | 	LineNumber       int64               `json:"lineNumber,omitempty"`       // Line number in the resource. | ||||||
| 	StackTrace       *runtime.StackTrace `json:"stackTrace,omitempty"`       // JavaScript stack trace. | 	StackTrace       *runtime.StackTrace `json:"stackTrace,omitempty"`       // JavaScript stack trace. | ||||||
|  | |||||||
| @ -460,7 +460,15 @@ func easyjsonC5a4559bDecodeGithubComKnqChromedpCdpNetwork3(in *jlexer.Lexer, out | |||||||
| 		case "logId": | 		case "logId": | ||||||
| 			out.LogID = string(in.String()) | 			out.LogID = string(in.String()) | ||||||
| 		case "timestamp": | 		case "timestamp": | ||||||
| 			out.Timestamp = cdp.Timestamp(in.Float64()) | 			if in.IsNull() { | ||||||
|  | 				in.Skip() | ||||||
|  | 				out.Timestamp = nil | ||||||
|  | 			} else { | ||||||
|  | 				if out.Timestamp == nil { | ||||||
|  | 					out.Timestamp = new(cdp.Timestamp) | ||||||
|  | 				} | ||||||
|  | 				(*out.Timestamp).UnmarshalEasyJSON(in) | ||||||
|  | 			} | ||||||
| 		case "hashAlgorithm": | 		case "hashAlgorithm": | ||||||
| 			out.HashAlgorithm = string(in.String()) | 			out.HashAlgorithm = string(in.String()) | ||||||
| 		case "signatureAlgorithm": | 		case "signatureAlgorithm": | ||||||
| @ -513,13 +521,17 @@ func easyjsonC5a4559bEncodeGithubComKnqChromedpCdpNetwork3(out *jwriter.Writer, | |||||||
| 		out.RawString("\"logId\":") | 		out.RawString("\"logId\":") | ||||||
| 		out.String(string(in.LogID)) | 		out.String(string(in.LogID)) | ||||||
| 	} | 	} | ||||||
| 	if in.Timestamp != 0 { | 	if in.Timestamp != nil { | ||||||
| 		if !first { | 		if !first { | ||||||
| 			out.RawByte(',') | 			out.RawByte(',') | ||||||
| 		} | 		} | ||||||
| 		first = false | 		first = false | ||||||
| 		out.RawString("\"timestamp\":") | 		out.RawString("\"timestamp\":") | ||||||
| 		out.Float64(float64(in.Timestamp)) | 		if in.Timestamp == nil { | ||||||
|  | 			out.RawString("null") | ||||||
|  | 		} else { | ||||||
|  | 			(*in.Timestamp).MarshalEasyJSON(out) | ||||||
|  | 		} | ||||||
| 	} | 	} | ||||||
| 	if in.HashAlgorithm != "" { | 	if in.HashAlgorithm != "" { | ||||||
| 		if !first { | 		if !first { | ||||||
| @ -930,7 +942,15 @@ func easyjsonC5a4559bDecodeGithubComKnqChromedpCdpNetwork8(in *jlexer.Lexer, out | |||||||
| 		case "sameSite": | 		case "sameSite": | ||||||
| 			(out.SameSite).UnmarshalEasyJSON(in) | 			(out.SameSite).UnmarshalEasyJSON(in) | ||||||
| 		case "expirationDate": | 		case "expirationDate": | ||||||
| 			out.ExpirationDate = cdp.Timestamp(in.Float64()) | 			if in.IsNull() { | ||||||
|  | 				in.Skip() | ||||||
|  | 				out.ExpirationDate = nil | ||||||
|  | 			} else { | ||||||
|  | 				if out.ExpirationDate == nil { | ||||||
|  | 					out.ExpirationDate = new(cdp.Timestamp) | ||||||
|  | 				} | ||||||
|  | 				(*out.ExpirationDate).UnmarshalEasyJSON(in) | ||||||
|  | 			} | ||||||
| 		default: | 		default: | ||||||
| 			in.SkipRecursive() | 			in.SkipRecursive() | ||||||
| 		} | 		} | ||||||
| @ -1003,13 +1023,17 @@ func easyjsonC5a4559bEncodeGithubComKnqChromedpCdpNetwork8(out *jwriter.Writer, | |||||||
| 		out.RawString("\"sameSite\":") | 		out.RawString("\"sameSite\":") | ||||||
| 		(in.SameSite).MarshalEasyJSON(out) | 		(in.SameSite).MarshalEasyJSON(out) | ||||||
| 	} | 	} | ||||||
| 	if in.ExpirationDate != 0 { | 	if in.ExpirationDate != nil { | ||||||
| 		if !first { | 		if !first { | ||||||
| 			out.RawByte(',') | 			out.RawByte(',') | ||||||
| 		} | 		} | ||||||
| 		first = false | 		first = false | ||||||
| 		out.RawString("\"expirationDate\":") | 		out.RawString("\"expirationDate\":") | ||||||
| 		out.Float64(float64(in.ExpirationDate)) | 		if in.ExpirationDate == nil { | ||||||
|  | 			out.RawString("null") | ||||||
|  | 		} else { | ||||||
|  | 			(*in.ExpirationDate).MarshalEasyJSON(out) | ||||||
|  | 		} | ||||||
| 	} | 	} | ||||||
| 	out.RawByte('}') | 	out.RawByte('}') | ||||||
| } | } | ||||||
| @ -1329,9 +1353,25 @@ func easyjsonC5a4559bDecodeGithubComKnqChromedpCdpNetwork12(in *jlexer.Lexer, ou | |||||||
| 		case "issuer": | 		case "issuer": | ||||||
| 			out.Issuer = string(in.String()) | 			out.Issuer = string(in.String()) | ||||||
| 		case "validFrom": | 		case "validFrom": | ||||||
| 			out.ValidFrom = cdp.Timestamp(in.Float64()) | 			if in.IsNull() { | ||||||
|  | 				in.Skip() | ||||||
|  | 				out.ValidFrom = nil | ||||||
|  | 			} else { | ||||||
|  | 				if out.ValidFrom == nil { | ||||||
|  | 					out.ValidFrom = new(cdp.Timestamp) | ||||||
|  | 				} | ||||||
|  | 				(*out.ValidFrom).UnmarshalEasyJSON(in) | ||||||
|  | 			} | ||||||
| 		case "validTo": | 		case "validTo": | ||||||
| 			out.ValidTo = cdp.Timestamp(in.Float64()) | 			if in.IsNull() { | ||||||
|  | 				in.Skip() | ||||||
|  | 				out.ValidTo = nil | ||||||
|  | 			} else { | ||||||
|  | 				if out.ValidTo == nil { | ||||||
|  | 					out.ValidTo = new(cdp.Timestamp) | ||||||
|  | 				} | ||||||
|  | 				(*out.ValidTo).UnmarshalEasyJSON(in) | ||||||
|  | 			} | ||||||
| 		case "signedCertificateTimestampList": | 		case "signedCertificateTimestampList": | ||||||
| 			if in.IsNull() { | 			if in.IsNull() { | ||||||
| 				in.Skip() | 				in.Skip() | ||||||
| @ -1460,21 +1500,29 @@ func easyjsonC5a4559bEncodeGithubComKnqChromedpCdpNetwork12(out *jwriter.Writer, | |||||||
| 		out.RawString("\"issuer\":") | 		out.RawString("\"issuer\":") | ||||||
| 		out.String(string(in.Issuer)) | 		out.String(string(in.Issuer)) | ||||||
| 	} | 	} | ||||||
| 	if in.ValidFrom != 0 { | 	if in.ValidFrom != nil { | ||||||
| 		if !first { | 		if !first { | ||||||
| 			out.RawByte(',') | 			out.RawByte(',') | ||||||
| 		} | 		} | ||||||
| 		first = false | 		first = false | ||||||
| 		out.RawString("\"validFrom\":") | 		out.RawString("\"validFrom\":") | ||||||
| 		out.Float64(float64(in.ValidFrom)) | 		if in.ValidFrom == nil { | ||||||
|  | 			out.RawString("null") | ||||||
|  | 		} else { | ||||||
|  | 			(*in.ValidFrom).MarshalEasyJSON(out) | ||||||
|  | 		} | ||||||
| 	} | 	} | ||||||
| 	if in.ValidTo != 0 { | 	if in.ValidTo != nil { | ||||||
| 		if !first { | 		if !first { | ||||||
| 			out.RawByte(',') | 			out.RawByte(',') | ||||||
| 		} | 		} | ||||||
| 		first = false | 		first = false | ||||||
| 		out.RawString("\"validTo\":") | 		out.RawString("\"validTo\":") | ||||||
| 		out.Float64(float64(in.ValidTo)) | 		if in.ValidTo == nil { | ||||||
|  | 			out.RawString("null") | ||||||
|  | 		} else { | ||||||
|  | 			(*in.ValidTo).MarshalEasyJSON(out) | ||||||
|  | 		} | ||||||
| 	} | 	} | ||||||
| 	if len(in.SignedCertificateTimestampList) != 0 { | 	if len(in.SignedCertificateTimestampList) != 0 { | ||||||
| 		if !first { | 		if !first { | ||||||
| @ -3191,9 +3239,25 @@ func easyjsonC5a4559bDecodeGithubComKnqChromedpCdpNetwork26(in *jlexer.Lexer, ou | |||||||
| 		case "requestId": | 		case "requestId": | ||||||
| 			out.RequestID = RequestID(in.String()) | 			out.RequestID = RequestID(in.String()) | ||||||
| 		case "timestamp": | 		case "timestamp": | ||||||
| 			out.Timestamp = cdp.Timestamp(in.Float64()) | 			if in.IsNull() { | ||||||
|  | 				in.Skip() | ||||||
|  | 				out.Timestamp = nil | ||||||
|  | 			} else { | ||||||
|  | 				if out.Timestamp == nil { | ||||||
|  | 					out.Timestamp = new(cdp.Timestamp) | ||||||
|  | 				} | ||||||
|  | 				(*out.Timestamp).UnmarshalEasyJSON(in) | ||||||
|  | 			} | ||||||
| 		case "wallTime": | 		case "wallTime": | ||||||
| 			out.WallTime = cdp.Timestamp(in.Float64()) | 			if in.IsNull() { | ||||||
|  | 				in.Skip() | ||||||
|  | 				out.WallTime = nil | ||||||
|  | 			} else { | ||||||
|  | 				if out.WallTime == nil { | ||||||
|  | 					out.WallTime = new(cdp.Timestamp) | ||||||
|  | 				} | ||||||
|  | 				(*out.WallTime).UnmarshalEasyJSON(in) | ||||||
|  | 			} | ||||||
| 		case "request": | 		case "request": | ||||||
| 			if in.IsNull() { | 			if in.IsNull() { | ||||||
| 				in.Skip() | 				in.Skip() | ||||||
| @ -3226,21 +3290,29 @@ func easyjsonC5a4559bEncodeGithubComKnqChromedpCdpNetwork26(out *jwriter.Writer, | |||||||
| 		out.RawString("\"requestId\":") | 		out.RawString("\"requestId\":") | ||||||
| 		out.String(string(in.RequestID)) | 		out.String(string(in.RequestID)) | ||||||
| 	} | 	} | ||||||
| 	if in.Timestamp != 0 { | 	if in.Timestamp != nil { | ||||||
| 		if !first { | 		if !first { | ||||||
| 			out.RawByte(',') | 			out.RawByte(',') | ||||||
| 		} | 		} | ||||||
| 		first = false | 		first = false | ||||||
| 		out.RawString("\"timestamp\":") | 		out.RawString("\"timestamp\":") | ||||||
| 		out.Float64(float64(in.Timestamp)) | 		if in.Timestamp == nil { | ||||||
|  | 			out.RawString("null") | ||||||
|  | 		} else { | ||||||
|  | 			(*in.Timestamp).MarshalEasyJSON(out) | ||||||
|  | 		} | ||||||
| 	} | 	} | ||||||
| 	if in.WallTime != 0 { | 	if in.WallTime != nil { | ||||||
| 		if !first { | 		if !first { | ||||||
| 			out.RawByte(',') | 			out.RawByte(',') | ||||||
| 		} | 		} | ||||||
| 		first = false | 		first = false | ||||||
| 		out.RawString("\"wallTime\":") | 		out.RawString("\"wallTime\":") | ||||||
| 		out.Float64(float64(in.WallTime)) | 		if in.WallTime == nil { | ||||||
|  | 			out.RawString("null") | ||||||
|  | 		} else { | ||||||
|  | 			(*in.WallTime).MarshalEasyJSON(out) | ||||||
|  | 		} | ||||||
| 	} | 	} | ||||||
| 	if in.Request != nil { | 	if in.Request != nil { | ||||||
| 		if !first { | 		if !first { | ||||||
| @ -3302,7 +3374,15 @@ func easyjsonC5a4559bDecodeGithubComKnqChromedpCdpNetwork27(in *jlexer.Lexer, ou | |||||||
| 		case "requestId": | 		case "requestId": | ||||||
| 			out.RequestID = RequestID(in.String()) | 			out.RequestID = RequestID(in.String()) | ||||||
| 		case "timestamp": | 		case "timestamp": | ||||||
| 			out.Timestamp = cdp.Timestamp(in.Float64()) | 			if in.IsNull() { | ||||||
|  | 				in.Skip() | ||||||
|  | 				out.Timestamp = nil | ||||||
|  | 			} else { | ||||||
|  | 				if out.Timestamp == nil { | ||||||
|  | 					out.Timestamp = new(cdp.Timestamp) | ||||||
|  | 				} | ||||||
|  | 				(*out.Timestamp).UnmarshalEasyJSON(in) | ||||||
|  | 			} | ||||||
| 		case "response": | 		case "response": | ||||||
| 			if in.IsNull() { | 			if in.IsNull() { | ||||||
| 				in.Skip() | 				in.Skip() | ||||||
| @ -3335,13 +3415,17 @@ func easyjsonC5a4559bEncodeGithubComKnqChromedpCdpNetwork27(out *jwriter.Writer, | |||||||
| 		out.RawString("\"requestId\":") | 		out.RawString("\"requestId\":") | ||||||
| 		out.String(string(in.RequestID)) | 		out.String(string(in.RequestID)) | ||||||
| 	} | 	} | ||||||
| 	if in.Timestamp != 0 { | 	if in.Timestamp != nil { | ||||||
| 		if !first { | 		if !first { | ||||||
| 			out.RawByte(',') | 			out.RawByte(',') | ||||||
| 		} | 		} | ||||||
| 		first = false | 		first = false | ||||||
| 		out.RawString("\"timestamp\":") | 		out.RawString("\"timestamp\":") | ||||||
| 		out.Float64(float64(in.Timestamp)) | 		if in.Timestamp == nil { | ||||||
|  | 			out.RawString("null") | ||||||
|  | 		} else { | ||||||
|  | 			(*in.Timestamp).MarshalEasyJSON(out) | ||||||
|  | 		} | ||||||
| 	} | 	} | ||||||
| 	if in.Response != nil { | 	if in.Response != nil { | ||||||
| 		if !first { | 		if !first { | ||||||
| @ -3403,7 +3487,15 @@ func easyjsonC5a4559bDecodeGithubComKnqChromedpCdpNetwork28(in *jlexer.Lexer, ou | |||||||
| 		case "requestId": | 		case "requestId": | ||||||
| 			out.RequestID = RequestID(in.String()) | 			out.RequestID = RequestID(in.String()) | ||||||
| 		case "timestamp": | 		case "timestamp": | ||||||
| 			out.Timestamp = cdp.Timestamp(in.Float64()) | 			if in.IsNull() { | ||||||
|  | 				in.Skip() | ||||||
|  | 				out.Timestamp = nil | ||||||
|  | 			} else { | ||||||
|  | 				if out.Timestamp == nil { | ||||||
|  | 					out.Timestamp = new(cdp.Timestamp) | ||||||
|  | 				} | ||||||
|  | 				(*out.Timestamp).UnmarshalEasyJSON(in) | ||||||
|  | 			} | ||||||
| 		case "response": | 		case "response": | ||||||
| 			if in.IsNull() { | 			if in.IsNull() { | ||||||
| 				in.Skip() | 				in.Skip() | ||||||
| @ -3436,13 +3528,17 @@ func easyjsonC5a4559bEncodeGithubComKnqChromedpCdpNetwork28(out *jwriter.Writer, | |||||||
| 		out.RawString("\"requestId\":") | 		out.RawString("\"requestId\":") | ||||||
| 		out.String(string(in.RequestID)) | 		out.String(string(in.RequestID)) | ||||||
| 	} | 	} | ||||||
| 	if in.Timestamp != 0 { | 	if in.Timestamp != nil { | ||||||
| 		if !first { | 		if !first { | ||||||
| 			out.RawByte(',') | 			out.RawByte(',') | ||||||
| 		} | 		} | ||||||
| 		first = false | 		first = false | ||||||
| 		out.RawString("\"timestamp\":") | 		out.RawString("\"timestamp\":") | ||||||
| 		out.Float64(float64(in.Timestamp)) | 		if in.Timestamp == nil { | ||||||
|  | 			out.RawString("null") | ||||||
|  | 		} else { | ||||||
|  | 			(*in.Timestamp).MarshalEasyJSON(out) | ||||||
|  | 		} | ||||||
| 	} | 	} | ||||||
| 	if in.Response != nil { | 	if in.Response != nil { | ||||||
| 		if !first { | 		if !first { | ||||||
| @ -3504,7 +3600,15 @@ func easyjsonC5a4559bDecodeGithubComKnqChromedpCdpNetwork29(in *jlexer.Lexer, ou | |||||||
| 		case "requestId": | 		case "requestId": | ||||||
| 			out.RequestID = RequestID(in.String()) | 			out.RequestID = RequestID(in.String()) | ||||||
| 		case "timestamp": | 		case "timestamp": | ||||||
| 			out.Timestamp = cdp.Timestamp(in.Float64()) | 			if in.IsNull() { | ||||||
|  | 				in.Skip() | ||||||
|  | 				out.Timestamp = nil | ||||||
|  | 			} else { | ||||||
|  | 				if out.Timestamp == nil { | ||||||
|  | 					out.Timestamp = new(cdp.Timestamp) | ||||||
|  | 				} | ||||||
|  | 				(*out.Timestamp).UnmarshalEasyJSON(in) | ||||||
|  | 			} | ||||||
| 		case "response": | 		case "response": | ||||||
| 			if in.IsNull() { | 			if in.IsNull() { | ||||||
| 				in.Skip() | 				in.Skip() | ||||||
| @ -3537,13 +3641,17 @@ func easyjsonC5a4559bEncodeGithubComKnqChromedpCdpNetwork29(out *jwriter.Writer, | |||||||
| 		out.RawString("\"requestId\":") | 		out.RawString("\"requestId\":") | ||||||
| 		out.String(string(in.RequestID)) | 		out.String(string(in.RequestID)) | ||||||
| 	} | 	} | ||||||
| 	if in.Timestamp != 0 { | 	if in.Timestamp != nil { | ||||||
| 		if !first { | 		if !first { | ||||||
| 			out.RawByte(',') | 			out.RawByte(',') | ||||||
| 		} | 		} | ||||||
| 		first = false | 		first = false | ||||||
| 		out.RawString("\"timestamp\":") | 		out.RawString("\"timestamp\":") | ||||||
| 		out.Float64(float64(in.Timestamp)) | 		if in.Timestamp == nil { | ||||||
|  | 			out.RawString("null") | ||||||
|  | 		} else { | ||||||
|  | 			(*in.Timestamp).MarshalEasyJSON(out) | ||||||
|  | 		} | ||||||
| 	} | 	} | ||||||
| 	if in.Response != nil { | 	if in.Response != nil { | ||||||
| 		if !first { | 		if !first { | ||||||
| @ -3605,7 +3713,15 @@ func easyjsonC5a4559bDecodeGithubComKnqChromedpCdpNetwork30(in *jlexer.Lexer, ou | |||||||
| 		case "requestId": | 		case "requestId": | ||||||
| 			out.RequestID = RequestID(in.String()) | 			out.RequestID = RequestID(in.String()) | ||||||
| 		case "timestamp": | 		case "timestamp": | ||||||
| 			out.Timestamp = cdp.Timestamp(in.Float64()) | 			if in.IsNull() { | ||||||
|  | 				in.Skip() | ||||||
|  | 				out.Timestamp = nil | ||||||
|  | 			} else { | ||||||
|  | 				if out.Timestamp == nil { | ||||||
|  | 					out.Timestamp = new(cdp.Timestamp) | ||||||
|  | 				} | ||||||
|  | 				(*out.Timestamp).UnmarshalEasyJSON(in) | ||||||
|  | 			} | ||||||
| 		case "errorMessage": | 		case "errorMessage": | ||||||
| 			out.ErrorMessage = string(in.String()) | 			out.ErrorMessage = string(in.String()) | ||||||
| 		default: | 		default: | ||||||
| @ -3630,13 +3746,17 @@ func easyjsonC5a4559bEncodeGithubComKnqChromedpCdpNetwork30(out *jwriter.Writer, | |||||||
| 		out.RawString("\"requestId\":") | 		out.RawString("\"requestId\":") | ||||||
| 		out.String(string(in.RequestID)) | 		out.String(string(in.RequestID)) | ||||||
| 	} | 	} | ||||||
| 	if in.Timestamp != 0 { | 	if in.Timestamp != nil { | ||||||
| 		if !first { | 		if !first { | ||||||
| 			out.RawByte(',') | 			out.RawByte(',') | ||||||
| 		} | 		} | ||||||
| 		first = false | 		first = false | ||||||
| 		out.RawString("\"timestamp\":") | 		out.RawString("\"timestamp\":") | ||||||
| 		out.Float64(float64(in.Timestamp)) | 		if in.Timestamp == nil { | ||||||
|  | 			out.RawString("null") | ||||||
|  | 		} else { | ||||||
|  | 			(*in.Timestamp).MarshalEasyJSON(out) | ||||||
|  | 		} | ||||||
| 	} | 	} | ||||||
| 	if in.ErrorMessage != "" { | 	if in.ErrorMessage != "" { | ||||||
| 		if !first { | 		if !first { | ||||||
| @ -3795,7 +3915,15 @@ func easyjsonC5a4559bDecodeGithubComKnqChromedpCdpNetwork32(in *jlexer.Lexer, ou | |||||||
| 		case "requestId": | 		case "requestId": | ||||||
| 			out.RequestID = RequestID(in.String()) | 			out.RequestID = RequestID(in.String()) | ||||||
| 		case "timestamp": | 		case "timestamp": | ||||||
| 			out.Timestamp = cdp.Timestamp(in.Float64()) | 			if in.IsNull() { | ||||||
|  | 				in.Skip() | ||||||
|  | 				out.Timestamp = nil | ||||||
|  | 			} else { | ||||||
|  | 				if out.Timestamp == nil { | ||||||
|  | 					out.Timestamp = new(cdp.Timestamp) | ||||||
|  | 				} | ||||||
|  | 				(*out.Timestamp).UnmarshalEasyJSON(in) | ||||||
|  | 			} | ||||||
| 		default: | 		default: | ||||||
| 			in.SkipRecursive() | 			in.SkipRecursive() | ||||||
| 		} | 		} | ||||||
| @ -3818,13 +3946,17 @@ func easyjsonC5a4559bEncodeGithubComKnqChromedpCdpNetwork32(out *jwriter.Writer, | |||||||
| 		out.RawString("\"requestId\":") | 		out.RawString("\"requestId\":") | ||||||
| 		out.String(string(in.RequestID)) | 		out.String(string(in.RequestID)) | ||||||
| 	} | 	} | ||||||
| 	if in.Timestamp != 0 { | 	if in.Timestamp != nil { | ||||||
| 		if !first { | 		if !first { | ||||||
| 			out.RawByte(',') | 			out.RawByte(',') | ||||||
| 		} | 		} | ||||||
| 		first = false | 		first = false | ||||||
| 		out.RawString("\"timestamp\":") | 		out.RawString("\"timestamp\":") | ||||||
| 		out.Float64(float64(in.Timestamp)) | 		if in.Timestamp == nil { | ||||||
|  | 			out.RawString("null") | ||||||
|  | 		} else { | ||||||
|  | 			(*in.Timestamp).MarshalEasyJSON(out) | ||||||
|  | 		} | ||||||
| 	} | 	} | ||||||
| 	out.RawByte('}') | 	out.RawByte('}') | ||||||
| } | } | ||||||
| @ -3878,7 +4010,15 @@ func easyjsonC5a4559bDecodeGithubComKnqChromedpCdpNetwork33(in *jlexer.Lexer, ou | |||||||
| 		case "loaderId": | 		case "loaderId": | ||||||
| 			out.LoaderID = cdp.LoaderID(in.String()) | 			out.LoaderID = cdp.LoaderID(in.String()) | ||||||
| 		case "timestamp": | 		case "timestamp": | ||||||
| 			out.Timestamp = cdp.Timestamp(in.Float64()) | 			if in.IsNull() { | ||||||
|  | 				in.Skip() | ||||||
|  | 				out.Timestamp = nil | ||||||
|  | 			} else { | ||||||
|  | 				if out.Timestamp == nil { | ||||||
|  | 					out.Timestamp = new(cdp.Timestamp) | ||||||
|  | 				} | ||||||
|  | 				(*out.Timestamp).UnmarshalEasyJSON(in) | ||||||
|  | 			} | ||||||
| 		case "type": | 		case "type": | ||||||
| 			(out.Type).UnmarshalEasyJSON(in) | 			(out.Type).UnmarshalEasyJSON(in) | ||||||
| 		case "response": | 		case "response": | ||||||
| @ -3929,13 +4069,17 @@ func easyjsonC5a4559bEncodeGithubComKnqChromedpCdpNetwork33(out *jwriter.Writer, | |||||||
| 		out.RawString("\"loaderId\":") | 		out.RawString("\"loaderId\":") | ||||||
| 		out.String(string(in.LoaderID)) | 		out.String(string(in.LoaderID)) | ||||||
| 	} | 	} | ||||||
| 	if in.Timestamp != 0 { | 	if in.Timestamp != nil { | ||||||
| 		if !first { | 		if !first { | ||||||
| 			out.RawByte(',') | 			out.RawByte(',') | ||||||
| 		} | 		} | ||||||
| 		first = false | 		first = false | ||||||
| 		out.RawString("\"timestamp\":") | 		out.RawString("\"timestamp\":") | ||||||
| 		out.Float64(float64(in.Timestamp)) | 		if in.Timestamp == nil { | ||||||
|  | 			out.RawString("null") | ||||||
|  | 		} else { | ||||||
|  | 			(*in.Timestamp).MarshalEasyJSON(out) | ||||||
|  | 		} | ||||||
| 	} | 	} | ||||||
| 	if in.Type != "" { | 	if in.Type != "" { | ||||||
| 		if !first { | 		if !first { | ||||||
| @ -4007,7 +4151,15 @@ func easyjsonC5a4559bDecodeGithubComKnqChromedpCdpNetwork34(in *jlexer.Lexer, ou | |||||||
| 		case "newPriority": | 		case "newPriority": | ||||||
| 			(out.NewPriority).UnmarshalEasyJSON(in) | 			(out.NewPriority).UnmarshalEasyJSON(in) | ||||||
| 		case "timestamp": | 		case "timestamp": | ||||||
| 			out.Timestamp = cdp.Timestamp(in.Float64()) | 			if in.IsNull() { | ||||||
|  | 				in.Skip() | ||||||
|  | 				out.Timestamp = nil | ||||||
|  | 			} else { | ||||||
|  | 				if out.Timestamp == nil { | ||||||
|  | 					out.Timestamp = new(cdp.Timestamp) | ||||||
|  | 				} | ||||||
|  | 				(*out.Timestamp).UnmarshalEasyJSON(in) | ||||||
|  | 			} | ||||||
| 		default: | 		default: | ||||||
| 			in.SkipRecursive() | 			in.SkipRecursive() | ||||||
| 		} | 		} | ||||||
| @ -4038,13 +4190,17 @@ func easyjsonC5a4559bEncodeGithubComKnqChromedpCdpNetwork34(out *jwriter.Writer, | |||||||
| 		out.RawString("\"newPriority\":") | 		out.RawString("\"newPriority\":") | ||||||
| 		(in.NewPriority).MarshalEasyJSON(out) | 		(in.NewPriority).MarshalEasyJSON(out) | ||||||
| 	} | 	} | ||||||
| 	if in.Timestamp != 0 { | 	if in.Timestamp != nil { | ||||||
| 		if !first { | 		if !first { | ||||||
| 			out.RawByte(',') | 			out.RawByte(',') | ||||||
| 		} | 		} | ||||||
| 		first = false | 		first = false | ||||||
| 		out.RawString("\"timestamp\":") | 		out.RawString("\"timestamp\":") | ||||||
| 		out.Float64(float64(in.Timestamp)) | 		if in.Timestamp == nil { | ||||||
|  | 			out.RawString("null") | ||||||
|  | 		} else { | ||||||
|  | 			(*in.Timestamp).MarshalEasyJSON(out) | ||||||
|  | 		} | ||||||
| 	} | 	} | ||||||
| 	out.RawByte('}') | 	out.RawByte('}') | ||||||
| } | } | ||||||
| @ -4110,9 +4266,25 @@ func easyjsonC5a4559bDecodeGithubComKnqChromedpCdpNetwork35(in *jlexer.Lexer, ou | |||||||
| 				(*out.Request).UnmarshalEasyJSON(in) | 				(*out.Request).UnmarshalEasyJSON(in) | ||||||
| 			} | 			} | ||||||
| 		case "timestamp": | 		case "timestamp": | ||||||
| 			out.Timestamp = cdp.Timestamp(in.Float64()) | 			if in.IsNull() { | ||||||
|  | 				in.Skip() | ||||||
|  | 				out.Timestamp = nil | ||||||
|  | 			} else { | ||||||
|  | 				if out.Timestamp == nil { | ||||||
|  | 					out.Timestamp = new(cdp.Timestamp) | ||||||
|  | 				} | ||||||
|  | 				(*out.Timestamp).UnmarshalEasyJSON(in) | ||||||
|  | 			} | ||||||
| 		case "wallTime": | 		case "wallTime": | ||||||
| 			out.WallTime = cdp.Timestamp(in.Float64()) | 			if in.IsNull() { | ||||||
|  | 				in.Skip() | ||||||
|  | 				out.WallTime = nil | ||||||
|  | 			} else { | ||||||
|  | 				if out.WallTime == nil { | ||||||
|  | 					out.WallTime = new(cdp.Timestamp) | ||||||
|  | 				} | ||||||
|  | 				(*out.WallTime).UnmarshalEasyJSON(in) | ||||||
|  | 			} | ||||||
| 		case "initiator": | 		case "initiator": | ||||||
| 			if in.IsNull() { | 			if in.IsNull() { | ||||||
| 				in.Skip() | 				in.Skip() | ||||||
| @ -4193,21 +4365,29 @@ func easyjsonC5a4559bEncodeGithubComKnqChromedpCdpNetwork35(out *jwriter.Writer, | |||||||
| 			(*in.Request).MarshalEasyJSON(out) | 			(*in.Request).MarshalEasyJSON(out) | ||||||
| 		} | 		} | ||||||
| 	} | 	} | ||||||
| 	if in.Timestamp != 0 { | 	if in.Timestamp != nil { | ||||||
| 		if !first { | 		if !first { | ||||||
| 			out.RawByte(',') | 			out.RawByte(',') | ||||||
| 		} | 		} | ||||||
| 		first = false | 		first = false | ||||||
| 		out.RawString("\"timestamp\":") | 		out.RawString("\"timestamp\":") | ||||||
| 		out.Float64(float64(in.Timestamp)) | 		if in.Timestamp == nil { | ||||||
|  | 			out.RawString("null") | ||||||
|  | 		} else { | ||||||
|  | 			(*in.Timestamp).MarshalEasyJSON(out) | ||||||
|  | 		} | ||||||
| 	} | 	} | ||||||
| 	if in.WallTime != 0 { | 	if in.WallTime != nil { | ||||||
| 		if !first { | 		if !first { | ||||||
| 			out.RawByte(',') | 			out.RawByte(',') | ||||||
| 		} | 		} | ||||||
| 		first = false | 		first = false | ||||||
| 		out.RawString("\"wallTime\":") | 		out.RawString("\"wallTime\":") | ||||||
| 		out.Float64(float64(in.WallTime)) | 		if in.WallTime == nil { | ||||||
|  | 			out.RawString("null") | ||||||
|  | 		} else { | ||||||
|  | 			(*in.WallTime).MarshalEasyJSON(out) | ||||||
|  | 		} | ||||||
| 	} | 	} | ||||||
| 	if in.Initiator != nil { | 	if in.Initiator != nil { | ||||||
| 		if !first { | 		if !first { | ||||||
| @ -4556,7 +4736,15 @@ func easyjsonC5a4559bDecodeGithubComKnqChromedpCdpNetwork38(in *jlexer.Lexer, ou | |||||||
| 		case "requestId": | 		case "requestId": | ||||||
| 			out.RequestID = RequestID(in.String()) | 			out.RequestID = RequestID(in.String()) | ||||||
| 		case "timestamp": | 		case "timestamp": | ||||||
| 			out.Timestamp = cdp.Timestamp(in.Float64()) | 			if in.IsNull() { | ||||||
|  | 				in.Skip() | ||||||
|  | 				out.Timestamp = nil | ||||||
|  | 			} else { | ||||||
|  | 				if out.Timestamp == nil { | ||||||
|  | 					out.Timestamp = new(cdp.Timestamp) | ||||||
|  | 				} | ||||||
|  | 				(*out.Timestamp).UnmarshalEasyJSON(in) | ||||||
|  | 			} | ||||||
| 		case "encodedDataLength": | 		case "encodedDataLength": | ||||||
| 			out.EncodedDataLength = float64(in.Float64()) | 			out.EncodedDataLength = float64(in.Float64()) | ||||||
| 		default: | 		default: | ||||||
| @ -4581,13 +4769,17 @@ func easyjsonC5a4559bEncodeGithubComKnqChromedpCdpNetwork38(out *jwriter.Writer, | |||||||
| 		out.RawString("\"requestId\":") | 		out.RawString("\"requestId\":") | ||||||
| 		out.String(string(in.RequestID)) | 		out.String(string(in.RequestID)) | ||||||
| 	} | 	} | ||||||
| 	if in.Timestamp != 0 { | 	if in.Timestamp != nil { | ||||||
| 		if !first { | 		if !first { | ||||||
| 			out.RawByte(',') | 			out.RawByte(',') | ||||||
| 		} | 		} | ||||||
| 		first = false | 		first = false | ||||||
| 		out.RawString("\"timestamp\":") | 		out.RawString("\"timestamp\":") | ||||||
| 		out.Float64(float64(in.Timestamp)) | 		if in.Timestamp == nil { | ||||||
|  | 			out.RawString("null") | ||||||
|  | 		} else { | ||||||
|  | 			(*in.Timestamp).MarshalEasyJSON(out) | ||||||
|  | 		} | ||||||
| 	} | 	} | ||||||
| 	if in.EncodedDataLength != 0 { | 	if in.EncodedDataLength != 0 { | ||||||
| 		if !first { | 		if !first { | ||||||
| @ -4645,7 +4837,15 @@ func easyjsonC5a4559bDecodeGithubComKnqChromedpCdpNetwork39(in *jlexer.Lexer, ou | |||||||
| 		case "requestId": | 		case "requestId": | ||||||
| 			out.RequestID = RequestID(in.String()) | 			out.RequestID = RequestID(in.String()) | ||||||
| 		case "timestamp": | 		case "timestamp": | ||||||
| 			out.Timestamp = cdp.Timestamp(in.Float64()) | 			if in.IsNull() { | ||||||
|  | 				in.Skip() | ||||||
|  | 				out.Timestamp = nil | ||||||
|  | 			} else { | ||||||
|  | 				if out.Timestamp == nil { | ||||||
|  | 					out.Timestamp = new(cdp.Timestamp) | ||||||
|  | 				} | ||||||
|  | 				(*out.Timestamp).UnmarshalEasyJSON(in) | ||||||
|  | 			} | ||||||
| 		case "type": | 		case "type": | ||||||
| 			(out.Type).UnmarshalEasyJSON(in) | 			(out.Type).UnmarshalEasyJSON(in) | ||||||
| 		case "errorText": | 		case "errorText": | ||||||
| @ -4676,13 +4876,17 @@ func easyjsonC5a4559bEncodeGithubComKnqChromedpCdpNetwork39(out *jwriter.Writer, | |||||||
| 		out.RawString("\"requestId\":") | 		out.RawString("\"requestId\":") | ||||||
| 		out.String(string(in.RequestID)) | 		out.String(string(in.RequestID)) | ||||||
| 	} | 	} | ||||||
| 	if in.Timestamp != 0 { | 	if in.Timestamp != nil { | ||||||
| 		if !first { | 		if !first { | ||||||
| 			out.RawByte(',') | 			out.RawByte(',') | ||||||
| 		} | 		} | ||||||
| 		first = false | 		first = false | ||||||
| 		out.RawString("\"timestamp\":") | 		out.RawString("\"timestamp\":") | ||||||
| 		out.Float64(float64(in.Timestamp)) | 		if in.Timestamp == nil { | ||||||
|  | 			out.RawString("null") | ||||||
|  | 		} else { | ||||||
|  | 			(*in.Timestamp).MarshalEasyJSON(out) | ||||||
|  | 		} | ||||||
| 	} | 	} | ||||||
| 	if in.Type != "" { | 	if in.Type != "" { | ||||||
| 		if !first { | 		if !first { | ||||||
| @ -4764,7 +4968,15 @@ func easyjsonC5a4559bDecodeGithubComKnqChromedpCdpNetwork40(in *jlexer.Lexer, ou | |||||||
| 		case "requestId": | 		case "requestId": | ||||||
| 			out.RequestID = RequestID(in.String()) | 			out.RequestID = RequestID(in.String()) | ||||||
| 		case "timestamp": | 		case "timestamp": | ||||||
| 			out.Timestamp = cdp.Timestamp(in.Float64()) | 			if in.IsNull() { | ||||||
|  | 				in.Skip() | ||||||
|  | 				out.Timestamp = nil | ||||||
|  | 			} else { | ||||||
|  | 				if out.Timestamp == nil { | ||||||
|  | 					out.Timestamp = new(cdp.Timestamp) | ||||||
|  | 				} | ||||||
|  | 				(*out.Timestamp).UnmarshalEasyJSON(in) | ||||||
|  | 			} | ||||||
| 		case "eventName": | 		case "eventName": | ||||||
| 			out.EventName = string(in.String()) | 			out.EventName = string(in.String()) | ||||||
| 		case "eventId": | 		case "eventId": | ||||||
| @ -4793,13 +5005,17 @@ func easyjsonC5a4559bEncodeGithubComKnqChromedpCdpNetwork40(out *jwriter.Writer, | |||||||
| 		out.RawString("\"requestId\":") | 		out.RawString("\"requestId\":") | ||||||
| 		out.String(string(in.RequestID)) | 		out.String(string(in.RequestID)) | ||||||
| 	} | 	} | ||||||
| 	if in.Timestamp != 0 { | 	if in.Timestamp != nil { | ||||||
| 		if !first { | 		if !first { | ||||||
| 			out.RawByte(',') | 			out.RawByte(',') | ||||||
| 		} | 		} | ||||||
| 		first = false | 		first = false | ||||||
| 		out.RawString("\"timestamp\":") | 		out.RawString("\"timestamp\":") | ||||||
| 		out.Float64(float64(in.Timestamp)) | 		if in.Timestamp == nil { | ||||||
|  | 			out.RawString("null") | ||||||
|  | 		} else { | ||||||
|  | 			(*in.Timestamp).MarshalEasyJSON(out) | ||||||
|  | 		} | ||||||
| 	} | 	} | ||||||
| 	if in.EventName != "" { | 	if in.EventName != "" { | ||||||
| 		if !first { | 		if !first { | ||||||
| @ -4873,7 +5089,15 @@ func easyjsonC5a4559bDecodeGithubComKnqChromedpCdpNetwork41(in *jlexer.Lexer, ou | |||||||
| 		case "requestId": | 		case "requestId": | ||||||
| 			out.RequestID = RequestID(in.String()) | 			out.RequestID = RequestID(in.String()) | ||||||
| 		case "timestamp": | 		case "timestamp": | ||||||
| 			out.Timestamp = cdp.Timestamp(in.Float64()) | 			if in.IsNull() { | ||||||
|  | 				in.Skip() | ||||||
|  | 				out.Timestamp = nil | ||||||
|  | 			} else { | ||||||
|  | 				if out.Timestamp == nil { | ||||||
|  | 					out.Timestamp = new(cdp.Timestamp) | ||||||
|  | 				} | ||||||
|  | 				(*out.Timestamp).UnmarshalEasyJSON(in) | ||||||
|  | 			} | ||||||
| 		case "dataLength": | 		case "dataLength": | ||||||
| 			out.DataLength = int64(in.Int64()) | 			out.DataLength = int64(in.Int64()) | ||||||
| 		case "encodedDataLength": | 		case "encodedDataLength": | ||||||
| @ -4900,13 +5124,17 @@ func easyjsonC5a4559bEncodeGithubComKnqChromedpCdpNetwork41(out *jwriter.Writer, | |||||||
| 		out.RawString("\"requestId\":") | 		out.RawString("\"requestId\":") | ||||||
| 		out.String(string(in.RequestID)) | 		out.String(string(in.RequestID)) | ||||||
| 	} | 	} | ||||||
| 	if in.Timestamp != 0 { | 	if in.Timestamp != nil { | ||||||
| 		if !first { | 		if !first { | ||||||
| 			out.RawByte(',') | 			out.RawByte(',') | ||||||
| 		} | 		} | ||||||
| 		first = false | 		first = false | ||||||
| 		out.RawString("\"timestamp\":") | 		out.RawString("\"timestamp\":") | ||||||
| 		out.Float64(float64(in.Timestamp)) | 		if in.Timestamp == nil { | ||||||
|  | 			out.RawString("null") | ||||||
|  | 		} else { | ||||||
|  | 			(*in.Timestamp).MarshalEasyJSON(out) | ||||||
|  | 		} | ||||||
| 	} | 	} | ||||||
| 	if in.DataLength != 0 { | 	if in.DataLength != 0 { | ||||||
| 		if !first { | 		if !first { | ||||||
|  | |||||||
| @ -12,7 +12,7 @@ import ( | |||||||
| type EventResourceChangedPriority struct { | type EventResourceChangedPriority struct { | ||||||
| 	RequestID   RequestID        `json:"requestId,omitempty"`   // Request identifier. | 	RequestID   RequestID        `json:"requestId,omitempty"`   // Request identifier. | ||||||
| 	NewPriority ResourcePriority `json:"newPriority,omitempty"` // New priority | 	NewPriority ResourcePriority `json:"newPriority,omitempty"` // New priority | ||||||
| 	Timestamp   cdp.Timestamp    `json:"timestamp,omitempty"`   // Timestamp. | 	Timestamp   *cdp.Timestamp   `json:"timestamp,omitempty"`   // Timestamp. | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| // EventRequestWillBeSent fired when page is about to send HTTP request. | // EventRequestWillBeSent fired when page is about to send HTTP request. | ||||||
| @ -22,8 +22,8 @@ type EventRequestWillBeSent struct { | |||||||
| 	LoaderID         cdp.LoaderID      `json:"loaderId,omitempty"`         // Loader identifier. | 	LoaderID         cdp.LoaderID      `json:"loaderId,omitempty"`         // Loader identifier. | ||||||
| 	DocumentURL      string            `json:"documentURL,omitempty"`      // URL of the document this request is loaded for. | 	DocumentURL      string            `json:"documentURL,omitempty"`      // URL of the document this request is loaded for. | ||||||
| 	Request          *Request          `json:"request,omitempty"`          // Request data. | 	Request          *Request          `json:"request,omitempty"`          // Request data. | ||||||
| 	Timestamp        cdp.Timestamp     `json:"timestamp,omitempty"`        // Timestamp. | 	Timestamp        *cdp.Timestamp    `json:"timestamp,omitempty"`        // Timestamp. | ||||||
| 	WallTime         cdp.Timestamp     `json:"wallTime,omitempty"`         // UTC Timestamp. | 	WallTime         *cdp.Timestamp    `json:"wallTime,omitempty"`         // UTC Timestamp. | ||||||
| 	Initiator        *Initiator        `json:"initiator,omitempty"`        // Request initiator. | 	Initiator        *Initiator        `json:"initiator,omitempty"`        // Request initiator. | ||||||
| 	RedirectResponse *Response         `json:"redirectResponse,omitempty"` // Redirect response data. | 	RedirectResponse *Response         `json:"redirectResponse,omitempty"` // Redirect response data. | ||||||
| 	Type             page.ResourceType `json:"type,omitempty"`             // Type of this resource. | 	Type             page.ResourceType `json:"type,omitempty"`             // Type of this resource. | ||||||
| @ -39,30 +39,30 @@ type EventResponseReceived struct { | |||||||
| 	RequestID RequestID         `json:"requestId,omitempty"` // Request identifier. | 	RequestID RequestID         `json:"requestId,omitempty"` // Request identifier. | ||||||
| 	FrameID   cdp.FrameID       `json:"frameId,omitempty"`   // Frame identifier. | 	FrameID   cdp.FrameID       `json:"frameId,omitempty"`   // Frame identifier. | ||||||
| 	LoaderID  cdp.LoaderID      `json:"loaderId,omitempty"`  // Loader identifier. | 	LoaderID  cdp.LoaderID      `json:"loaderId,omitempty"`  // Loader identifier. | ||||||
| 	Timestamp cdp.Timestamp     `json:"timestamp,omitempty"` // Timestamp. | 	Timestamp *cdp.Timestamp    `json:"timestamp,omitempty"` // Timestamp. | ||||||
| 	Type      page.ResourceType `json:"type,omitempty"`      // Resource type. | 	Type      page.ResourceType `json:"type,omitempty"`      // Resource type. | ||||||
| 	Response  *Response         `json:"response,omitempty"`  // Response data. | 	Response  *Response         `json:"response,omitempty"`  // Response data. | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| // EventDataReceived fired when data chunk was received over the network. | // EventDataReceived fired when data chunk was received over the network. | ||||||
| type EventDataReceived struct { | type EventDataReceived struct { | ||||||
| 	RequestID         RequestID     `json:"requestId,omitempty"`         // Request identifier. | 	RequestID         RequestID      `json:"requestId,omitempty"`         // Request identifier. | ||||||
| 	Timestamp         cdp.Timestamp `json:"timestamp,omitempty"`         // Timestamp. | 	Timestamp         *cdp.Timestamp `json:"timestamp,omitempty"`         // Timestamp. | ||||||
| 	DataLength        int64         `json:"dataLength,omitempty"`        // Data chunk length. | 	DataLength        int64          `json:"dataLength,omitempty"`        // Data chunk length. | ||||||
| 	EncodedDataLength int64         `json:"encodedDataLength,omitempty"` // Actual bytes received (might be less than dataLength for compressed encodings). | 	EncodedDataLength int64          `json:"encodedDataLength,omitempty"` // Actual bytes received (might be less than dataLength for compressed encodings). | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| // EventLoadingFinished fired when HTTP request has finished loading. | // EventLoadingFinished fired when HTTP request has finished loading. | ||||||
| type EventLoadingFinished struct { | type EventLoadingFinished struct { | ||||||
| 	RequestID         RequestID     `json:"requestId,omitempty"`         // Request identifier. | 	RequestID         RequestID      `json:"requestId,omitempty"`         // Request identifier. | ||||||
| 	Timestamp         cdp.Timestamp `json:"timestamp,omitempty"`         // Timestamp. | 	Timestamp         *cdp.Timestamp `json:"timestamp,omitempty"`         // Timestamp. | ||||||
| 	EncodedDataLength float64       `json:"encodedDataLength,omitempty"` // Total number of bytes received for this request. | 	EncodedDataLength float64        `json:"encodedDataLength,omitempty"` // Total number of bytes received for this request. | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| // EventLoadingFailed fired when HTTP request has failed to load. | // EventLoadingFailed fired when HTTP request has failed to load. | ||||||
| type EventLoadingFailed struct { | type EventLoadingFailed struct { | ||||||
| 	RequestID     RequestID         `json:"requestId,omitempty"`     // Request identifier. | 	RequestID     RequestID         `json:"requestId,omitempty"`     // Request identifier. | ||||||
| 	Timestamp     cdp.Timestamp     `json:"timestamp,omitempty"`     // Timestamp. | 	Timestamp     *cdp.Timestamp    `json:"timestamp,omitempty"`     // Timestamp. | ||||||
| 	Type          page.ResourceType `json:"type,omitempty"`          // Resource type. | 	Type          page.ResourceType `json:"type,omitempty"`          // Resource type. | ||||||
| 	ErrorText     string            `json:"errorText,omitempty"`     // User friendly error message. | 	ErrorText     string            `json:"errorText,omitempty"`     // User friendly error message. | ||||||
| 	Canceled      bool              `json:"canceled,omitempty"`      // True if loading was canceled. | 	Canceled      bool              `json:"canceled,omitempty"`      // True if loading was canceled. | ||||||
| @ -73,8 +73,8 @@ type EventLoadingFailed struct { | |||||||
| // initiate handshake. | // initiate handshake. | ||||||
| type EventWebSocketWillSendHandshakeRequest struct { | type EventWebSocketWillSendHandshakeRequest struct { | ||||||
| 	RequestID RequestID         `json:"requestId,omitempty"` // Request identifier. | 	RequestID RequestID         `json:"requestId,omitempty"` // Request identifier. | ||||||
| 	Timestamp cdp.Timestamp     `json:"timestamp,omitempty"` // Timestamp. | 	Timestamp *cdp.Timestamp    `json:"timestamp,omitempty"` // Timestamp. | ||||||
| 	WallTime  cdp.Timestamp     `json:"wallTime,omitempty"`  // UTC Timestamp. | 	WallTime  *cdp.Timestamp    `json:"wallTime,omitempty"`  // UTC Timestamp. | ||||||
| 	Request   *WebSocketRequest `json:"request,omitempty"`   // WebSocket request data. | 	Request   *WebSocketRequest `json:"request,omitempty"`   // WebSocket request data. | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| @ -82,7 +82,7 @@ type EventWebSocketWillSendHandshakeRequest struct { | |||||||
| // response becomes available. | // response becomes available. | ||||||
| type EventWebSocketHandshakeResponseReceived struct { | type EventWebSocketHandshakeResponseReceived struct { | ||||||
| 	RequestID RequestID          `json:"requestId,omitempty"` // Request identifier. | 	RequestID RequestID          `json:"requestId,omitempty"` // Request identifier. | ||||||
| 	Timestamp cdp.Timestamp      `json:"timestamp,omitempty"` // Timestamp. | 	Timestamp *cdp.Timestamp     `json:"timestamp,omitempty"` // Timestamp. | ||||||
| 	Response  *WebSocketResponse `json:"response,omitempty"`  // WebSocket response data. | 	Response  *WebSocketResponse `json:"response,omitempty"`  // WebSocket response data. | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| @ -95,39 +95,39 @@ type EventWebSocketCreated struct { | |||||||
| 
 | 
 | ||||||
| // EventWebSocketClosed fired when WebSocket is closed. | // EventWebSocketClosed fired when WebSocket is closed. | ||||||
| type EventWebSocketClosed struct { | type EventWebSocketClosed struct { | ||||||
| 	RequestID RequestID     `json:"requestId,omitempty"` // Request identifier. | 	RequestID RequestID      `json:"requestId,omitempty"` // Request identifier. | ||||||
| 	Timestamp cdp.Timestamp `json:"timestamp,omitempty"` // Timestamp. | 	Timestamp *cdp.Timestamp `json:"timestamp,omitempty"` // Timestamp. | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| // EventWebSocketFrameReceived fired when WebSocket frame is received. | // EventWebSocketFrameReceived fired when WebSocket frame is received. | ||||||
| type EventWebSocketFrameReceived struct { | type EventWebSocketFrameReceived struct { | ||||||
| 	RequestID RequestID       `json:"requestId,omitempty"` // Request identifier. | 	RequestID RequestID       `json:"requestId,omitempty"` // Request identifier. | ||||||
| 	Timestamp cdp.Timestamp   `json:"timestamp,omitempty"` // Timestamp. | 	Timestamp *cdp.Timestamp  `json:"timestamp,omitempty"` // Timestamp. | ||||||
| 	Response  *WebSocketFrame `json:"response,omitempty"`  // WebSocket response data. | 	Response  *WebSocketFrame `json:"response,omitempty"`  // WebSocket response data. | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| // EventWebSocketFrameError fired when WebSocket frame error occurs. | // EventWebSocketFrameError fired when WebSocket frame error occurs. | ||||||
| type EventWebSocketFrameError struct { | type EventWebSocketFrameError struct { | ||||||
| 	RequestID    RequestID     `json:"requestId,omitempty"`    // Request identifier. | 	RequestID    RequestID      `json:"requestId,omitempty"`    // Request identifier. | ||||||
| 	Timestamp    cdp.Timestamp `json:"timestamp,omitempty"`    // Timestamp. | 	Timestamp    *cdp.Timestamp `json:"timestamp,omitempty"`    // Timestamp. | ||||||
| 	ErrorMessage string        `json:"errorMessage,omitempty"` // WebSocket frame error message. | 	ErrorMessage string         `json:"errorMessage,omitempty"` // WebSocket frame error message. | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| // EventWebSocketFrameSent fired when WebSocket frame is sent. | // EventWebSocketFrameSent fired when WebSocket frame is sent. | ||||||
| type EventWebSocketFrameSent struct { | type EventWebSocketFrameSent struct { | ||||||
| 	RequestID RequestID       `json:"requestId,omitempty"` // Request identifier. | 	RequestID RequestID       `json:"requestId,omitempty"` // Request identifier. | ||||||
| 	Timestamp cdp.Timestamp   `json:"timestamp,omitempty"` // Timestamp. | 	Timestamp *cdp.Timestamp  `json:"timestamp,omitempty"` // Timestamp. | ||||||
| 	Response  *WebSocketFrame `json:"response,omitempty"`  // WebSocket response data. | 	Response  *WebSocketFrame `json:"response,omitempty"`  // WebSocket response data. | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| // EventEventSourceMessageReceived fired when EventSource message is | // EventEventSourceMessageReceived fired when EventSource message is | ||||||
| // received. | // received. | ||||||
| type EventEventSourceMessageReceived struct { | type EventEventSourceMessageReceived struct { | ||||||
| 	RequestID RequestID     `json:"requestId,omitempty"` // Request identifier. | 	RequestID RequestID      `json:"requestId,omitempty"` // Request identifier. | ||||||
| 	Timestamp cdp.Timestamp `json:"timestamp,omitempty"` // Timestamp. | 	Timestamp *cdp.Timestamp `json:"timestamp,omitempty"` // Timestamp. | ||||||
| 	EventName string        `json:"eventName,omitempty"` // Message type. | 	EventName string         `json:"eventName,omitempty"` // Message type. | ||||||
| 	EventID   string        `json:"eventId,omitempty"`   // Message identifier. | 	EventID   string         `json:"eventId,omitempty"`   // Message identifier. | ||||||
| 	Data      string        `json:"data,omitempty"`      // Message content. | 	Data      string         `json:"data,omitempty"`      // Message content. | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| // EventRequestIntercepted details of an intercepted HTTP request, which must | // EventRequestIntercepted details of an intercepted HTTP request, which must | ||||||
|  | |||||||
| @ -407,7 +407,7 @@ type SetCookieParams struct { | |||||||
| 	Secure         bool           `json:"secure,omitempty"`         // Defaults ot false. | 	Secure         bool           `json:"secure,omitempty"`         // Defaults ot false. | ||||||
| 	HTTPOnly       bool           `json:"httpOnly,omitempty"`       // Defaults to false. | 	HTTPOnly       bool           `json:"httpOnly,omitempty"`       // Defaults to false. | ||||||
| 	SameSite       CookieSameSite `json:"sameSite,omitempty"`       // Defaults to browser default behavior. | 	SameSite       CookieSameSite `json:"sameSite,omitempty"`       // Defaults to browser default behavior. | ||||||
| 	ExpirationDate cdp.Timestamp  `json:"expirationDate,omitempty"` // If omitted, the cookie becomes a session cookie. | 	ExpirationDate *cdp.Timestamp `json:"expirationDate,omitempty"` // If omitted, the cookie becomes a session cookie. | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| // SetCookie sets a cookie with the given cookie data; may overwrite | // SetCookie sets a cookie with the given cookie data; may overwrite | ||||||
| @ -456,7 +456,7 @@ func (p SetCookieParams) WithSameSite(sameSite CookieSameSite) *SetCookieParams | |||||||
| } | } | ||||||
| 
 | 
 | ||||||
| // WithExpirationDate if omitted, the cookie becomes a session cookie. | // WithExpirationDate if omitted, the cookie becomes a session cookie. | ||||||
| func (p SetCookieParams) WithExpirationDate(expirationDate cdp.Timestamp) *SetCookieParams { | func (p SetCookieParams) WithExpirationDate(expirationDate *cdp.Timestamp) *SetCookieParams { | ||||||
| 	p.ExpirationDate = expirationDate | 	p.ExpirationDate = expirationDate | ||||||
| 	return &p | 	return &p | ||||||
| } | } | ||||||
|  | |||||||
| @ -297,14 +297,14 @@ type Request struct { | |||||||
| // SignedCertificateTimestamp details of a signed certificate timestamp | // SignedCertificateTimestamp details of a signed certificate timestamp | ||||||
| // (SCT). | // (SCT). | ||||||
| type SignedCertificateTimestamp struct { | type SignedCertificateTimestamp struct { | ||||||
| 	Status             string        `json:"status,omitempty"`             // Validation status. | 	Status             string         `json:"status,omitempty"`             // Validation status. | ||||||
| 	Origin             string        `json:"origin,omitempty"`             // Origin. | 	Origin             string         `json:"origin,omitempty"`             // Origin. | ||||||
| 	LogDescription     string        `json:"logDescription,omitempty"`     // Log name / description. | 	LogDescription     string         `json:"logDescription,omitempty"`     // Log name / description. | ||||||
| 	LogID              string        `json:"logId,omitempty"`              // Log ID. | 	LogID              string         `json:"logId,omitempty"`              // Log ID. | ||||||
| 	Timestamp          cdp.Timestamp `json:"timestamp,omitempty"`          // Issuance date. | 	Timestamp          *cdp.Timestamp `json:"timestamp,omitempty"`          // Issuance date. | ||||||
| 	HashAlgorithm      string        `json:"hashAlgorithm,omitempty"`      // Hash algorithm. | 	HashAlgorithm      string         `json:"hashAlgorithm,omitempty"`      // Hash algorithm. | ||||||
| 	SignatureAlgorithm string        `json:"signatureAlgorithm,omitempty"` // Signature algorithm. | 	SignatureAlgorithm string         `json:"signatureAlgorithm,omitempty"` // Signature algorithm. | ||||||
| 	SignatureData      string        `json:"signatureData,omitempty"`      // Signature data. | 	SignatureData      string         `json:"signatureData,omitempty"`      // Signature data. | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| // SecurityDetails security details about a request. | // SecurityDetails security details about a request. | ||||||
| @ -318,8 +318,8 @@ type SecurityDetails struct { | |||||||
| 	SubjectName                    string                        `json:"subjectName,omitempty"`                    // Certificate subject name. | 	SubjectName                    string                        `json:"subjectName,omitempty"`                    // Certificate subject name. | ||||||
| 	SanList                        []string                      `json:"sanList,omitempty"`                        // Subject Alternative Name (SAN) DNS names and IP addresses. | 	SanList                        []string                      `json:"sanList,omitempty"`                        // Subject Alternative Name (SAN) DNS names and IP addresses. | ||||||
| 	Issuer                         string                        `json:"issuer,omitempty"`                         // Name of the issuing CA. | 	Issuer                         string                        `json:"issuer,omitempty"`                         // Name of the issuing CA. | ||||||
| 	ValidFrom                      cdp.Timestamp                 `json:"validFrom,omitempty"`                      // Certificate valid from date. | 	ValidFrom                      *cdp.Timestamp                `json:"validFrom,omitempty"`                      // Certificate valid from date. | ||||||
| 	ValidTo                        cdp.Timestamp                 `json:"validTo,omitempty"`                        // Certificate valid to (expiration) date | 	ValidTo                        *cdp.Timestamp                `json:"validTo,omitempty"`                        // Certificate valid to (expiration) date | ||||||
| 	SignedCertificateTimestampList []*SignedCertificateTimestamp `json:"signedCertificateTimestampList,omitempty"` // List of signed certificate timestamps (SCTs). | 	SignedCertificateTimestampList []*SignedCertificateTimestamp `json:"signedCertificateTimestampList,omitempty"` // List of signed certificate timestamps (SCTs). | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
|  | |||||||
| @ -834,7 +834,15 @@ func easyjsonC5a4559bDecodeGithubComKnqChromedpCdpPage9(in *jlexer.Lexer, out *S | |||||||
| 		case "scrollOffsetY": | 		case "scrollOffsetY": | ||||||
| 			out.ScrollOffsetY = float64(in.Float64()) | 			out.ScrollOffsetY = float64(in.Float64()) | ||||||
| 		case "timestamp": | 		case "timestamp": | ||||||
| 			out.Timestamp = float64(in.Float64()) | 			if in.IsNull() { | ||||||
|  | 				in.Skip() | ||||||
|  | 				out.Timestamp = nil | ||||||
|  | 			} else { | ||||||
|  | 				if out.Timestamp == nil { | ||||||
|  | 					out.Timestamp = new(Bootstamp) | ||||||
|  | 				} | ||||||
|  | 				(*out.Timestamp).UnmarshalEasyJSON(in) | ||||||
|  | 			} | ||||||
| 		default: | 		default: | ||||||
| 			in.SkipRecursive() | 			in.SkipRecursive() | ||||||
| 		} | 		} | ||||||
| @ -897,13 +905,17 @@ func easyjsonC5a4559bEncodeGithubComKnqChromedpCdpPage9(out *jwriter.Writer, in | |||||||
| 		out.RawString("\"scrollOffsetY\":") | 		out.RawString("\"scrollOffsetY\":") | ||||||
| 		out.Float64(float64(in.ScrollOffsetY)) | 		out.Float64(float64(in.ScrollOffsetY)) | ||||||
| 	} | 	} | ||||||
| 	if in.Timestamp != 0 { | 	if in.Timestamp != nil { | ||||||
| 		if !first { | 		if !first { | ||||||
| 			out.RawByte(',') | 			out.RawByte(',') | ||||||
| 		} | 		} | ||||||
| 		first = false | 		first = false | ||||||
| 		out.RawString("\"timestamp\":") | 		out.RawString("\"timestamp\":") | ||||||
| 		out.Float64(float64(in.Timestamp)) | 		if in.Timestamp == nil { | ||||||
|  | 			out.RawString("null") | ||||||
|  | 		} else { | ||||||
|  | 			(*in.Timestamp).MarshalEasyJSON(out) | ||||||
|  | 		} | ||||||
| 	} | 	} | ||||||
| 	out.RawByte('}') | 	out.RawByte('}') | ||||||
| } | } | ||||||
| @ -3091,7 +3103,15 @@ func easyjsonC5a4559bDecodeGithubComKnqChromedpCdpPage34(in *jlexer.Lexer, out * | |||||||
| 		case "mimeType": | 		case "mimeType": | ||||||
| 			out.MimeType = string(in.String()) | 			out.MimeType = string(in.String()) | ||||||
| 		case "lastModified": | 		case "lastModified": | ||||||
| 			out.LastModified = cdp.Timestamp(in.Float64()) | 			if in.IsNull() { | ||||||
|  | 				in.Skip() | ||||||
|  | 				out.LastModified = nil | ||||||
|  | 			} else { | ||||||
|  | 				if out.LastModified == nil { | ||||||
|  | 					out.LastModified = new(cdp.Timestamp) | ||||||
|  | 				} | ||||||
|  | 				(*out.LastModified).UnmarshalEasyJSON(in) | ||||||
|  | 			} | ||||||
| 		case "contentSize": | 		case "contentSize": | ||||||
| 			out.ContentSize = float64(in.Float64()) | 			out.ContentSize = float64(in.Float64()) | ||||||
| 		case "failed": | 		case "failed": | ||||||
| @ -3136,13 +3156,17 @@ func easyjsonC5a4559bEncodeGithubComKnqChromedpCdpPage34(out *jwriter.Writer, in | |||||||
| 		out.RawString("\"mimeType\":") | 		out.RawString("\"mimeType\":") | ||||||
| 		out.String(string(in.MimeType)) | 		out.String(string(in.MimeType)) | ||||||
| 	} | 	} | ||||||
| 	if in.LastModified != 0 { | 	if in.LastModified != nil { | ||||||
| 		if !first { | 		if !first { | ||||||
| 			out.RawByte(',') | 			out.RawByte(',') | ||||||
| 		} | 		} | ||||||
| 		first = false | 		first = false | ||||||
| 		out.RawString("\"lastModified\":") | 		out.RawString("\"lastModified\":") | ||||||
| 		out.Float64(float64(in.LastModified)) | 		if in.LastModified == nil { | ||||||
|  | 			out.RawString("null") | ||||||
|  | 		} else { | ||||||
|  | 			(*in.LastModified).MarshalEasyJSON(out) | ||||||
|  | 		} | ||||||
| 	} | 	} | ||||||
| 	if in.ContentSize != 0 { | 	if in.ContentSize != 0 { | ||||||
| 		if !first { | 		if !first { | ||||||
| @ -3483,7 +3507,15 @@ func easyjsonC5a4559bDecodeGithubComKnqChromedpCdpPage38(in *jlexer.Lexer, out * | |||||||
| 		} | 		} | ||||||
| 		switch key { | 		switch key { | ||||||
| 		case "timestamp": | 		case "timestamp": | ||||||
| 			out.Timestamp = float64(in.Float64()) | 			if in.IsNull() { | ||||||
|  | 				in.Skip() | ||||||
|  | 				out.Timestamp = nil | ||||||
|  | 			} else { | ||||||
|  | 				if out.Timestamp == nil { | ||||||
|  | 					out.Timestamp = new(Bootstamp) | ||||||
|  | 				} | ||||||
|  | 				(*out.Timestamp).UnmarshalEasyJSON(in) | ||||||
|  | 			} | ||||||
| 		default: | 		default: | ||||||
| 			in.SkipRecursive() | 			in.SkipRecursive() | ||||||
| 		} | 		} | ||||||
| @ -3498,13 +3530,17 @@ func easyjsonC5a4559bEncodeGithubComKnqChromedpCdpPage38(out *jwriter.Writer, in | |||||||
| 	out.RawByte('{') | 	out.RawByte('{') | ||||||
| 	first := true | 	first := true | ||||||
| 	_ = first | 	_ = first | ||||||
| 	if in.Timestamp != 0 { | 	if in.Timestamp != nil { | ||||||
| 		if !first { | 		if !first { | ||||||
| 			out.RawByte(',') | 			out.RawByte(',') | ||||||
| 		} | 		} | ||||||
| 		first = false | 		first = false | ||||||
| 		out.RawString("\"timestamp\":") | 		out.RawString("\"timestamp\":") | ||||||
| 		out.Float64(float64(in.Timestamp)) | 		if in.Timestamp == nil { | ||||||
|  | 			out.RawString("null") | ||||||
|  | 		} else { | ||||||
|  | 			(*in.Timestamp).MarshalEasyJSON(out) | ||||||
|  | 		} | ||||||
| 	} | 	} | ||||||
| 	out.RawByte('}') | 	out.RawByte('}') | ||||||
| } | } | ||||||
| @ -4414,7 +4450,15 @@ func easyjsonC5a4559bDecodeGithubComKnqChromedpCdpPage51(in *jlexer.Lexer, out * | |||||||
| 		} | 		} | ||||||
| 		switch key { | 		switch key { | ||||||
| 		case "timestamp": | 		case "timestamp": | ||||||
| 			out.Timestamp = float64(in.Float64()) | 			if in.IsNull() { | ||||||
|  | 				in.Skip() | ||||||
|  | 				out.Timestamp = nil | ||||||
|  | 			} else { | ||||||
|  | 				if out.Timestamp == nil { | ||||||
|  | 					out.Timestamp = new(Bootstamp) | ||||||
|  | 				} | ||||||
|  | 				(*out.Timestamp).UnmarshalEasyJSON(in) | ||||||
|  | 			} | ||||||
| 		default: | 		default: | ||||||
| 			in.SkipRecursive() | 			in.SkipRecursive() | ||||||
| 		} | 		} | ||||||
| @ -4429,13 +4473,17 @@ func easyjsonC5a4559bEncodeGithubComKnqChromedpCdpPage51(out *jwriter.Writer, in | |||||||
| 	out.RawByte('{') | 	out.RawByte('{') | ||||||
| 	first := true | 	first := true | ||||||
| 	_ = first | 	_ = first | ||||||
| 	if in.Timestamp != 0 { | 	if in.Timestamp != nil { | ||||||
| 		if !first { | 		if !first { | ||||||
| 			out.RawByte(',') | 			out.RawByte(',') | ||||||
| 		} | 		} | ||||||
| 		first = false | 		first = false | ||||||
| 		out.RawString("\"timestamp\":") | 		out.RawString("\"timestamp\":") | ||||||
| 		out.Float64(float64(in.Timestamp)) | 		if in.Timestamp == nil { | ||||||
|  | 			out.RawString("null") | ||||||
|  | 		} else { | ||||||
|  | 			(*in.Timestamp).MarshalEasyJSON(out) | ||||||
|  | 		} | ||||||
| 	} | 	} | ||||||
| 	out.RawByte('}') | 	out.RawByte('}') | ||||||
| } | } | ||||||
|  | |||||||
| @ -9,12 +9,12 @@ import ( | |||||||
| 
 | 
 | ||||||
| // EventDomContentEventFired [no description]. | // EventDomContentEventFired [no description]. | ||||||
| type EventDomContentEventFired struct { | type EventDomContentEventFired struct { | ||||||
| 	Timestamp float64 `json:"timestamp,omitempty"` | 	Timestamp *Bootstamp `json:"timestamp,omitempty"` | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| // EventLoadEventFired [no description]. | // EventLoadEventFired [no description]. | ||||||
| type EventLoadEventFired struct { | type EventLoadEventFired struct { | ||||||
| 	Timestamp float64 `json:"timestamp,omitempty"` | 	Timestamp *Bootstamp `json:"timestamp,omitempty"` | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| // EventFrameAttached fired when frame has been attached to its parent. | // EventFrameAttached fired when frame has been attached to its parent. | ||||||
|  | |||||||
| @ -4,8 +4,11 @@ package page | |||||||
| 
 | 
 | ||||||
| import ( | import ( | ||||||
| 	"errors" | 	"errors" | ||||||
|  | 	"strconv" | ||||||
|  | 	"time" | ||||||
| 
 | 
 | ||||||
| 	cdp "github.com/knq/chromedp/cdp" | 	cdp "github.com/knq/chromedp/cdp" | ||||||
|  | 	"github.com/knq/sysutil" | ||||||
| 	"github.com/mailru/easyjson" | 	"github.com/mailru/easyjson" | ||||||
| 	"github.com/mailru/easyjson/jlexer" | 	"github.com/mailru/easyjson/jlexer" | ||||||
| 	"github.com/mailru/easyjson/jwriter" | 	"github.com/mailru/easyjson/jwriter" | ||||||
| @ -88,13 +91,13 @@ func (t *ResourceType) UnmarshalJSON(buf []byte) error { | |||||||
| 
 | 
 | ||||||
| // FrameResource information about the Resource on the page. | // FrameResource information about the Resource on the page. | ||||||
| type FrameResource struct { | type FrameResource struct { | ||||||
| 	URL          string        `json:"url,omitempty"`          // Resource URL. | 	URL          string         `json:"url,omitempty"`          // Resource URL. | ||||||
| 	Type         ResourceType  `json:"type,omitempty"`         // Type of this resource. | 	Type         ResourceType   `json:"type,omitempty"`         // Type of this resource. | ||||||
| 	MimeType     string        `json:"mimeType,omitempty"`     // Resource mimeType as determined by the browser. | 	MimeType     string         `json:"mimeType,omitempty"`     // Resource mimeType as determined by the browser. | ||||||
| 	LastModified cdp.Timestamp `json:"lastModified,omitempty"` // last-modified timestamp as reported by server. | 	LastModified *cdp.Timestamp `json:"lastModified,omitempty"` // last-modified timestamp as reported by server. | ||||||
| 	ContentSize  float64       `json:"contentSize,omitempty"`  // Resource content size. | 	ContentSize  float64        `json:"contentSize,omitempty"`  // Resource content size. | ||||||
| 	Failed       bool          `json:"failed,omitempty"`       // True if the resource failed to load. | 	Failed       bool           `json:"failed,omitempty"`       // True if the resource failed to load. | ||||||
| 	Canceled     bool          `json:"canceled,omitempty"`     // True if the resource was canceled during loading. | 	Canceled     bool           `json:"canceled,omitempty"`     // True if the resource was canceled during loading. | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| // FrameResourceTree information about the Frame hierarchy along with their | // FrameResourceTree information about the Frame hierarchy along with their | ||||||
| @ -196,13 +199,13 @@ type NavigationEntry struct { | |||||||
| 
 | 
 | ||||||
| // ScreencastFrameMetadata screencast frame metadata. | // ScreencastFrameMetadata screencast frame metadata. | ||||||
| type ScreencastFrameMetadata struct { | type ScreencastFrameMetadata struct { | ||||||
| 	OffsetTop       float64 `json:"offsetTop,omitempty"`       // Top offset in DIP. | 	OffsetTop       float64    `json:"offsetTop,omitempty"`       // Top offset in DIP. | ||||||
| 	PageScaleFactor float64 `json:"pageScaleFactor,omitempty"` // Page scale factor. | 	PageScaleFactor float64    `json:"pageScaleFactor,omitempty"` // Page scale factor. | ||||||
| 	DeviceWidth     float64 `json:"deviceWidth,omitempty"`     // Device screen width in DIP. | 	DeviceWidth     float64    `json:"deviceWidth,omitempty"`     // Device screen width in DIP. | ||||||
| 	DeviceHeight    float64 `json:"deviceHeight,omitempty"`    // Device screen height in DIP. | 	DeviceHeight    float64    `json:"deviceHeight,omitempty"`    // Device screen height in DIP. | ||||||
| 	ScrollOffsetX   float64 `json:"scrollOffsetX,omitempty"`   // Position of horizontal scroll in CSS pixels. | 	ScrollOffsetX   float64    `json:"scrollOffsetX,omitempty"`   // Position of horizontal scroll in CSS pixels. | ||||||
| 	ScrollOffsetY   float64 `json:"scrollOffsetY,omitempty"`   // Position of vertical scroll in CSS pixels. | 	ScrollOffsetY   float64    `json:"scrollOffsetY,omitempty"`   // Position of vertical scroll in CSS pixels. | ||||||
| 	Timestamp       float64 `json:"timestamp,omitempty"`       // Frame swap timestamp. | 	Timestamp       *Bootstamp `json:"timestamp,omitempty"`       // Frame swap timestamp. | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| // DialogType javascript dialog type. | // DialogType javascript dialog type. | ||||||
| @ -327,6 +330,37 @@ type VisualViewport struct { | |||||||
| 	Scale        float64 `json:"scale,omitempty"`        // Scale relative to the ideal viewport (size at width=device-width). | 	Scale        float64 `json:"scale,omitempty"`        // Scale relative to the ideal viewport (size at width=device-width). | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
|  | // Bootstamp bootstamp type. | ||||||
|  | type Bootstamp time.Time | ||||||
|  | 
 | ||||||
|  | // Time returns the Bootstamp as time.Time value. | ||||||
|  | func (t Bootstamp) Time() time.Time { | ||||||
|  | 	return time.Time(t) | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | // MarshalEasyJSON satisfies easyjson.Marshaler. | ||||||
|  | func (t Bootstamp) MarshalEasyJSON(out *jwriter.Writer) { | ||||||
|  | 	v := float64(time.Time(t).Sub(sysutil.BootTime())) / float64(time.Second) | ||||||
|  | 
 | ||||||
|  | 	out.Buffer.EnsureSpace(20) | ||||||
|  | 	out.Buffer.Buf = strconv.AppendFloat(out.Buffer.Buf, v, 'f', -1, 64) | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | // MarshalJSON satisfies json.Marshaler. | ||||||
|  | func (t Bootstamp) MarshalJSON() ([]byte, error) { | ||||||
|  | 	return easyjson.Marshal(t) | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | // UnmarshalEasyJSON satisfies easyjson.Unmarshaler. | ||||||
|  | func (t *Bootstamp) UnmarshalEasyJSON(in *jlexer.Lexer) { | ||||||
|  | 	*t = Bootstamp(sysutil.BootTime().Add(time.Duration(in.Float64() * float64(time.Second)))) | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | // UnmarshalJSON satisfies json.Unmarshaler. | ||||||
|  | func (t *Bootstamp) UnmarshalJSON(buf []byte) error { | ||||||
|  | 	return easyjson.Unmarshal(buf, t) | ||||||
|  | } | ||||||
|  | 
 | ||||||
| // CaptureScreenshotFormat image compression format (defaults to png). | // CaptureScreenshotFormat image compression format (defaults to png). | ||||||
| type CaptureScreenshotFormat string | type CaptureScreenshotFormat string | ||||||
| 
 | 
 | ||||||
|  | |||||||
| @ -2361,7 +2361,15 @@ func easyjsonC5a4559bDecodeGithubComKnqChromedpCdpRuntime20(in *jlexer.Lexer, ou | |||||||
| 		} | 		} | ||||||
| 		switch key { | 		switch key { | ||||||
| 		case "timestamp": | 		case "timestamp": | ||||||
| 			out.Timestamp = Timestamp(in.Float64()) | 			if in.IsNull() { | ||||||
|  | 				in.Skip() | ||||||
|  | 				out.Timestamp = nil | ||||||
|  | 			} else { | ||||||
|  | 				if out.Timestamp == nil { | ||||||
|  | 					out.Timestamp = new(Timestamp) | ||||||
|  | 				} | ||||||
|  | 				(*out.Timestamp).UnmarshalEasyJSON(in) | ||||||
|  | 			} | ||||||
| 		case "exceptionDetails": | 		case "exceptionDetails": | ||||||
| 			if in.IsNull() { | 			if in.IsNull() { | ||||||
| 				in.Skip() | 				in.Skip() | ||||||
| @ -2386,13 +2394,17 @@ func easyjsonC5a4559bEncodeGithubComKnqChromedpCdpRuntime20(out *jwriter.Writer, | |||||||
| 	out.RawByte('{') | 	out.RawByte('{') | ||||||
| 	first := true | 	first := true | ||||||
| 	_ = first | 	_ = first | ||||||
| 	if in.Timestamp != 0 { | 	if in.Timestamp != nil { | ||||||
| 		if !first { | 		if !first { | ||||||
| 			out.RawByte(',') | 			out.RawByte(',') | ||||||
| 		} | 		} | ||||||
| 		first = false | 		first = false | ||||||
| 		out.RawString("\"timestamp\":") | 		out.RawString("\"timestamp\":") | ||||||
| 		out.Float64(float64(in.Timestamp)) | 		if in.Timestamp == nil { | ||||||
|  | 			out.RawString("null") | ||||||
|  | 		} else { | ||||||
|  | 			(*in.Timestamp).MarshalEasyJSON(out) | ||||||
|  | 		} | ||||||
| 	} | 	} | ||||||
| 	if in.ExceptionDetails != nil { | 	if in.ExceptionDetails != nil { | ||||||
| 		if !first { | 		if !first { | ||||||
| @ -2566,7 +2578,15 @@ func easyjsonC5a4559bDecodeGithubComKnqChromedpCdpRuntime22(in *jlexer.Lexer, ou | |||||||
| 		case "executionContextId": | 		case "executionContextId": | ||||||
| 			out.ExecutionContextID = ExecutionContextID(in.Int64()) | 			out.ExecutionContextID = ExecutionContextID(in.Int64()) | ||||||
| 		case "timestamp": | 		case "timestamp": | ||||||
| 			out.Timestamp = Timestamp(in.Float64()) | 			if in.IsNull() { | ||||||
|  | 				in.Skip() | ||||||
|  | 				out.Timestamp = nil | ||||||
|  | 			} else { | ||||||
|  | 				if out.Timestamp == nil { | ||||||
|  | 					out.Timestamp = new(Timestamp) | ||||||
|  | 				} | ||||||
|  | 				(*out.Timestamp).UnmarshalEasyJSON(in) | ||||||
|  | 			} | ||||||
| 		case "stackTrace": | 		case "stackTrace": | ||||||
| 			if in.IsNull() { | 			if in.IsNull() { | ||||||
| 				in.Skip() | 				in.Skip() | ||||||
| @ -2632,13 +2652,17 @@ func easyjsonC5a4559bEncodeGithubComKnqChromedpCdpRuntime22(out *jwriter.Writer, | |||||||
| 		out.RawString("\"executionContextId\":") | 		out.RawString("\"executionContextId\":") | ||||||
| 		out.Int64(int64(in.ExecutionContextID)) | 		out.Int64(int64(in.ExecutionContextID)) | ||||||
| 	} | 	} | ||||||
| 	if in.Timestamp != 0 { | 	if in.Timestamp != nil { | ||||||
| 		if !first { | 		if !first { | ||||||
| 			out.RawByte(',') | 			out.RawByte(',') | ||||||
| 		} | 		} | ||||||
| 		first = false | 		first = false | ||||||
| 		out.RawString("\"timestamp\":") | 		out.RawString("\"timestamp\":") | ||||||
| 		out.Float64(float64(in.Timestamp)) | 		if in.Timestamp == nil { | ||||||
|  | 			out.RawString("null") | ||||||
|  | 		} else { | ||||||
|  | 			(*in.Timestamp).MarshalEasyJSON(out) | ||||||
|  | 		} | ||||||
| 	} | 	} | ||||||
| 	if in.StackTrace != nil { | 	if in.StackTrace != nil { | ||||||
| 		if !first { | 		if !first { | ||||||
|  | |||||||
| @ -23,7 +23,7 @@ type EventExecutionContextsCleared struct{} | |||||||
| 
 | 
 | ||||||
| // EventExceptionThrown issued when exception was thrown and unhandled. | // EventExceptionThrown issued when exception was thrown and unhandled. | ||||||
| type EventExceptionThrown struct { | type EventExceptionThrown struct { | ||||||
| 	Timestamp        Timestamp         `json:"timestamp,omitempty"` // Timestamp of the exception. | 	Timestamp        *Timestamp        `json:"timestamp,omitempty"` // Timestamp of the exception. | ||||||
| 	ExceptionDetails *ExceptionDetails `json:"exceptionDetails,omitempty"` | 	ExceptionDetails *ExceptionDetails `json:"exceptionDetails,omitempty"` | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| @ -38,7 +38,7 @@ type EventConsoleAPICalled struct { | |||||||
| 	Type               APIType            `json:"type,omitempty"`               // Type of the call. | 	Type               APIType            `json:"type,omitempty"`               // Type of the call. | ||||||
| 	Args               []*RemoteObject    `json:"args,omitempty"`               // Call arguments. | 	Args               []*RemoteObject    `json:"args,omitempty"`               // Call arguments. | ||||||
| 	ExecutionContextID ExecutionContextID `json:"executionContextId,omitempty"` // Identifier of the context where the call was made. | 	ExecutionContextID ExecutionContextID `json:"executionContextId,omitempty"` // Identifier of the context where the call was made. | ||||||
| 	Timestamp          Timestamp          `json:"timestamp,omitempty"`          // Call timestamp. | 	Timestamp          *Timestamp         `json:"timestamp,omitempty"`          // Call timestamp. | ||||||
| 	StackTrace         *StackTrace        `json:"stackTrace,omitempty"`         // Stack trace captured when the call was made. | 	StackTrace         *StackTrace        `json:"stackTrace,omitempty"`         // Stack trace captured when the call was made. | ||||||
| 	Context            string             `json:"context,omitempty"`            // Console context descriptor for calls on non-default console context (not console.*): 'anonymous#unique-logger-id' for call on unnamed context, 'name#unique-logger-id' for call on named context. | 	Context            string             `json:"context,omitempty"`            // Console context descriptor for calls on non-default console context (not console.*): 'anonymous#unique-logger-id' for call on unnamed context, 'name#unique-logger-id' for call on named context. | ||||||
| } | } | ||||||
|  | |||||||
| @ -3,6 +3,8 @@ package runtime | |||||||
| import ( | import ( | ||||||
| 	"errors" | 	"errors" | ||||||
| 	"fmt" | 	"fmt" | ||||||
|  | 	"strconv" | ||||||
|  | 	"time" | ||||||
| 
 | 
 | ||||||
| 	"github.com/mailru/easyjson" | 	"github.com/mailru/easyjson" | ||||||
| 	"github.com/mailru/easyjson/jlexer" | 	"github.com/mailru/easyjson/jlexer" | ||||||
| @ -190,11 +192,34 @@ func (e *ExceptionDetails) Error() string { | |||||||
| } | } | ||||||
| 
 | 
 | ||||||
| // Timestamp number of milliseconds since epoch. | // Timestamp number of milliseconds since epoch. | ||||||
| type Timestamp float64 | type Timestamp time.Time | ||||||
| 
 | 
 | ||||||
| // Float64 returns the Timestamp as float64 value. | // Time returns the Timestamp as time.Time value. | ||||||
| func (t Timestamp) Float64() float64 { | func (t Timestamp) Time() time.Time { | ||||||
| 	return float64(t) | 	return time.Time(t) | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | // MarshalEasyJSON satisfies easyjson.Marshaler. | ||||||
|  | func (t Timestamp) MarshalEasyJSON(out *jwriter.Writer) { | ||||||
|  | 	v := float64(time.Time(t).UnixNano() / int64(time.Millisecond)) | ||||||
|  | 
 | ||||||
|  | 	out.Buffer.EnsureSpace(20) | ||||||
|  | 	out.Buffer.Buf = strconv.AppendFloat(out.Buffer.Buf, v, 'f', -1, 64) | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | // MarshalJSON satisfies json.Marshaler. | ||||||
|  | func (t Timestamp) MarshalJSON() ([]byte, error) { | ||||||
|  | 	return easyjson.Marshal(t) | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | // UnmarshalEasyJSON satisfies easyjson.Unmarshaler. | ||||||
|  | func (t *Timestamp) UnmarshalEasyJSON(in *jlexer.Lexer) { | ||||||
|  | 	*t = Timestamp(time.Unix(0, int64(in.Float64()*float64(time.Millisecond)))) | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | // UnmarshalJSON satisfies json.Unmarshaler. | ||||||
|  | func (t *Timestamp) UnmarshalJSON(buf []byte) error { | ||||||
|  | 	return easyjson.Unmarshal(buf, t) | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| // CallFrame stack entry for runtime errors and assertions. | // CallFrame stack entry for runtime errors and assertions. | ||||||
|  | |||||||
| @ -12,14 +12,19 @@ | |||||||
| //  - add 'Inspector.Message' type as a object with id (integer), method (MethodType), params (interface{}), error (MessageError). | //  - add 'Inspector.Message' type as a object with id (integer), method (MethodType), params (interface{}), error (MessageError). | ||||||
| //  - add 'Inspector.DetachReason' type and change event 'Inspector.detached''s parameter reason's type. | //  - add 'Inspector.DetachReason' type and change event 'Inspector.detached''s parameter reason's type. | ||||||
| //  - add 'Inspector.ErrorType' type. | //  - add 'Inspector.ErrorType' type. | ||||||
|  | //  - change type of Network.Timestamp and Runtime.Timestamp to internal Timestamp type. | ||||||
|  | //  - add 'Page.Bootstamp' type and convert all command/event parameters named | ||||||
|  | //    'timestamp' in the Page domain to the Bootstamp type. | ||||||
| //  - change any object property or command/event parameter named 'timestamp' | //  - change any object property or command/event parameter named 'timestamp' | ||||||
| //    that doesn't have a $ref defined to 'Runtime.Timestamp'. | //    that doesn't have a $ref defined to 'Network.Timestamp'. | ||||||
| //  - convert object properties and event/command parameters that are enums into independent types. | //  - convert object properties and event/command parameters that are enums into independent types. | ||||||
| //  - change '*.modifiers' parameters to type Input.Modifier. | //  - change '*.modifiers' parameters to type Input.Modifier. | ||||||
| //  - add 'DOM.NodeType' type and convert "nodeType" parameters to it. | //  - add 'DOM.NodeType' type and convert "nodeType" parameters to it. | ||||||
| //  - change Page.Frame.id/parentID to FrameID type. | //  - change Page.Frame.id/parentID to FrameID type. | ||||||
| //  - add additional properties to 'Page.Frame' and 'DOM.Node' for use by higher level packages. | //  - add additional properties to 'Page.Frame' and 'DOM.Node' for use by higher level packages. | ||||||
| //  - add special unmarshaler to NodeId, BackendNodeId, FrameId to handle values from older (v1.1) protocol versions. -- NOTE: this might need to be applied to more types, such as network.LoaderId | //  - add special unmarshaler to NodeId, BackendNodeId, FrameId to handle | ||||||
|  | //    values from older (v1.1) protocol versions. -- NOTE: this might need to be | ||||||
|  | //    applied to more types, such as network.LoaderId | ||||||
| //  - rename 'Input.GestureSourceType' -> 'Input.GestureType'. | //  - rename 'Input.GestureSourceType' -> 'Input.GestureType'. | ||||||
| //  - rename CSS.CSS* types. | //  - rename CSS.CSS* types. | ||||||
| //  - add Error() method to 'Runtime.ExceptionDetails' type so that it can be used as error. | //  - add Error() method to 'Runtime.ExceptionDetails' type so that it can be used as error. | ||||||
| @ -33,7 +38,6 @@ package fixup | |||||||
| 
 | 
 | ||||||
| import ( | import ( | ||||||
| 	"fmt" | 	"fmt" | ||||||
| 	"log" |  | ||||||
| 	"strings" | 	"strings" | ||||||
| 
 | 
 | ||||||
| 	"github.com/knq/chromedp/cmd/chromedp-gen/internal" | 	"github.com/knq/chromedp/cmd/chromedp-gen/internal" | ||||||
| @ -197,6 +201,14 @@ func FixDomains(domains []*internal.Domain) { | |||||||
| 		}, | 		}, | ||||||
| 	} | 	} | ||||||
| 
 | 
 | ||||||
|  | 	// bootstamp type | ||||||
|  | 	bootstampType := &internal.Type{ | ||||||
|  | 		ID:            "Bootstamp", | ||||||
|  | 		Type:          internal.TypeTimestamp, | ||||||
|  | 		TimestampType: internal.TimestampTypeBootstamp, | ||||||
|  | 		Description:   "Bootstamp type.", | ||||||
|  | 	} | ||||||
|  | 
 | ||||||
| 	// process domains | 	// process domains | ||||||
| 	for _, d := range domains { | 	for _, d := range domains { | ||||||
| 		switch d.Domain { | 		switch d.Domain { | ||||||
| @ -279,8 +291,14 @@ func FixDomains(domains []*internal.Domain) { | |||||||
| 			} | 			} | ||||||
| 
 | 
 | ||||||
| 		case internal.DomainPage: | 		case internal.DomainPage: | ||||||
|  | 			// add Page types | ||||||
|  | 			d.Types = append(d.Types, bootstampType) | ||||||
|  | 
 | ||||||
| 			for _, t := range d.Types { | 			for _, t := range d.Types { | ||||||
| 				switch t.ID { | 				switch t.ID { | ||||||
|  | 				case "Bootstamp": | ||||||
|  | 					t.Extra += templates.ExtraTimestampTemplate(t, d) | ||||||
|  | 
 | ||||||
| 				case "FrameId": | 				case "FrameId": | ||||||
| 					t.Extra += templates.ExtraFixStringUnmarshaler(internal.ForceCamel(t.ID), "", "") | 					t.Extra += templates.ExtraFixStringUnmarshaler(internal.ForceCamel(t.ID), "", "") | ||||||
| 
 | 
 | ||||||
| @ -330,10 +348,11 @@ func FixDomains(domains []*internal.Domain) { | |||||||
| 		case internal.DomainNetwork: | 		case internal.DomainNetwork: | ||||||
| 			for _, t := range d.Types { | 			for _, t := range d.Types { | ||||||
| 				// change Timestamp to TypeTimestamp and add extra unmarshaling template | 				// change Timestamp to TypeTimestamp and add extra unmarshaling template | ||||||
| 				/*if t.ID == "Timestamp" { | 				if t.ID == "Timestamp" { | ||||||
| 					t.Type = internal.TypeTimestamp | 					t.Type = internal.TypeTimestamp | ||||||
|  | 					t.TimestampType = internal.TimestampTypeSecond | ||||||
| 					t.Extra = templates.ExtraTimestampTemplate(t, d) | 					t.Extra = templates.ExtraTimestampTemplate(t, d) | ||||||
| 				}*/ | 				} | ||||||
| 
 | 
 | ||||||
| 				// change Headers to be a map[string]interface{} | 				// change Headers to be a map[string]interface{} | ||||||
| 				if t.ID == "Headers" { | 				if t.ID == "Headers" { | ||||||
| @ -346,9 +365,10 @@ func FixDomains(domains []*internal.Domain) { | |||||||
| 			var types []*internal.Type | 			var types []*internal.Type | ||||||
| 			for _, t := range d.Types { | 			for _, t := range d.Types { | ||||||
| 				switch t.ID { | 				switch t.ID { | ||||||
| 				/*case "Timestamp": | 				case "Timestamp": | ||||||
| 				t.Type = internal.TypeTimestamp | 					t.Type = internal.TypeTimestamp | ||||||
| 				t.Extra += templates.ExtraBootstampTemplate(t, d)*/ | 					t.TimestampType = internal.TimestampTypeMillisecond | ||||||
|  | 					t.Extra += templates.ExtraTimestampTemplate(t, d) | ||||||
| 
 | 
 | ||||||
| 				case "ExceptionDetails": | 				case "ExceptionDetails": | ||||||
| 					t.Extra += templates.ExtraExceptionDetailsTemplate() | 					t.Extra += templates.ExtraExceptionDetailsTemplate() | ||||||
| @ -439,15 +459,21 @@ func convertObjectProperties(params []*internal.Type, d *internal.Domain, name s | |||||||
| 		case p.Enum != nil: | 		case p.Enum != nil: | ||||||
| 			r = append(r, fixupEnumParameter(name, p, d)) | 			r = append(r, fixupEnumParameter(name, p, d)) | ||||||
| 
 | 
 | ||||||
| 		case p.Name == "timestamp": | 		case p.Name == "timestamp" && p.Ref == "" && d.Domain == internal.DomainPage: | ||||||
| 			log.Printf(">>> %s.%s.%s", d.Domain, name, p.Name) | 			r = append(r, &internal.Type{ | ||||||
| 			r = append(r, p) | 				Name:        p.Name, | ||||||
| 		/*r = append(r, &internal.Type{ | 				Ref:         "Page.Bootstamp", | ||||||
| 			Name:        p.Name, | 				Description: p.Description, | ||||||
| 			Ref:         "Runtime.Timestamp", | 				Optional:    p.Optional, | ||||||
| 			Description: p.Description, | 			}) | ||||||
| 			Optional:    p.Optional, | 
 | ||||||
| 		})*/ | 		case p.Name == "timestamp" && p.Ref == "": | ||||||
|  | 			r = append(r, &internal.Type{ | ||||||
|  | 				Name:        p.Name, | ||||||
|  | 				Ref:         "Network.Timestamp", | ||||||
|  | 				Description: p.Description, | ||||||
|  | 				Optional:    p.Optional, | ||||||
|  | 			}) | ||||||
| 
 | 
 | ||||||
| 		case p.Name == "modifiers": | 		case p.Name == "modifiers": | ||||||
| 			r = append(r, &internal.Type{ | 			r = append(r, &internal.Type{ | ||||||
|  | |||||||
| @ -148,3 +148,12 @@ func (te TypeEnum) GoEmptyValue() string { | |||||||
| 
 | 
 | ||||||
| 	return `nil` | 	return `nil` | ||||||
| } | } | ||||||
|  | 
 | ||||||
|  | // TimestampType are the various timestamp subtypes. | ||||||
|  | type TimestampType int | ||||||
|  | 
 | ||||||
|  | const ( | ||||||
|  | 	TimestampTypeMillisecond TimestampType = 1 + iota | ||||||
|  | 	TimestampTypeSecond | ||||||
|  | 	TimestampTypeBootstamp | ||||||
|  | ) | ||||||
|  | |||||||
| @ -145,6 +145,9 @@ type Type struct { | |||||||
| 	// Redirect is the redirect value for the command or event. | 	// Redirect is the redirect value for the command or event. | ||||||
| 	Redirect DomainType `json:"redirect,omitempty"` | 	Redirect DomainType `json:"redirect,omitempty"` | ||||||
| 
 | 
 | ||||||
|  | 	// TimestampType is the timestamp subtype. | ||||||
|  | 	TimestampType TimestampType `json:"-"` | ||||||
|  | 
 | ||||||
| 	// NoExpose toggles whether or not to expose the type. | 	// NoExpose toggles whether or not to expose the type. | ||||||
| 	NoExpose bool `json:"-"` | 	NoExpose bool `json:"-"` | ||||||
| 
 | 
 | ||||||
|  | |||||||
| @ -6,14 +6,18 @@ | |||||||
| // defines its JSON unmarshaling. | // defines its JSON unmarshaling. | ||||||
| {% func ExtraTimestampTemplate(t *internal.Type, d *internal.Domain) %}{%code | {% func ExtraTimestampTemplate(t *internal.Type, d *internal.Domain) %}{%code | ||||||
| 	typ := t.IDorName() | 	typ := t.IDorName() | ||||||
| 	bootstamp := false | 	bootstamp := t.TimestampType == internal.TimestampTypeBootstamp | ||||||
|  | 	timeRes := "time.Millisecond" | ||||||
|  | 	if t.TimestampType != internal.TimestampTypeMillisecond { | ||||||
|  | 		timeRes = "time.Second" | ||||||
|  | 	} | ||||||
| %} | %} | ||||||
| // MarshalEasyJSON satisfies easyjson.Marshaler. | // MarshalEasyJSON satisfies easyjson.Marshaler. | ||||||
| func (t {%s= typ %}) MarshalEasyJSON(out *jwriter.Writer) { | func (t {%s= typ %}) MarshalEasyJSON(out *jwriter.Writer) { | ||||||
| {% if bootstamp %} | 	v := {% if bootstamp %}float64(time.Time(t).Sub(sysutil.BootTime()))/float64(time.Second){% else %}float64(time.Time(t).UnixNano()/int64({%s= timeRes %})){% endif %} | ||||||
| 	out.Float64(float64(time.Time(t).Sub(sysutil.BootTime()))/float64(time.Second)){% else %} | 
 | ||||||
| 	out.Float64(float64(time.Time(t))/float64(time.Second)) | 	out.Buffer.EnsureSpace(20) | ||||||
| {% endif %} | 	out.Buffer.Buf = strconv.AppendFloat(out.Buffer.Buf, v, 'f', -1, 64) | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| // MarshalJSON satisfies json.Marshaler. | // MarshalJSON satisfies json.Marshaler. | ||||||
| @ -22,11 +26,9 @@ func (t {%s= typ %}) MarshalJSON() ([]byte, error) { | |||||||
| } | } | ||||||
| 
 | 
 | ||||||
| // UnmarshalEasyJSON satisfies easyjson.Unmarshaler. | // UnmarshalEasyJSON satisfies easyjson.Unmarshaler. | ||||||
| func (t *{%s= typ %}) UnmarshalEasyJSON(in *jlexer.Lexer) { | func (t *{%s= typ %}) UnmarshalEasyJSON(in *jlexer.Lexer) {{% if bootstamp %} | ||||||
| {% if bootstamp %} |  | ||||||
| 	*t = {%s= typ %}(sysutil.BootTime().Add(time.Duration(in.Float64()*float64(time.Second)))){% else %} | 	*t = {%s= typ %}(sysutil.BootTime().Add(time.Duration(in.Float64()*float64(time.Second)))){% else %} | ||||||
| 	*t = {%s= typ %}(time.Duration(in.Float64()*float64(time.Second))) | 	*t = {%s= typ %}(time.Unix(0, int64(in.Float64()*float64({%s= timeRes %})))){% endif %} | ||||||
| {% endif %} |  | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| // UnmarshalJSON satisfies json.Unmarshaler. | // UnmarshalJSON satisfies json.Unmarshaler. | ||||||
|  | |||||||
| @ -29,118 +29,128 @@ var ( | |||||||
| func StreamExtraTimestampTemplate(qw422016 *qt422016.Writer, t *internal.Type, d *internal.Domain) { | func StreamExtraTimestampTemplate(qw422016 *qt422016.Writer, t *internal.Type, d *internal.Domain) { | ||||||
| 	//line templates/extra.qtpl:8 | 	//line templates/extra.qtpl:8 | ||||||
| 	typ := t.IDorName() | 	typ := t.IDorName() | ||||||
| 	bootstamp := false | 	bootstamp := t.TimestampType == internal.TimestampTypeBootstamp | ||||||
|  | 	timeRes := "time.Millisecond" | ||||||
|  | 	if t.TimestampType != internal.TimestampTypeMillisecond { | ||||||
|  | 		timeRes = "time.Second" | ||||||
|  | 	} | ||||||
| 
 | 
 | ||||||
| 	//line templates/extra.qtpl:10 | 	//line templates/extra.qtpl:14 | ||||||
| 	qw422016.N().S(` | 	qw422016.N().S(` | ||||||
| // MarshalEasyJSON satisfies easyjson.Marshaler. | // MarshalEasyJSON satisfies easyjson.Marshaler. | ||||||
| func (t `) | func (t `) | ||||||
| 	//line templates/extra.qtpl:12 |  | ||||||
| 	qw422016.N().S(typ) |  | ||||||
| 	//line templates/extra.qtpl:12 |  | ||||||
| 	qw422016.N().S(`) MarshalEasyJSON(out *jwriter.Writer) { |  | ||||||
| `) |  | ||||||
| 	//line templates/extra.qtpl:13 |  | ||||||
| 	if bootstamp { |  | ||||||
| 		//line templates/extra.qtpl:13 |  | ||||||
| 		qw422016.N().S(` |  | ||||||
| 	out.Float64(float64(time.Time(t).Sub(sysutil.BootTime()))/float64(time.Second))`) |  | ||||||
| 		//line templates/extra.qtpl:14 |  | ||||||
| 	} else { |  | ||||||
| 		//line templates/extra.qtpl:14 |  | ||||||
| 		qw422016.N().S(` |  | ||||||
| 	out.Float64(float64(time.Time(t))/float64(time.Second)) |  | ||||||
| `) |  | ||||||
| 		//line templates/extra.qtpl:16 |  | ||||||
| 	} |  | ||||||
| 	//line templates/extra.qtpl:16 | 	//line templates/extra.qtpl:16 | ||||||
|  | 	qw422016.N().S(typ) | ||||||
|  | 	//line templates/extra.qtpl:16 | ||||||
|  | 	qw422016.N().S(`) MarshalEasyJSON(out *jwriter.Writer) { | ||||||
|  | 	v := `) | ||||||
|  | 	//line templates/extra.qtpl:17 | ||||||
|  | 	if bootstamp { | ||||||
|  | 		//line templates/extra.qtpl:17 | ||||||
|  | 		qw422016.N().S(`float64(time.Time(t).Sub(sysutil.BootTime()))/float64(time.Second)`) | ||||||
|  | 		//line templates/extra.qtpl:17 | ||||||
|  | 	} else { | ||||||
|  | 		//line templates/extra.qtpl:17 | ||||||
|  | 		qw422016.N().S(`float64(time.Time(t).UnixNano()/int64(`) | ||||||
|  | 		//line templates/extra.qtpl:17 | ||||||
|  | 		qw422016.N().S(timeRes) | ||||||
|  | 		//line templates/extra.qtpl:17 | ||||||
|  | 		qw422016.N().S(`))`) | ||||||
|  | 		//line templates/extra.qtpl:17 | ||||||
|  | 	} | ||||||
|  | 	//line templates/extra.qtpl:17 | ||||||
| 	qw422016.N().S(` | 	qw422016.N().S(` | ||||||
|  | 
 | ||||||
|  | 	out.Buffer.EnsureSpace(20) | ||||||
|  | 	out.Buffer.Buf = strconv.AppendFloat(out.Buffer.Buf, v, 'f', -1, 64) | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| // MarshalJSON satisfies json.Marshaler. | // MarshalJSON satisfies json.Marshaler. | ||||||
| func (t `) | func (t `) | ||||||
| 	//line templates/extra.qtpl:20 | 	//line templates/extra.qtpl:24 | ||||||
| 	qw422016.N().S(typ) | 	qw422016.N().S(typ) | ||||||
| 	//line templates/extra.qtpl:20 | 	//line templates/extra.qtpl:24 | ||||||
| 	qw422016.N().S(`) MarshalJSON() ([]byte, error) { | 	qw422016.N().S(`) MarshalJSON() ([]byte, error) { | ||||||
| 	return easyjson.Marshal(t) | 	return easyjson.Marshal(t) | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| // UnmarshalEasyJSON satisfies easyjson.Unmarshaler. | // UnmarshalEasyJSON satisfies easyjson.Unmarshaler. | ||||||
| func (t *`) | func (t *`) | ||||||
| 	//line templates/extra.qtpl:25 |  | ||||||
| 	qw422016.N().S(typ) |  | ||||||
| 	//line templates/extra.qtpl:25 |  | ||||||
| 	qw422016.N().S(`) UnmarshalEasyJSON(in *jlexer.Lexer) { |  | ||||||
| `) |  | ||||||
| 	//line templates/extra.qtpl:26 |  | ||||||
| 	if bootstamp { |  | ||||||
| 		//line templates/extra.qtpl:26 |  | ||||||
| 		qw422016.N().S(` |  | ||||||
| 	*t = `) |  | ||||||
| 		//line templates/extra.qtpl:27 |  | ||||||
| 		qw422016.N().S(typ) |  | ||||||
| 		//line templates/extra.qtpl:27 |  | ||||||
| 		qw422016.N().S(`(sysutil.BootTime().Add(time.Duration(in.Float64()*float64(time.Second))))`) |  | ||||||
| 		//line templates/extra.qtpl:27 |  | ||||||
| 	} else { |  | ||||||
| 		//line templates/extra.qtpl:27 |  | ||||||
| 		qw422016.N().S(` |  | ||||||
| 	*t = `) |  | ||||||
| 		//line templates/extra.qtpl:28 |  | ||||||
| 		qw422016.N().S(typ) |  | ||||||
| 		//line templates/extra.qtpl:28 |  | ||||||
| 		qw422016.N().S(`(time.Duration(in.Float64()*float64(time.Second))) |  | ||||||
| `) |  | ||||||
| 		//line templates/extra.qtpl:29 |  | ||||||
| 	} |  | ||||||
| 	//line templates/extra.qtpl:29 | 	//line templates/extra.qtpl:29 | ||||||
|  | 	qw422016.N().S(typ) | ||||||
|  | 	//line templates/extra.qtpl:29 | ||||||
|  | 	qw422016.N().S(`) UnmarshalEasyJSON(in *jlexer.Lexer) {`) | ||||||
|  | 	//line templates/extra.qtpl:29 | ||||||
|  | 	if bootstamp { | ||||||
|  | 		//line templates/extra.qtpl:29 | ||||||
|  | 		qw422016.N().S(` | ||||||
|  | 	*t = `) | ||||||
|  | 		//line templates/extra.qtpl:30 | ||||||
|  | 		qw422016.N().S(typ) | ||||||
|  | 		//line templates/extra.qtpl:30 | ||||||
|  | 		qw422016.N().S(`(sysutil.BootTime().Add(time.Duration(in.Float64()*float64(time.Second))))`) | ||||||
|  | 		//line templates/extra.qtpl:30 | ||||||
|  | 	} else { | ||||||
|  | 		//line templates/extra.qtpl:30 | ||||||
|  | 		qw422016.N().S(` | ||||||
|  | 	*t = `) | ||||||
|  | 		//line templates/extra.qtpl:31 | ||||||
|  | 		qw422016.N().S(typ) | ||||||
|  | 		//line templates/extra.qtpl:31 | ||||||
|  | 		qw422016.N().S(`(time.Unix(0, int64(in.Float64()*float64(`) | ||||||
|  | 		//line templates/extra.qtpl:31 | ||||||
|  | 		qw422016.N().S(timeRes) | ||||||
|  | 		//line templates/extra.qtpl:31 | ||||||
|  | 		qw422016.N().S(`))))`) | ||||||
|  | 		//line templates/extra.qtpl:31 | ||||||
|  | 	} | ||||||
|  | 	//line templates/extra.qtpl:31 | ||||||
| 	qw422016.N().S(` | 	qw422016.N().S(` | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| // UnmarshalJSON satisfies json.Unmarshaler. | // UnmarshalJSON satisfies json.Unmarshaler. | ||||||
| func (t *`) | func (t *`) | ||||||
| 	//line templates/extra.qtpl:33 | 	//line templates/extra.qtpl:35 | ||||||
| 	qw422016.N().S(typ) | 	qw422016.N().S(typ) | ||||||
| 	//line templates/extra.qtpl:33 | 	//line templates/extra.qtpl:35 | ||||||
| 	qw422016.N().S(`) UnmarshalJSON(buf []byte) error { | 	qw422016.N().S(`) UnmarshalJSON(buf []byte) error { | ||||||
| 	return easyjson.Unmarshal(buf, t) | 	return easyjson.Unmarshal(buf, t) | ||||||
| } | } | ||||||
| `) | `) | ||||||
| //line templates/extra.qtpl:36 | //line templates/extra.qtpl:38 | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| //line templates/extra.qtpl:36 | //line templates/extra.qtpl:38 | ||||||
| func WriteExtraTimestampTemplate(qq422016 qtio422016.Writer, t *internal.Type, d *internal.Domain) { | func WriteExtraTimestampTemplate(qq422016 qtio422016.Writer, t *internal.Type, d *internal.Domain) { | ||||||
| 	//line templates/extra.qtpl:36 | 	//line templates/extra.qtpl:38 | ||||||
| 	qw422016 := qt422016.AcquireWriter(qq422016) | 	qw422016 := qt422016.AcquireWriter(qq422016) | ||||||
| 	//line templates/extra.qtpl:36 | 	//line templates/extra.qtpl:38 | ||||||
| 	StreamExtraTimestampTemplate(qw422016, t, d) | 	StreamExtraTimestampTemplate(qw422016, t, d) | ||||||
| 	//line templates/extra.qtpl:36 | 	//line templates/extra.qtpl:38 | ||||||
| 	qt422016.ReleaseWriter(qw422016) | 	qt422016.ReleaseWriter(qw422016) | ||||||
| //line templates/extra.qtpl:36 | //line templates/extra.qtpl:38 | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| //line templates/extra.qtpl:36 | //line templates/extra.qtpl:38 | ||||||
| func ExtraTimestampTemplate(t *internal.Type, d *internal.Domain) string { | func ExtraTimestampTemplate(t *internal.Type, d *internal.Domain) string { | ||||||
| 	//line templates/extra.qtpl:36 | 	//line templates/extra.qtpl:38 | ||||||
| 	qb422016 := qt422016.AcquireByteBuffer() | 	qb422016 := qt422016.AcquireByteBuffer() | ||||||
| 	//line templates/extra.qtpl:36 | 	//line templates/extra.qtpl:38 | ||||||
| 	WriteExtraTimestampTemplate(qb422016, t, d) | 	WriteExtraTimestampTemplate(qb422016, t, d) | ||||||
| 	//line templates/extra.qtpl:36 | 	//line templates/extra.qtpl:38 | ||||||
| 	qs422016 := string(qb422016.B) | 	qs422016 := string(qb422016.B) | ||||||
| 	//line templates/extra.qtpl:36 | 	//line templates/extra.qtpl:38 | ||||||
| 	qt422016.ReleaseByteBuffer(qb422016) | 	qt422016.ReleaseByteBuffer(qb422016) | ||||||
| 	//line templates/extra.qtpl:36 | 	//line templates/extra.qtpl:38 | ||||||
| 	return qs422016 | 	return qs422016 | ||||||
| //line templates/extra.qtpl:36 | //line templates/extra.qtpl:38 | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| // ExtraFrameTemplate is a special template for the Page.Frame type, adding FrameState. | // ExtraFrameTemplate is a special template for the Page.Frame type, adding FrameState. | ||||||
| 
 | 
 | ||||||
| //line templates/extra.qtpl:39 | //line templates/extra.qtpl:41 | ||||||
| func StreamExtraFrameTemplate(qw422016 *qt422016.Writer) { | func StreamExtraFrameTemplate(qw422016 *qt422016.Writer) { | ||||||
| 	//line templates/extra.qtpl:39 | 	//line templates/extra.qtpl:41 | ||||||
| 	qw422016.N().S(` | 	qw422016.N().S(` | ||||||
| // FrameState is the state of a Frame. | // FrameState is the state of a Frame. | ||||||
| type FrameState uint16 | type FrameState uint16 | ||||||
| @ -179,40 +189,40 @@ func (fs FrameState) String() string { | |||||||
| // EmptyFrameID is the "non-existent" frame id. | // EmptyFrameID is the "non-existent" frame id. | ||||||
| const EmptyFrameID = FrameID("") | const EmptyFrameID = FrameID("") | ||||||
| `) | `) | ||||||
| //line templates/extra.qtpl:76 | //line templates/extra.qtpl:78 | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| //line templates/extra.qtpl:76 | //line templates/extra.qtpl:78 | ||||||
| func WriteExtraFrameTemplate(qq422016 qtio422016.Writer) { | func WriteExtraFrameTemplate(qq422016 qtio422016.Writer) { | ||||||
| 	//line templates/extra.qtpl:76 | 	//line templates/extra.qtpl:78 | ||||||
| 	qw422016 := qt422016.AcquireWriter(qq422016) | 	qw422016 := qt422016.AcquireWriter(qq422016) | ||||||
| 	//line templates/extra.qtpl:76 | 	//line templates/extra.qtpl:78 | ||||||
| 	StreamExtraFrameTemplate(qw422016) | 	StreamExtraFrameTemplate(qw422016) | ||||||
| 	//line templates/extra.qtpl:76 | 	//line templates/extra.qtpl:78 | ||||||
| 	qt422016.ReleaseWriter(qw422016) | 	qt422016.ReleaseWriter(qw422016) | ||||||
| //line templates/extra.qtpl:76 | //line templates/extra.qtpl:78 | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| //line templates/extra.qtpl:76 | //line templates/extra.qtpl:78 | ||||||
| func ExtraFrameTemplate() string { | func ExtraFrameTemplate() string { | ||||||
| 	//line templates/extra.qtpl:76 | 	//line templates/extra.qtpl:78 | ||||||
| 	qb422016 := qt422016.AcquireByteBuffer() | 	qb422016 := qt422016.AcquireByteBuffer() | ||||||
| 	//line templates/extra.qtpl:76 | 	//line templates/extra.qtpl:78 | ||||||
| 	WriteExtraFrameTemplate(qb422016) | 	WriteExtraFrameTemplate(qb422016) | ||||||
| 	//line templates/extra.qtpl:76 | 	//line templates/extra.qtpl:78 | ||||||
| 	qs422016 := string(qb422016.B) | 	qs422016 := string(qb422016.B) | ||||||
| 	//line templates/extra.qtpl:76 | 	//line templates/extra.qtpl:78 | ||||||
| 	qt422016.ReleaseByteBuffer(qb422016) | 	qt422016.ReleaseByteBuffer(qb422016) | ||||||
| 	//line templates/extra.qtpl:76 | 	//line templates/extra.qtpl:78 | ||||||
| 	return qs422016 | 	return qs422016 | ||||||
| //line templates/extra.qtpl:76 | //line templates/extra.qtpl:78 | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| // ExtraNodeTemplate is a special template for the DOM.Node type, adding NodeState. | // ExtraNodeTemplate is a special template for the DOM.Node type, adding NodeState. | ||||||
| 
 | 
 | ||||||
| //line templates/extra.qtpl:79 | //line templates/extra.qtpl:81 | ||||||
| func StreamExtraNodeTemplate(qw422016 *qt422016.Writer) { | func StreamExtraNodeTemplate(qw422016 *qt422016.Writer) { | ||||||
| 	//line templates/extra.qtpl:79 | 	//line templates/extra.qtpl:81 | ||||||
| 	qw422016.N().S(` | 	qw422016.N().S(` | ||||||
| // AttributeValue returns the named attribute for the node. | // AttributeValue returns the named attribute for the node. | ||||||
| func (n *Node) AttributeValue(name string) string { | func (n *Node) AttributeValue(name string) string { | ||||||
| @ -246,21 +256,21 @@ func (n *Node) xpath(stopAtDocument, stopAtID bool) string { | |||||||
| 	case stopAtID && id != "": | 	case stopAtID && id != "": | ||||||
| 		p = "/" | 		p = "/" | ||||||
| 		pos = `) | 		pos = `) | ||||||
| 	//line templates/extra.qtpl:79 | 	//line templates/extra.qtpl:81 | ||||||
| 	qw422016.N().S("`") | 	qw422016.N().S("`") | ||||||
| 	//line templates/extra.qtpl:79 | 	//line templates/extra.qtpl:81 | ||||||
| 	qw422016.N().S(`[@id='`) | 	qw422016.N().S(`[@id='`) | ||||||
| 	//line templates/extra.qtpl:79 | 	//line templates/extra.qtpl:81 | ||||||
| 	qw422016.N().S("`") | 	qw422016.N().S("`") | ||||||
| 	//line templates/extra.qtpl:79 | 	//line templates/extra.qtpl:81 | ||||||
| 	qw422016.N().S(`+id+`) | 	qw422016.N().S(`+id+`) | ||||||
| 	//line templates/extra.qtpl:79 | 	//line templates/extra.qtpl:81 | ||||||
| 	qw422016.N().S("`") | 	qw422016.N().S("`") | ||||||
| 	//line templates/extra.qtpl:79 | 	//line templates/extra.qtpl:81 | ||||||
| 	qw422016.N().S(`']`) | 	qw422016.N().S(`']`) | ||||||
| 	//line templates/extra.qtpl:79 | 	//line templates/extra.qtpl:81 | ||||||
| 	qw422016.N().S("`") | 	qw422016.N().S("`") | ||||||
| 	//line templates/extra.qtpl:79 | 	//line templates/extra.qtpl:81 | ||||||
| 	qw422016.N().S(` | 	qw422016.N().S(` | ||||||
| 
 | 
 | ||||||
| 	case n.Parent != nil: | 	case n.Parent != nil: | ||||||
| @ -344,136 +354,136 @@ func (ns NodeState) String() string { | |||||||
| // EmptyNodeID is the "non-existent" node id. | // EmptyNodeID is the "non-existent" node id. | ||||||
| const EmptyNodeID = NodeID(0) | const EmptyNodeID = NodeID(0) | ||||||
| `) | `) | ||||||
| //line templates/extra.qtpl:193 | //line templates/extra.qtpl:195 | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| //line templates/extra.qtpl:193 | //line templates/extra.qtpl:195 | ||||||
| func WriteExtraNodeTemplate(qq422016 qtio422016.Writer) { | func WriteExtraNodeTemplate(qq422016 qtio422016.Writer) { | ||||||
| 	//line templates/extra.qtpl:193 | 	//line templates/extra.qtpl:195 | ||||||
| 	qw422016 := qt422016.AcquireWriter(qq422016) | 	qw422016 := qt422016.AcquireWriter(qq422016) | ||||||
| 	//line templates/extra.qtpl:193 | 	//line templates/extra.qtpl:195 | ||||||
| 	StreamExtraNodeTemplate(qw422016) | 	StreamExtraNodeTemplate(qw422016) | ||||||
| 	//line templates/extra.qtpl:193 | 	//line templates/extra.qtpl:195 | ||||||
| 	qt422016.ReleaseWriter(qw422016) | 	qt422016.ReleaseWriter(qw422016) | ||||||
| //line templates/extra.qtpl:193 | //line templates/extra.qtpl:195 | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| //line templates/extra.qtpl:193 | //line templates/extra.qtpl:195 | ||||||
| func ExtraNodeTemplate() string { | func ExtraNodeTemplate() string { | ||||||
| 	//line templates/extra.qtpl:193 | 	//line templates/extra.qtpl:195 | ||||||
| 	qb422016 := qt422016.AcquireByteBuffer() | 	qb422016 := qt422016.AcquireByteBuffer() | ||||||
| 	//line templates/extra.qtpl:193 | 	//line templates/extra.qtpl:195 | ||||||
| 	WriteExtraNodeTemplate(qb422016) | 	WriteExtraNodeTemplate(qb422016) | ||||||
| 	//line templates/extra.qtpl:193 | 	//line templates/extra.qtpl:195 | ||||||
| 	qs422016 := string(qb422016.B) | 	qs422016 := string(qb422016.B) | ||||||
| 	//line templates/extra.qtpl:193 | 	//line templates/extra.qtpl:195 | ||||||
| 	qt422016.ReleaseByteBuffer(qb422016) | 	qt422016.ReleaseByteBuffer(qb422016) | ||||||
| 	//line templates/extra.qtpl:193 | 	//line templates/extra.qtpl:195 | ||||||
| 	return qs422016 | 	return qs422016 | ||||||
| //line templates/extra.qtpl:193 | //line templates/extra.qtpl:195 | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| // ExtraFixStringUnmarshaler is a template that forces values to be parsed properly. | // ExtraFixStringUnmarshaler is a template that forces values to be parsed properly. | ||||||
| 
 | 
 | ||||||
| //line templates/extra.qtpl:196 | //line templates/extra.qtpl:198 | ||||||
| func StreamExtraFixStringUnmarshaler(qw422016 *qt422016.Writer, typ, parseFunc, extra string) { | func StreamExtraFixStringUnmarshaler(qw422016 *qt422016.Writer, typ, parseFunc, extra string) { | ||||||
| 	//line templates/extra.qtpl:196 | 	//line templates/extra.qtpl:198 | ||||||
| 	qw422016.N().S(` | 	qw422016.N().S(` | ||||||
| // UnmarshalEasyJSON satisfies easyjson.Unmarshaler. | // UnmarshalEasyJSON satisfies easyjson.Unmarshaler. | ||||||
| func (t *`) | func (t *`) | ||||||
| 	//line templates/extra.qtpl:198 | 	//line templates/extra.qtpl:200 | ||||||
| 	qw422016.N().S(typ) | 	qw422016.N().S(typ) | ||||||
| 	//line templates/extra.qtpl:198 | 	//line templates/extra.qtpl:200 | ||||||
| 	qw422016.N().S(`) UnmarshalEasyJSON(in *jlexer.Lexer) { | 	qw422016.N().S(`) UnmarshalEasyJSON(in *jlexer.Lexer) { | ||||||
| 	buf := in.Raw() | 	buf := in.Raw() | ||||||
| 	if l := len(buf); l > 2 && buf[0] == '"' && buf[l-1] == '"' { | 	if l := len(buf); l > 2 && buf[0] == '"' && buf[l-1] == '"' { | ||||||
| 		buf = buf[1:l-1] | 		buf = buf[1:l-1] | ||||||
| 	} | 	} | ||||||
| `) | `) | ||||||
| 	//line templates/extra.qtpl:203 | 	//line templates/extra.qtpl:205 | ||||||
| 	if parseFunc != "" { | 	if parseFunc != "" { | ||||||
| 		//line templates/extra.qtpl:203 | 		//line templates/extra.qtpl:205 | ||||||
| 		qw422016.N().S(` | 		qw422016.N().S(` | ||||||
| 	v, err := strconv.`) | 	v, err := strconv.`) | ||||||
| 		//line templates/extra.qtpl:204 | 		//line templates/extra.qtpl:206 | ||||||
| 		qw422016.N().S(parseFunc) | 		qw422016.N().S(parseFunc) | ||||||
| 		//line templates/extra.qtpl:204 | 		//line templates/extra.qtpl:206 | ||||||
| 		qw422016.N().S(`(string(buf)`) | 		qw422016.N().S(`(string(buf)`) | ||||||
| 		//line templates/extra.qtpl:204 | 		//line templates/extra.qtpl:206 | ||||||
| 		qw422016.N().S(extra) | 		qw422016.N().S(extra) | ||||||
| 		//line templates/extra.qtpl:204 | 		//line templates/extra.qtpl:206 | ||||||
| 		qw422016.N().S(`) | 		qw422016.N().S(`) | ||||||
| 	if err != nil { | 	if err != nil { | ||||||
| 		in.AddError(err) | 		in.AddError(err) | ||||||
| 	} | 	} | ||||||
| `) | `) | ||||||
| 		//line templates/extra.qtpl:208 | 		//line templates/extra.qtpl:210 | ||||||
| 	} | 	} | ||||||
| 	//line templates/extra.qtpl:208 | 	//line templates/extra.qtpl:210 | ||||||
| 	qw422016.N().S(` | 	qw422016.N().S(` | ||||||
| 	*t = `) | 	*t = `) | ||||||
| 	//line templates/extra.qtpl:209 | 	//line templates/extra.qtpl:211 | ||||||
| 	qw422016.N().S(typ) | 	qw422016.N().S(typ) | ||||||
| 	//line templates/extra.qtpl:209 | 	//line templates/extra.qtpl:211 | ||||||
| 	qw422016.N().S(`(`) | 	qw422016.N().S(`(`) | ||||||
| 	//line templates/extra.qtpl:209 | 	//line templates/extra.qtpl:211 | ||||||
| 	if parseFunc != "" { | 	if parseFunc != "" { | ||||||
| 		//line templates/extra.qtpl:209 | 		//line templates/extra.qtpl:211 | ||||||
| 		qw422016.N().S(`v`) | 		qw422016.N().S(`v`) | ||||||
| 		//line templates/extra.qtpl:209 | 		//line templates/extra.qtpl:211 | ||||||
| 	} else { | 	} else { | ||||||
| 		//line templates/extra.qtpl:209 | 		//line templates/extra.qtpl:211 | ||||||
| 		qw422016.N().S(`buf`) | 		qw422016.N().S(`buf`) | ||||||
| 		//line templates/extra.qtpl:209 | 		//line templates/extra.qtpl:211 | ||||||
| 	} | 	} | ||||||
| 	//line templates/extra.qtpl:209 | 	//line templates/extra.qtpl:211 | ||||||
| 	qw422016.N().S(`) | 	qw422016.N().S(`) | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| // UnmarshalJSON satisfies json.Unmarshaler. | // UnmarshalJSON satisfies json.Unmarshaler. | ||||||
| func (t *`) | func (t *`) | ||||||
| 	//line templates/extra.qtpl:213 | 	//line templates/extra.qtpl:215 | ||||||
| 	qw422016.N().S(typ) | 	qw422016.N().S(typ) | ||||||
| 	//line templates/extra.qtpl:213 | 	//line templates/extra.qtpl:215 | ||||||
| 	qw422016.N().S(`) UnmarshalJSON(buf []byte) error { | 	qw422016.N().S(`) UnmarshalJSON(buf []byte) error { | ||||||
| 	return easyjson.Unmarshal(buf, t) | 	return easyjson.Unmarshal(buf, t) | ||||||
| } | } | ||||||
| `) | `) | ||||||
| //line templates/extra.qtpl:216 | //line templates/extra.qtpl:218 | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| //line templates/extra.qtpl:216 | //line templates/extra.qtpl:218 | ||||||
| func WriteExtraFixStringUnmarshaler(qq422016 qtio422016.Writer, typ, parseFunc, extra string) { | func WriteExtraFixStringUnmarshaler(qq422016 qtio422016.Writer, typ, parseFunc, extra string) { | ||||||
| 	//line templates/extra.qtpl:216 | 	//line templates/extra.qtpl:218 | ||||||
| 	qw422016 := qt422016.AcquireWriter(qq422016) | 	qw422016 := qt422016.AcquireWriter(qq422016) | ||||||
| 	//line templates/extra.qtpl:216 | 	//line templates/extra.qtpl:218 | ||||||
| 	StreamExtraFixStringUnmarshaler(qw422016, typ, parseFunc, extra) | 	StreamExtraFixStringUnmarshaler(qw422016, typ, parseFunc, extra) | ||||||
| 	//line templates/extra.qtpl:216 | 	//line templates/extra.qtpl:218 | ||||||
| 	qt422016.ReleaseWriter(qw422016) | 	qt422016.ReleaseWriter(qw422016) | ||||||
| //line templates/extra.qtpl:216 | //line templates/extra.qtpl:218 | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| //line templates/extra.qtpl:216 | //line templates/extra.qtpl:218 | ||||||
| func ExtraFixStringUnmarshaler(typ, parseFunc, extra string) string { | func ExtraFixStringUnmarshaler(typ, parseFunc, extra string) string { | ||||||
| 	//line templates/extra.qtpl:216 | 	//line templates/extra.qtpl:218 | ||||||
| 	qb422016 := qt422016.AcquireByteBuffer() | 	qb422016 := qt422016.AcquireByteBuffer() | ||||||
| 	//line templates/extra.qtpl:216 | 	//line templates/extra.qtpl:218 | ||||||
| 	WriteExtraFixStringUnmarshaler(qb422016, typ, parseFunc, extra) | 	WriteExtraFixStringUnmarshaler(qb422016, typ, parseFunc, extra) | ||||||
| 	//line templates/extra.qtpl:216 | 	//line templates/extra.qtpl:218 | ||||||
| 	qs422016 := string(qb422016.B) | 	qs422016 := string(qb422016.B) | ||||||
| 	//line templates/extra.qtpl:216 | 	//line templates/extra.qtpl:218 | ||||||
| 	qt422016.ReleaseByteBuffer(qb422016) | 	qt422016.ReleaseByteBuffer(qb422016) | ||||||
| 	//line templates/extra.qtpl:216 | 	//line templates/extra.qtpl:218 | ||||||
| 	return qs422016 | 	return qs422016 | ||||||
| //line templates/extra.qtpl:216 | //line templates/extra.qtpl:218 | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| // ExtraExceptionDetailsTemplate is a special template for the Runtime.ExceptionDetails type that | // ExtraExceptionDetailsTemplate is a special template for the Runtime.ExceptionDetails type that | ||||||
| // defines the standard error interface. | // defines the standard error interface. | ||||||
| 
 | 
 | ||||||
| //line templates/extra.qtpl:220 | //line templates/extra.qtpl:222 | ||||||
| func StreamExtraExceptionDetailsTemplate(qw422016 *qt422016.Writer) { | func StreamExtraExceptionDetailsTemplate(qw422016 *qt422016.Writer) { | ||||||
| 	//line templates/extra.qtpl:220 | 	//line templates/extra.qtpl:222 | ||||||
| 	qw422016.N().S(` | 	qw422016.N().S(` | ||||||
| // Error satisfies the error interface. | // Error satisfies the error interface. | ||||||
| func (e *ExceptionDetails) Error() string { | func (e *ExceptionDetails) Error() string { | ||||||
| @ -482,41 +492,41 @@ func (e *ExceptionDetails) Error() string { | |||||||
| 	return fmt.Sprintf("encountered exception '%s' (%d:%d)", e.Text, e.LineNumber, e.ColumnNumber) | 	return fmt.Sprintf("encountered exception '%s' (%d:%d)", e.Text, e.LineNumber, e.ColumnNumber) | ||||||
| } | } | ||||||
| `) | `) | ||||||
| //line templates/extra.qtpl:227 | //line templates/extra.qtpl:229 | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| //line templates/extra.qtpl:227 | //line templates/extra.qtpl:229 | ||||||
| func WriteExtraExceptionDetailsTemplate(qq422016 qtio422016.Writer) { | func WriteExtraExceptionDetailsTemplate(qq422016 qtio422016.Writer) { | ||||||
| 	//line templates/extra.qtpl:227 | 	//line templates/extra.qtpl:229 | ||||||
| 	qw422016 := qt422016.AcquireWriter(qq422016) | 	qw422016 := qt422016.AcquireWriter(qq422016) | ||||||
| 	//line templates/extra.qtpl:227 | 	//line templates/extra.qtpl:229 | ||||||
| 	StreamExtraExceptionDetailsTemplate(qw422016) | 	StreamExtraExceptionDetailsTemplate(qw422016) | ||||||
| 	//line templates/extra.qtpl:227 | 	//line templates/extra.qtpl:229 | ||||||
| 	qt422016.ReleaseWriter(qw422016) | 	qt422016.ReleaseWriter(qw422016) | ||||||
| //line templates/extra.qtpl:227 | //line templates/extra.qtpl:229 | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| //line templates/extra.qtpl:227 | //line templates/extra.qtpl:229 | ||||||
| func ExtraExceptionDetailsTemplate() string { | func ExtraExceptionDetailsTemplate() string { | ||||||
| 	//line templates/extra.qtpl:227 | 	//line templates/extra.qtpl:229 | ||||||
| 	qb422016 := qt422016.AcquireByteBuffer() | 	qb422016 := qt422016.AcquireByteBuffer() | ||||||
| 	//line templates/extra.qtpl:227 | 	//line templates/extra.qtpl:229 | ||||||
| 	WriteExtraExceptionDetailsTemplate(qb422016) | 	WriteExtraExceptionDetailsTemplate(qb422016) | ||||||
| 	//line templates/extra.qtpl:227 | 	//line templates/extra.qtpl:229 | ||||||
| 	qs422016 := string(qb422016.B) | 	qs422016 := string(qb422016.B) | ||||||
| 	//line templates/extra.qtpl:227 | 	//line templates/extra.qtpl:229 | ||||||
| 	qt422016.ReleaseByteBuffer(qb422016) | 	qt422016.ReleaseByteBuffer(qb422016) | ||||||
| 	//line templates/extra.qtpl:227 | 	//line templates/extra.qtpl:229 | ||||||
| 	return qs422016 | 	return qs422016 | ||||||
| //line templates/extra.qtpl:227 | //line templates/extra.qtpl:229 | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| // ExtraCDPTypes is the template for additional internal type | // ExtraCDPTypes is the template for additional internal type | ||||||
| // declarations. | // declarations. | ||||||
| 
 | 
 | ||||||
| //line templates/extra.qtpl:231 | //line templates/extra.qtpl:233 | ||||||
| func StreamExtraCDPTypes(qw422016 *qt422016.Writer) { | func StreamExtraCDPTypes(qw422016 *qt422016.Writer) { | ||||||
| 	//line templates/extra.qtpl:231 | 	//line templates/extra.qtpl:233 | ||||||
| 	qw422016.N().S(` | 	qw422016.N().S(` | ||||||
| 
 | 
 | ||||||
| // Error satisfies the error interface. | // Error satisfies the error interface. | ||||||
| @ -550,40 +560,40 @@ type Handler interface { | |||||||
| 	Release(<-chan interface{}) | 	Release(<-chan interface{}) | ||||||
| } | } | ||||||
| `) | `) | ||||||
| //line templates/extra.qtpl:263 | //line templates/extra.qtpl:265 | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| //line templates/extra.qtpl:263 | //line templates/extra.qtpl:265 | ||||||
| func WriteExtraCDPTypes(qq422016 qtio422016.Writer) { | func WriteExtraCDPTypes(qq422016 qtio422016.Writer) { | ||||||
| 	//line templates/extra.qtpl:263 | 	//line templates/extra.qtpl:265 | ||||||
| 	qw422016 := qt422016.AcquireWriter(qq422016) | 	qw422016 := qt422016.AcquireWriter(qq422016) | ||||||
| 	//line templates/extra.qtpl:263 | 	//line templates/extra.qtpl:265 | ||||||
| 	StreamExtraCDPTypes(qw422016) | 	StreamExtraCDPTypes(qw422016) | ||||||
| 	//line templates/extra.qtpl:263 | 	//line templates/extra.qtpl:265 | ||||||
| 	qt422016.ReleaseWriter(qw422016) | 	qt422016.ReleaseWriter(qw422016) | ||||||
| //line templates/extra.qtpl:263 | //line templates/extra.qtpl:265 | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| //line templates/extra.qtpl:263 | //line templates/extra.qtpl:265 | ||||||
| func ExtraCDPTypes() string { | func ExtraCDPTypes() string { | ||||||
| 	//line templates/extra.qtpl:263 | 	//line templates/extra.qtpl:265 | ||||||
| 	qb422016 := qt422016.AcquireByteBuffer() | 	qb422016 := qt422016.AcquireByteBuffer() | ||||||
| 	//line templates/extra.qtpl:263 | 	//line templates/extra.qtpl:265 | ||||||
| 	WriteExtraCDPTypes(qb422016) | 	WriteExtraCDPTypes(qb422016) | ||||||
| 	//line templates/extra.qtpl:263 | 	//line templates/extra.qtpl:265 | ||||||
| 	qs422016 := string(qb422016.B) | 	qs422016 := string(qb422016.B) | ||||||
| 	//line templates/extra.qtpl:263 | 	//line templates/extra.qtpl:265 | ||||||
| 	qt422016.ReleaseByteBuffer(qb422016) | 	qt422016.ReleaseByteBuffer(qb422016) | ||||||
| 	//line templates/extra.qtpl:263 | 	//line templates/extra.qtpl:265 | ||||||
| 	return qs422016 | 	return qs422016 | ||||||
| //line templates/extra.qtpl:263 | //line templates/extra.qtpl:265 | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| // ExtraUtilTemplate generates the decode func for the Message type. | // ExtraUtilTemplate generates the decode func for the Message type. | ||||||
| 
 | 
 | ||||||
| //line templates/extra.qtpl:266 | //line templates/extra.qtpl:268 | ||||||
| func StreamExtraUtilTemplate(qw422016 *qt422016.Writer, domains []*internal.Domain) { | func StreamExtraUtilTemplate(qw422016 *qt422016.Writer, domains []*internal.Domain) { | ||||||
| 	//line templates/extra.qtpl:266 | 	//line templates/extra.qtpl:268 | ||||||
| 	qw422016.N().S(` | 	qw422016.N().S(` | ||||||
| type empty struct{} | type empty struct{} | ||||||
| var emptyVal = &empty{} | var emptyVal = &empty{} | ||||||
| @ -592,66 +602,66 @@ var emptyVal = &empty{} | |||||||
| func UnmarshalMessage(msg *cdp.Message) (interface{}, error) { | func UnmarshalMessage(msg *cdp.Message) (interface{}, error) { | ||||||
| 	var v easyjson.Unmarshaler | 	var v easyjson.Unmarshaler | ||||||
| 	switch msg.Method {`) | 	switch msg.Method {`) | ||||||
| 	//line templates/extra.qtpl:273 | 	//line templates/extra.qtpl:275 | ||||||
| 	for _, d := range domains { | 	for _, d := range domains { | ||||||
| 		//line templates/extra.qtpl:273 | 		//line templates/extra.qtpl:275 | ||||||
| 		for _, c := range d.Commands { | 		for _, c := range d.Commands { | ||||||
| 			//line templates/extra.qtpl:273 | 			//line templates/extra.qtpl:275 | ||||||
| 			qw422016.N().S(` | 			qw422016.N().S(` | ||||||
| 	case cdp.`) | 	case cdp.`) | ||||||
| 			//line templates/extra.qtpl:274 | 			//line templates/extra.qtpl:276 | ||||||
| 			qw422016.N().S(c.CommandMethodType(d)) | 			qw422016.N().S(c.CommandMethodType(d)) | ||||||
| 			//line templates/extra.qtpl:274 | 			//line templates/extra.qtpl:276 | ||||||
| 			qw422016.N().S(`:`) | 			qw422016.N().S(`:`) | ||||||
| 			//line templates/extra.qtpl:274 | 			//line templates/extra.qtpl:276 | ||||||
| 			if len(c.Returns) == 0 { | 			if len(c.Returns) == 0 { | ||||||
| 				//line templates/extra.qtpl:274 | 				//line templates/extra.qtpl:276 | ||||||
| 				qw422016.N().S(` | 				qw422016.N().S(` | ||||||
| 		return emptyVal, nil`) | 		return emptyVal, nil`) | ||||||
| 				//line templates/extra.qtpl:275 | 				//line templates/extra.qtpl:277 | ||||||
| 			} else { | 			} else { | ||||||
| 				//line templates/extra.qtpl:275 | 				//line templates/extra.qtpl:277 | ||||||
| 				qw422016.N().S(` | 				qw422016.N().S(` | ||||||
| 		v = new(`) | 		v = new(`) | ||||||
| 				//line templates/extra.qtpl:276 | 				//line templates/extra.qtpl:278 | ||||||
| 				qw422016.N().S(d.PackageRefName()) | 				qw422016.N().S(d.PackageRefName()) | ||||||
| 				//line templates/extra.qtpl:276 | 				//line templates/extra.qtpl:278 | ||||||
| 				qw422016.N().S(`.`) | 				qw422016.N().S(`.`) | ||||||
| 				//line templates/extra.qtpl:276 | 				//line templates/extra.qtpl:278 | ||||||
| 				qw422016.N().S(c.CommandReturnsType()) | 				qw422016.N().S(c.CommandReturnsType()) | ||||||
| 				//line templates/extra.qtpl:276 | 				//line templates/extra.qtpl:278 | ||||||
| 				qw422016.N().S(`)`) | 				qw422016.N().S(`)`) | ||||||
| 				//line templates/extra.qtpl:276 | 				//line templates/extra.qtpl:278 | ||||||
| 			} | 			} | ||||||
| 			//line templates/extra.qtpl:276 | 			//line templates/extra.qtpl:278 | ||||||
| 			qw422016.N().S(` | 			qw422016.N().S(` | ||||||
| 	`) | 	`) | ||||||
| 			//line templates/extra.qtpl:277 | 			//line templates/extra.qtpl:279 | ||||||
| 		} | 		} | ||||||
| 		//line templates/extra.qtpl:277 | 		//line templates/extra.qtpl:279 | ||||||
| 		for _, e := range d.Events { | 		for _, e := range d.Events { | ||||||
| 			//line templates/extra.qtpl:277 | 			//line templates/extra.qtpl:279 | ||||||
| 			qw422016.N().S(` | 			qw422016.N().S(` | ||||||
| 	case cdp.`) | 	case cdp.`) | ||||||
| 			//line templates/extra.qtpl:278 | 			//line templates/extra.qtpl:280 | ||||||
| 			qw422016.N().S(e.EventMethodType(d)) | 			qw422016.N().S(e.EventMethodType(d)) | ||||||
| 			//line templates/extra.qtpl:278 | 			//line templates/extra.qtpl:280 | ||||||
| 			qw422016.N().S(`: | 			qw422016.N().S(`: | ||||||
| 		v = new(`) | 		v = new(`) | ||||||
| 			//line templates/extra.qtpl:279 | 			//line templates/extra.qtpl:281 | ||||||
| 			qw422016.N().S(d.PackageRefName()) | 			qw422016.N().S(d.PackageRefName()) | ||||||
| 			//line templates/extra.qtpl:279 | 			//line templates/extra.qtpl:281 | ||||||
| 			qw422016.N().S(`.`) | 			qw422016.N().S(`.`) | ||||||
| 			//line templates/extra.qtpl:279 | 			//line templates/extra.qtpl:281 | ||||||
| 			qw422016.N().S(e.EventType()) | 			qw422016.N().S(e.EventType()) | ||||||
| 			//line templates/extra.qtpl:279 | 			//line templates/extra.qtpl:281 | ||||||
| 			qw422016.N().S(`) | 			qw422016.N().S(`) | ||||||
| 	`) | 	`) | ||||||
| 			//line templates/extra.qtpl:280 | 			//line templates/extra.qtpl:282 | ||||||
| 		} | 		} | ||||||
| 		//line templates/extra.qtpl:280 | 		//line templates/extra.qtpl:282 | ||||||
| 	} | 	} | ||||||
| 	//line templates/extra.qtpl:280 | 	//line templates/extra.qtpl:282 | ||||||
| 	qw422016.N().S(`} | 	qw422016.N().S(`} | ||||||
| 
 | 
 | ||||||
| 	var buf easyjson.RawMessage | 	var buf easyjson.RawMessage | ||||||
| @ -674,69 +684,69 @@ func UnmarshalMessage(msg *cdp.Message) (interface{}, error) { | |||||||
| 	return v, nil | 	return v, nil | ||||||
| } | } | ||||||
| `) | `) | ||||||
| //line templates/extra.qtpl:301 | //line templates/extra.qtpl:303 | ||||||
| } |  | ||||||
| 
 |  | ||||||
| //line templates/extra.qtpl:301 |  | ||||||
| func WriteExtraUtilTemplate(qq422016 qtio422016.Writer, domains []*internal.Domain) { |  | ||||||
| 	//line templates/extra.qtpl:301 |  | ||||||
| 	qw422016 := qt422016.AcquireWriter(qq422016) |  | ||||||
| 	//line templates/extra.qtpl:301 |  | ||||||
| 	StreamExtraUtilTemplate(qw422016, domains) |  | ||||||
| 	//line templates/extra.qtpl:301 |  | ||||||
| 	qt422016.ReleaseWriter(qw422016) |  | ||||||
| //line templates/extra.qtpl:301 |  | ||||||
| } |  | ||||||
| 
 |  | ||||||
| //line templates/extra.qtpl:301 |  | ||||||
| func ExtraUtilTemplate(domains []*internal.Domain) string { |  | ||||||
| 	//line templates/extra.qtpl:301 |  | ||||||
| 	qb422016 := qt422016.AcquireByteBuffer() |  | ||||||
| 	//line templates/extra.qtpl:301 |  | ||||||
| 	WriteExtraUtilTemplate(qb422016, domains) |  | ||||||
| 	//line templates/extra.qtpl:301 |  | ||||||
| 	qs422016 := string(qb422016.B) |  | ||||||
| 	//line templates/extra.qtpl:301 |  | ||||||
| 	qt422016.ReleaseByteBuffer(qb422016) |  | ||||||
| 	//line templates/extra.qtpl:301 |  | ||||||
| 	return qs422016 |  | ||||||
| //line templates/extra.qtpl:301 |  | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| //line templates/extra.qtpl:303 | //line templates/extra.qtpl:303 | ||||||
| func StreamExtraMethodTypeDomainDecoder(qw422016 *qt422016.Writer) { | func WriteExtraUtilTemplate(qq422016 qtio422016.Writer, domains []*internal.Domain) { | ||||||
| 	//line templates/extra.qtpl:303 | 	//line templates/extra.qtpl:303 | ||||||
|  | 	qw422016 := qt422016.AcquireWriter(qq422016) | ||||||
|  | 	//line templates/extra.qtpl:303 | ||||||
|  | 	StreamExtraUtilTemplate(qw422016, domains) | ||||||
|  | 	//line templates/extra.qtpl:303 | ||||||
|  | 	qt422016.ReleaseWriter(qw422016) | ||||||
|  | //line templates/extra.qtpl:303 | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | //line templates/extra.qtpl:303 | ||||||
|  | func ExtraUtilTemplate(domains []*internal.Domain) string { | ||||||
|  | 	//line templates/extra.qtpl:303 | ||||||
|  | 	qb422016 := qt422016.AcquireByteBuffer() | ||||||
|  | 	//line templates/extra.qtpl:303 | ||||||
|  | 	WriteExtraUtilTemplate(qb422016, domains) | ||||||
|  | 	//line templates/extra.qtpl:303 | ||||||
|  | 	qs422016 := string(qb422016.B) | ||||||
|  | 	//line templates/extra.qtpl:303 | ||||||
|  | 	qt422016.ReleaseByteBuffer(qb422016) | ||||||
|  | 	//line templates/extra.qtpl:303 | ||||||
|  | 	return qs422016 | ||||||
|  | //line templates/extra.qtpl:303 | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | //line templates/extra.qtpl:305 | ||||||
|  | func StreamExtraMethodTypeDomainDecoder(qw422016 *qt422016.Writer) { | ||||||
|  | 	//line templates/extra.qtpl:305 | ||||||
| 	qw422016.N().S(` | 	qw422016.N().S(` | ||||||
| // Domain returns the Chrome Debugging Protocol domain of the event or command. | // Domain returns the Chrome Debugging Protocol domain of the event or command. | ||||||
| func (t MethodType) Domain() string { | func (t MethodType) Domain() string { | ||||||
| 	return string(t[:strings.IndexByte(string(t), '.')]) | 	return string(t[:strings.IndexByte(string(t), '.')]) | ||||||
| } | } | ||||||
| `) | `) | ||||||
| //line templates/extra.qtpl:308 | //line templates/extra.qtpl:310 | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| //line templates/extra.qtpl:308 | //line templates/extra.qtpl:310 | ||||||
| func WriteExtraMethodTypeDomainDecoder(qq422016 qtio422016.Writer) { | func WriteExtraMethodTypeDomainDecoder(qq422016 qtio422016.Writer) { | ||||||
| 	//line templates/extra.qtpl:308 | 	//line templates/extra.qtpl:310 | ||||||
| 	qw422016 := qt422016.AcquireWriter(qq422016) | 	qw422016 := qt422016.AcquireWriter(qq422016) | ||||||
| 	//line templates/extra.qtpl:308 | 	//line templates/extra.qtpl:310 | ||||||
| 	StreamExtraMethodTypeDomainDecoder(qw422016) | 	StreamExtraMethodTypeDomainDecoder(qw422016) | ||||||
| 	//line templates/extra.qtpl:308 | 	//line templates/extra.qtpl:310 | ||||||
| 	qt422016.ReleaseWriter(qw422016) | 	qt422016.ReleaseWriter(qw422016) | ||||||
| //line templates/extra.qtpl:308 | //line templates/extra.qtpl:310 | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| //line templates/extra.qtpl:308 | //line templates/extra.qtpl:310 | ||||||
| func ExtraMethodTypeDomainDecoder() string { | func ExtraMethodTypeDomainDecoder() string { | ||||||
| 	//line templates/extra.qtpl:308 | 	//line templates/extra.qtpl:310 | ||||||
| 	qb422016 := qt422016.AcquireByteBuffer() | 	qb422016 := qt422016.AcquireByteBuffer() | ||||||
| 	//line templates/extra.qtpl:308 | 	//line templates/extra.qtpl:310 | ||||||
| 	WriteExtraMethodTypeDomainDecoder(qb422016) | 	WriteExtraMethodTypeDomainDecoder(qb422016) | ||||||
| 	//line templates/extra.qtpl:308 | 	//line templates/extra.qtpl:310 | ||||||
| 	qs422016 := string(qb422016.B) | 	qs422016 := string(qb422016.B) | ||||||
| 	//line templates/extra.qtpl:308 | 	//line templates/extra.qtpl:310 | ||||||
| 	qt422016.ReleaseByteBuffer(qb422016) | 	qt422016.ReleaseByteBuffer(qb422016) | ||||||
| 	//line templates/extra.qtpl:308 | 	//line templates/extra.qtpl:310 | ||||||
| 	return qs422016 | 	return qs422016 | ||||||
| //line templates/extra.qtpl:308 | //line templates/extra.qtpl:310 | ||||||
| } | } | ||||||
|  | |||||||
							
								
								
									
										1
									
								
								examples/cookie/.gitignore
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										1
									
								
								examples/cookie/.gitignore
									
									
									
									
										vendored
									
									
								
							| @ -1 +1,2 @@ | |||||||
| cookie | cookie | ||||||
|  | cookie.exe | ||||||
|  | |||||||
| @ -8,6 +8,7 @@ import ( | |||||||
| 	"fmt" | 	"fmt" | ||||||
| 	"log" | 	"log" | ||||||
| 	"net/http" | 	"net/http" | ||||||
|  | 	"time" | ||||||
| 
 | 
 | ||||||
| 	cdp "github.com/knq/chromedp" | 	cdp "github.com/knq/chromedp" | ||||||
| 	cdptypes "github.com/knq/chromedp/cdp" | 	cdptypes "github.com/knq/chromedp/cdp" | ||||||
| @ -26,7 +27,7 @@ func main() { | |||||||
| 	// setup http server | 	// setup http server | ||||||
| 	mux := http.NewServeMux() | 	mux := http.NewServeMux() | ||||||
| 	mux.HandleFunc("/", func(res http.ResponseWriter, req *http.Request) { | 	mux.HandleFunc("/", func(res http.ResponseWriter, req *http.Request) { | ||||||
| 		buf, err := json.Marshal(req.Cookies()) | 		buf, err := json.MarshalIndent(req.Cookies(), "", "  ") | ||||||
| 		if err != nil { | 		if err != nil { | ||||||
| 			http.Error(res, err.Error(), http.StatusInternalServerError) | 			http.Error(res, err.Error(), http.StatusInternalServerError) | ||||||
| 			return | 			return | ||||||
| @ -70,7 +71,12 @@ func main() { | |||||||
| func setcookies(host string, res *string) cdp.Tasks { | func setcookies(host string, res *string) cdp.Tasks { | ||||||
| 	return cdp.Tasks{ | 	return cdp.Tasks{ | ||||||
| 		cdp.ActionFunc(func(ctxt context.Context, h cdptypes.Handler) error { | 		cdp.ActionFunc(func(ctxt context.Context, h cdptypes.Handler) error { | ||||||
| 			success, err := network.SetCookie(host, "cookiename", "cookievalue").Do(ctxt, h) | 			expr := cdptypes.Timestamp(time.Now().Add(180 * 24 * time.Hour)) | ||||||
|  | 			success, err := network.SetCookie(host, "cookiename", "cookievalue"). | ||||||
|  | 				WithExpirationDate(&expr). | ||||||
|  | 				WithDomain("localhost"). | ||||||
|  | 				WithHTTPOnly(true). | ||||||
|  | 				Do(ctxt, h) | ||||||
| 			if err != nil { | 			if err != nil { | ||||||
| 				return err | 				return err | ||||||
| 			} | 			} | ||||||
| @ -81,6 +87,18 @@ func setcookies(host string, res *string) cdp.Tasks { | |||||||
| 		}), | 		}), | ||||||
| 		cdp.Navigate(host), | 		cdp.Navigate(host), | ||||||
| 		cdp.Text(`#result`, res, cdp.ByID, cdp.NodeVisible), | 		cdp.Text(`#result`, res, cdp.ByID, cdp.NodeVisible), | ||||||
|  | 		cdp.ActionFunc(func(ctxt context.Context, h cdptypes.Handler) error { | ||||||
|  | 			cookies, err := network.GetAllCookies().Do(ctxt, h) | ||||||
|  | 			if err != nil { | ||||||
|  | 				return err | ||||||
|  | 			} | ||||||
|  | 
 | ||||||
|  | 			for i, cookie := range cookies { | ||||||
|  | 				log.Printf("cookie %d: %+v", i, cookie) | ||||||
|  | 			} | ||||||
|  | 
 | ||||||
|  | 			return nil | ||||||
|  | 		}), | ||||||
| 	} | 	} | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
|  | |||||||
							
								
								
									
										1
									
								
								examples/upload/.gitignore
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										1
									
								
								examples/upload/.gitignore
									
									
									
									
										vendored
									
									
								
							| @ -1 +1,2 @@ | |||||||
| upload | upload | ||||||
|  | upload.exe | ||||||
|  | |||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user