// Package emulation provides the Chrome Debugging Protocol // commands, types, and events for the Chrome Emulation domain. // // This domain emulates different environments for the page. // // Generated by the chromedp-gen command. package emulation // AUTOGENERATED. DO NOT EDIT. import ( "context" cdp "github.com/knq/chromedp/cdp" "github.com/mailru/easyjson" ) // SetDeviceMetricsOverrideParams overrides the values of device screen // dimensions (window.screen.width, window.screen.height, window.innerWidth, // window.innerHeight, and "device-width"/"device-height"-related CSS media // query results). type SetDeviceMetricsOverrideParams struct { Width int64 `json:"width"` // Overriding width value in pixels (minimum 0, maximum 10000000). 0 disables the override. Height int64 `json:"height"` // Overriding height value in pixels (minimum 0, maximum 10000000). 0 disables the override. DeviceScaleFactor float64 `json:"deviceScaleFactor"` // Overriding device scale factor value. 0 disables the override. Mobile bool `json:"mobile"` // Whether to emulate mobile device. This includes viewport meta tag, overlay scrollbars, text autosizing and more. FitWindow bool `json:"fitWindow"` // Whether a view that exceeds the available browser window area should be scaled down to fit. Scale float64 `json:"scale,omitempty"` // Scale to apply to resulting view image. Ignored in |fitWindow| mode. ScreenWidth int64 `json:"screenWidth,omitempty"` // Overriding screen width value in pixels (minimum 0, maximum 10000000). Only used for |mobile==true|. ScreenHeight int64 `json:"screenHeight,omitempty"` // Overriding screen height value in pixels (minimum 0, maximum 10000000). Only used for |mobile==true|. PositionX int64 `json:"positionX,omitempty"` // Overriding view X position on screen in pixels (minimum 0, maximum 10000000). Only used for |mobile==true|. PositionY int64 `json:"positionY,omitempty"` // Overriding view Y position on screen in pixels (minimum 0, maximum 10000000). Only used for |mobile==true|. ScreenOrientation *ScreenOrientation `json:"screenOrientation,omitempty"` // Screen orientation override. } // SetDeviceMetricsOverride overrides the values of device screen dimensions // (window.screen.width, window.screen.height, window.innerWidth, // window.innerHeight, and "device-width"/"device-height"-related CSS media // query results). // // parameters: // width - Overriding width value in pixels (minimum 0, maximum 10000000). 0 disables the override. // height - Overriding height value in pixels (minimum 0, maximum 10000000). 0 disables the override. // deviceScaleFactor - Overriding device scale factor value. 0 disables the override. // mobile - Whether to emulate mobile device. This includes viewport meta tag, overlay scrollbars, text autosizing and more. // fitWindow - Whether a view that exceeds the available browser window area should be scaled down to fit. func SetDeviceMetricsOverride(width int64, height int64, deviceScaleFactor float64, mobile bool, fitWindow bool) *SetDeviceMetricsOverrideParams { return &SetDeviceMetricsOverrideParams{ Width: width, Height: height, DeviceScaleFactor: deviceScaleFactor, Mobile: mobile, FitWindow: fitWindow, } } // WithScale scale to apply to resulting view image. Ignored in |fitWindow| // mode. func (p SetDeviceMetricsOverrideParams) WithScale(scale float64) *SetDeviceMetricsOverrideParams { p.Scale = scale return &p } // WithScreenWidth overriding screen width value in pixels (minimum 0, // maximum 10000000). Only used for |mobile==true|. func (p SetDeviceMetricsOverrideParams) WithScreenWidth(screenWidth int64) *SetDeviceMetricsOverrideParams { p.ScreenWidth = screenWidth return &p } // WithScreenHeight overriding screen height value in pixels (minimum 0, // maximum 10000000). Only used for |mobile==true|. func (p SetDeviceMetricsOverrideParams) WithScreenHeight(screenHeight int64) *SetDeviceMetricsOverrideParams { p.ScreenHeight = screenHeight return &p } // WithPositionX overriding view X position on screen in pixels (minimum 0, // maximum 10000000). Only used for |mobile==true|. func (p SetDeviceMetricsOverrideParams) WithPositionX(positionX int64) *SetDeviceMetricsOverrideParams { p.PositionX = positionX return &p } // WithPositionY overriding view Y position on screen in pixels (minimum 0, // maximum 10000000). Only used for |mobile==true|. func (p SetDeviceMetricsOverrideParams) WithPositionY(positionY int64) *SetDeviceMetricsOverrideParams { p.PositionY = positionY return &p } // WithScreenOrientation screen orientation override. func (p SetDeviceMetricsOverrideParams) WithScreenOrientation(screenOrientation *ScreenOrientation) *SetDeviceMetricsOverrideParams { p.ScreenOrientation = screenOrientation return &p } // Do executes Emulation.setDeviceMetricsOverride. func (p *SetDeviceMetricsOverrideParams) Do(ctxt context.Context, h cdp.FrameHandler) (err error) { if ctxt == nil { ctxt = context.Background() } // marshal buf, err := easyjson.Marshal(p) if err != nil { return err } // execute ch := h.Execute(ctxt, cdp.CommandEmulationSetDeviceMetricsOverride, easyjson.RawMessage(buf)) // read response select { case res := <-ch: if res == nil { return cdp.ErrChannelClosed } switch v := res.(type) { case easyjson.RawMessage: return nil case error: return v } case <-ctxt.Done(): return cdp.ErrContextDone } return cdp.ErrUnknownResult } // ClearDeviceMetricsOverrideParams clears the overriden device metrics. type ClearDeviceMetricsOverrideParams struct{} // ClearDeviceMetricsOverride clears the overriden device metrics. func ClearDeviceMetricsOverride() *ClearDeviceMetricsOverrideParams { return &ClearDeviceMetricsOverrideParams{} } // Do executes Emulation.clearDeviceMetricsOverride. func (p *ClearDeviceMetricsOverrideParams) Do(ctxt context.Context, h cdp.FrameHandler) (err error) { if ctxt == nil { ctxt = context.Background() } // execute ch := h.Execute(ctxt, cdp.CommandEmulationClearDeviceMetricsOverride, cdp.Empty) // read response select { case res := <-ch: if res == nil { return cdp.ErrChannelClosed } switch v := res.(type) { case easyjson.RawMessage: return nil case error: return v } case <-ctxt.Done(): return cdp.ErrContextDone } return cdp.ErrUnknownResult } // ForceViewportParams overrides the visible area of the page. The change is // hidden from the page, i.e. the observable scroll position and page scale does // not change. In effect, the command moves the specified area of the page into // the top-left corner of the frame. type ForceViewportParams struct { X float64 `json:"x"` // X coordinate of top-left corner of the area (CSS pixels). Y float64 `json:"y"` // Y coordinate of top-left corner of the area (CSS pixels). Scale float64 `json:"scale"` // Scale to apply to the area (relative to a page scale of 1.0). } // ForceViewport overrides the visible area of the page. The change is hidden // from the page, i.e. the observable scroll position and page scale does not // change. In effect, the command moves the specified area of the page into the // top-left corner of the frame. // // parameters: // x - X coordinate of top-left corner of the area (CSS pixels). // y - Y coordinate of top-left corner of the area (CSS pixels). // scale - Scale to apply to the area (relative to a page scale of 1.0). func ForceViewport(x float64, y float64, scale float64) *ForceViewportParams { return &ForceViewportParams{ X: x, Y: y, Scale: scale, } } // Do executes Emulation.forceViewport. func (p *ForceViewportParams) Do(ctxt context.Context, h cdp.FrameHandler) (err error) { if ctxt == nil { ctxt = context.Background() } // marshal buf, err := easyjson.Marshal(p) if err != nil { return err } // execute ch := h.Execute(ctxt, cdp.CommandEmulationForceViewport, easyjson.RawMessage(buf)) // read response select { case res := <-ch: if res == nil { return cdp.ErrChannelClosed } switch v := res.(type) { case easyjson.RawMessage: return nil case error: return v } case <-ctxt.Done(): return cdp.ErrContextDone } return cdp.ErrUnknownResult } // ResetViewportParams resets the visible area of the page to the original // viewport, undoing any effects of the forceViewport command. type ResetViewportParams struct{} // ResetViewport resets the visible area of the page to the original // viewport, undoing any effects of the forceViewport command. func ResetViewport() *ResetViewportParams { return &ResetViewportParams{} } // Do executes Emulation.resetViewport. func (p *ResetViewportParams) Do(ctxt context.Context, h cdp.FrameHandler) (err error) { if ctxt == nil { ctxt = context.Background() } // execute ch := h.Execute(ctxt, cdp.CommandEmulationResetViewport, cdp.Empty) // read response select { case res := <-ch: if res == nil { return cdp.ErrChannelClosed } switch v := res.(type) { case easyjson.RawMessage: return nil case error: return v } case <-ctxt.Done(): return cdp.ErrContextDone } return cdp.ErrUnknownResult } // ResetPageScaleFactorParams requests that page scale factor is reset to // initial values. type ResetPageScaleFactorParams struct{} // ResetPageScaleFactor requests that page scale factor is reset to initial // values. func ResetPageScaleFactor() *ResetPageScaleFactorParams { return &ResetPageScaleFactorParams{} } // Do executes Emulation.resetPageScaleFactor. func (p *ResetPageScaleFactorParams) Do(ctxt context.Context, h cdp.FrameHandler) (err error) { if ctxt == nil { ctxt = context.Background() } // execute ch := h.Execute(ctxt, cdp.CommandEmulationResetPageScaleFactor, cdp.Empty) // read response select { case res := <-ch: if res == nil { return cdp.ErrChannelClosed } switch v := res.(type) { case easyjson.RawMessage: return nil case error: return v } case <-ctxt.Done(): return cdp.ErrContextDone } return cdp.ErrUnknownResult } // SetPageScaleFactorParams sets a specified page scale factor. type SetPageScaleFactorParams struct { PageScaleFactor float64 `json:"pageScaleFactor"` // Page scale factor. } // SetPageScaleFactor sets a specified page scale factor. // // parameters: // pageScaleFactor - Page scale factor. func SetPageScaleFactor(pageScaleFactor float64) *SetPageScaleFactorParams { return &SetPageScaleFactorParams{ PageScaleFactor: pageScaleFactor, } } // Do executes Emulation.setPageScaleFactor. func (p *SetPageScaleFactorParams) Do(ctxt context.Context, h cdp.FrameHandler) (err error) { if ctxt == nil { ctxt = context.Background() } // marshal buf, err := easyjson.Marshal(p) if err != nil { return err } // execute ch := h.Execute(ctxt, cdp.CommandEmulationSetPageScaleFactor, easyjson.RawMessage(buf)) // read response select { case res := <-ch: if res == nil { return cdp.ErrChannelClosed } switch v := res.(type) { case easyjson.RawMessage: return nil case error: return v } case <-ctxt.Done(): return cdp.ErrContextDone } return cdp.ErrUnknownResult } // SetVisibleSizeParams resizes the frame/viewport of the page. Note that // this does not affect the frame's container (e.g. browser window). Can be used // to produce screenshots of the specified size. Not supported on Android. type SetVisibleSizeParams struct { Width int64 `json:"width"` // Frame width (DIP). Height int64 `json:"height"` // Frame height (DIP). } // SetVisibleSize resizes the frame/viewport of the page. Note that this does // not affect the frame's container (e.g. browser window). Can be used to // produce screenshots of the specified size. Not supported on Android. // // parameters: // width - Frame width (DIP). // height - Frame height (DIP). func SetVisibleSize(width int64, height int64) *SetVisibleSizeParams { return &SetVisibleSizeParams{ Width: width, Height: height, } } // Do executes Emulation.setVisibleSize. func (p *SetVisibleSizeParams) Do(ctxt context.Context, h cdp.FrameHandler) (err error) { if ctxt == nil { ctxt = context.Background() } // marshal buf, err := easyjson.Marshal(p) if err != nil { return err } // execute ch := h.Execute(ctxt, cdp.CommandEmulationSetVisibleSize, easyjson.RawMessage(buf)) // read response select { case res := <-ch: if res == nil { return cdp.ErrChannelClosed } switch v := res.(type) { case easyjson.RawMessage: return nil case error: return v } case <-ctxt.Done(): return cdp.ErrContextDone } return cdp.ErrUnknownResult } // SetScriptExecutionDisabledParams switches script execution in the page. type SetScriptExecutionDisabledParams struct { Value bool `json:"value"` // Whether script execution should be disabled in the page. } // SetScriptExecutionDisabled switches script execution in the page. // // parameters: // value - Whether script execution should be disabled in the page. func SetScriptExecutionDisabled(value bool) *SetScriptExecutionDisabledParams { return &SetScriptExecutionDisabledParams{ Value: value, } } // Do executes Emulation.setScriptExecutionDisabled. func (p *SetScriptExecutionDisabledParams) Do(ctxt context.Context, h cdp.FrameHandler) (err error) { if ctxt == nil { ctxt = context.Background() } // marshal buf, err := easyjson.Marshal(p) if err != nil { return err } // execute ch := h.Execute(ctxt, cdp.CommandEmulationSetScriptExecutionDisabled, easyjson.RawMessage(buf)) // read response select { case res := <-ch: if res == nil { return cdp.ErrChannelClosed } switch v := res.(type) { case easyjson.RawMessage: return nil case error: return v } case <-ctxt.Done(): return cdp.ErrContextDone } return cdp.ErrUnknownResult } // SetGeolocationOverrideParams overrides the Geolocation Position or Error. // Omitting any of the parameters emulates position unavailable. type SetGeolocationOverrideParams struct { Latitude float64 `json:"latitude,omitempty"` // Mock latitude Longitude float64 `json:"longitude,omitempty"` // Mock longitude Accuracy float64 `json:"accuracy,omitempty"` // Mock accuracy } // SetGeolocationOverride overrides the Geolocation Position or Error. // Omitting any of the parameters emulates position unavailable. // // parameters: func SetGeolocationOverride() *SetGeolocationOverrideParams { return &SetGeolocationOverrideParams{} } // WithLatitude mock latitude. func (p SetGeolocationOverrideParams) WithLatitude(latitude float64) *SetGeolocationOverrideParams { p.Latitude = latitude return &p } // WithLongitude mock longitude. func (p SetGeolocationOverrideParams) WithLongitude(longitude float64) *SetGeolocationOverrideParams { p.Longitude = longitude return &p } // WithAccuracy mock accuracy. func (p SetGeolocationOverrideParams) WithAccuracy(accuracy float64) *SetGeolocationOverrideParams { p.Accuracy = accuracy return &p } // Do executes Emulation.setGeolocationOverride. func (p *SetGeolocationOverrideParams) Do(ctxt context.Context, h cdp.FrameHandler) (err error) { if ctxt == nil { ctxt = context.Background() } // marshal buf, err := easyjson.Marshal(p) if err != nil { return err } // execute ch := h.Execute(ctxt, cdp.CommandEmulationSetGeolocationOverride, easyjson.RawMessage(buf)) // read response select { case res := <-ch: if res == nil { return cdp.ErrChannelClosed } switch v := res.(type) { case easyjson.RawMessage: return nil case error: return v } case <-ctxt.Done(): return cdp.ErrContextDone } return cdp.ErrUnknownResult } // ClearGeolocationOverrideParams clears the overriden Geolocation Position // and Error. type ClearGeolocationOverrideParams struct{} // ClearGeolocationOverride clears the overriden Geolocation Position and // Error. func ClearGeolocationOverride() *ClearGeolocationOverrideParams { return &ClearGeolocationOverrideParams{} } // Do executes Emulation.clearGeolocationOverride. func (p *ClearGeolocationOverrideParams) Do(ctxt context.Context, h cdp.FrameHandler) (err error) { if ctxt == nil { ctxt = context.Background() } // execute ch := h.Execute(ctxt, cdp.CommandEmulationClearGeolocationOverride, cdp.Empty) // read response select { case res := <-ch: if res == nil { return cdp.ErrChannelClosed } switch v := res.(type) { case easyjson.RawMessage: return nil case error: return v } case <-ctxt.Done(): return cdp.ErrContextDone } return cdp.ErrUnknownResult } // SetTouchEmulationEnabledParams toggles mouse event-based touch event // emulation. type SetTouchEmulationEnabledParams struct { Enabled bool `json:"enabled"` // Whether the touch event emulation should be enabled. Configuration EnabledConfiguration `json:"configuration,omitempty"` // Touch/gesture events configuration. Default: current platform. } // SetTouchEmulationEnabled toggles mouse event-based touch event emulation. // // parameters: // enabled - Whether the touch event emulation should be enabled. func SetTouchEmulationEnabled(enabled bool) *SetTouchEmulationEnabledParams { return &SetTouchEmulationEnabledParams{ Enabled: enabled, } } // WithConfiguration touch/gesture events configuration. Default: current // platform. func (p SetTouchEmulationEnabledParams) WithConfiguration(configuration EnabledConfiguration) *SetTouchEmulationEnabledParams { p.Configuration = configuration return &p } // Do executes Emulation.setTouchEmulationEnabled. func (p *SetTouchEmulationEnabledParams) Do(ctxt context.Context, h cdp.FrameHandler) (err error) { if ctxt == nil { ctxt = context.Background() } // marshal buf, err := easyjson.Marshal(p) if err != nil { return err } // execute ch := h.Execute(ctxt, cdp.CommandEmulationSetTouchEmulationEnabled, easyjson.RawMessage(buf)) // read response select { case res := <-ch: if res == nil { return cdp.ErrChannelClosed } switch v := res.(type) { case easyjson.RawMessage: return nil case error: return v } case <-ctxt.Done(): return cdp.ErrContextDone } return cdp.ErrUnknownResult } // SetEmulatedMediaParams emulates the given media for CSS media queries. type SetEmulatedMediaParams struct { Media string `json:"media"` // Media type to emulate. Empty string disables the override. } // SetEmulatedMedia emulates the given media for CSS media queries. // // parameters: // media - Media type to emulate. Empty string disables the override. func SetEmulatedMedia(media string) *SetEmulatedMediaParams { return &SetEmulatedMediaParams{ Media: media, } } // Do executes Emulation.setEmulatedMedia. func (p *SetEmulatedMediaParams) Do(ctxt context.Context, h cdp.FrameHandler) (err error) { if ctxt == nil { ctxt = context.Background() } // marshal buf, err := easyjson.Marshal(p) if err != nil { return err } // execute ch := h.Execute(ctxt, cdp.CommandEmulationSetEmulatedMedia, easyjson.RawMessage(buf)) // read response select { case res := <-ch: if res == nil { return cdp.ErrChannelClosed } switch v := res.(type) { case easyjson.RawMessage: return nil case error: return v } case <-ctxt.Done(): return cdp.ErrContextDone } return cdp.ErrUnknownResult } // SetCPUThrottlingRateParams enables CPU throttling to emulate slow CPUs. type SetCPUThrottlingRateParams struct { Rate float64 `json:"rate"` // Throttling rate as a slowdown factor (1 is no throttle, 2 is 2x slowdown, etc). } // SetCPUThrottlingRate enables CPU throttling to emulate slow CPUs. // // parameters: // rate - Throttling rate as a slowdown factor (1 is no throttle, 2 is 2x slowdown, etc). func SetCPUThrottlingRate(rate float64) *SetCPUThrottlingRateParams { return &SetCPUThrottlingRateParams{ Rate: rate, } } // Do executes Emulation.setCPUThrottlingRate. func (p *SetCPUThrottlingRateParams) Do(ctxt context.Context, h cdp.FrameHandler) (err error) { if ctxt == nil { ctxt = context.Background() } // marshal buf, err := easyjson.Marshal(p) if err != nil { return err } // execute ch := h.Execute(ctxt, cdp.CommandEmulationSetCPUThrottlingRate, easyjson.RawMessage(buf)) // read response select { case res := <-ch: if res == nil { return cdp.ErrChannelClosed } switch v := res.(type) { case easyjson.RawMessage: return nil case error: return v } case <-ctxt.Done(): return cdp.ErrContextDone } return cdp.ErrUnknownResult } // CanEmulateParams tells whether emulation is supported. type CanEmulateParams struct{} // CanEmulate tells whether emulation is supported. func CanEmulate() *CanEmulateParams { return &CanEmulateParams{} } // CanEmulateReturns return values. type CanEmulateReturns struct { Result bool `json:"result,omitempty"` // True if emulation is supported. } // Do executes Emulation.canEmulate. // // returns: // result - True if emulation is supported. func (p *CanEmulateParams) Do(ctxt context.Context, h cdp.FrameHandler) (result bool, err error) { if ctxt == nil { ctxt = context.Background() } // execute ch := h.Execute(ctxt, cdp.CommandEmulationCanEmulate, cdp.Empty) // read response select { case res := <-ch: if res == nil { return false, cdp.ErrChannelClosed } switch v := res.(type) { case easyjson.RawMessage: // unmarshal var r CanEmulateReturns err = easyjson.Unmarshal(v, &r) if err != nil { return false, cdp.ErrInvalidResult } return r.Result, nil case error: return false, v } case <-ctxt.Done(): return false, cdp.ErrContextDone } return false, cdp.ErrUnknownResult } // SetVirtualTimePolicyParams turns on virtual time for all frames (replacing // real-time with a synthetic time source) and sets the current virtual time // policy. Note this supersedes any previous time budget. type SetVirtualTimePolicyParams struct { Policy VirtualTimePolicy `json:"policy"` Budget int64 `json:"budget,omitempty"` // If set, after this many virtual milliseconds have elapsed virtual time will be paused and a virtualTimeBudgetExpired event is sent. } // SetVirtualTimePolicy turns on virtual time for all frames (replacing // real-time with a synthetic time source) and sets the current virtual time // policy. Note this supersedes any previous time budget. // // parameters: // policy func SetVirtualTimePolicy(policy VirtualTimePolicy) *SetVirtualTimePolicyParams { return &SetVirtualTimePolicyParams{ Policy: policy, } } // WithBudget if set, after this many virtual milliseconds have elapsed // virtual time will be paused and a virtualTimeBudgetExpired event is sent. func (p SetVirtualTimePolicyParams) WithBudget(budget int64) *SetVirtualTimePolicyParams { p.Budget = budget return &p } // Do executes Emulation.setVirtualTimePolicy. func (p *SetVirtualTimePolicyParams) Do(ctxt context.Context, h cdp.FrameHandler) (err error) { if ctxt == nil { ctxt = context.Background() } // marshal buf, err := easyjson.Marshal(p) if err != nil { return err } // execute ch := h.Execute(ctxt, cdp.CommandEmulationSetVirtualTimePolicy, easyjson.RawMessage(buf)) // read response select { case res := <-ch: if res == nil { return cdp.ErrChannelClosed } switch v := res.(type) { case easyjson.RawMessage: return nil case error: return v } case <-ctxt.Done(): return cdp.ErrContextDone } return cdp.ErrUnknownResult }