// Package runtime provides the Chrome Debugging Protocol // commands, types, and events for the Chrome Runtime domain. // // Runtime domain exposes JavaScript runtime by means of remote evaluation // and mirror objects. Evaluation results are returned as mirror object that // expose object type, string representation and unique identifier that can be // used for further object reference. Original objects are maintained in memory // unless they are either explicitly released or are released along with the // other objects in their object group. // // Generated by the chromedp-gen command. package runtime // AUTOGENERATED. DO NOT EDIT. import ( "context" . "github.com/knq/chromedp/cdp" "github.com/mailru/easyjson" ) var ( _ BackendNode _ BackendNodeID _ ComputedProperty _ ErrorType _ Frame _ FrameID _ LoaderID _ Message _ MessageError _ MethodType _ Node _ NodeID _ NodeType _ PseudoType _ RGBA _ ShadowRootType _ Timestamp ) // EvaluateParams evaluates expression on global object. type EvaluateParams struct { Expression string `json:"expression"` // Expression to evaluate. ObjectGroup string `json:"objectGroup,omitempty"` // Symbolic group name that can be used to release multiple objects. IncludeCommandLineAPI bool `json:"includeCommandLineAPI,omitempty"` // Determines whether Command Line API should be available during the evaluation. Silent bool `json:"silent,omitempty"` // In silent mode exceptions thrown during evaluation are not reported and do not pause execution. Overrides setPauseOnException state. ContextID ExecutionContextID `json:"contextId,omitempty"` // Specifies in which execution context to perform evaluation. If the parameter is omitted the evaluation will be performed in the context of the inspected page. ReturnByValue bool `json:"returnByValue,omitempty"` // Whether the result is expected to be a JSON object that should be sent by value. GeneratePreview bool `json:"generatePreview,omitempty"` // Whether preview should be generated for the result. UserGesture bool `json:"userGesture,omitempty"` // Whether execution should be treated as initiated by user in the UI. AwaitPromise bool `json:"awaitPromise,omitempty"` // Whether execution should wait for promise to be resolved. If the result of evaluation is not a Promise, it's considered to be an error. } // Evaluate evaluates expression on global object. // // parameters: // expression - Expression to evaluate. func Evaluate(expression string) *EvaluateParams { return &EvaluateParams{ Expression: expression, } } // WithObjectGroup symbolic group name that can be used to release multiple // objects. func (p EvaluateParams) WithObjectGroup(objectGroup string) *EvaluateParams { p.ObjectGroup = objectGroup return &p } // WithIncludeCommandLineAPI determines whether Command Line API should be // available during the evaluation. func (p EvaluateParams) WithIncludeCommandLineAPI(includeCommandLineAPI bool) *EvaluateParams { p.IncludeCommandLineAPI = includeCommandLineAPI return &p } // WithSilent in silent mode exceptions thrown during evaluation are not // reported and do not pause execution. Overrides setPauseOnException state. func (p EvaluateParams) WithSilent(silent bool) *EvaluateParams { p.Silent = silent return &p } // WithContextID specifies in which execution context to perform evaluation. // If the parameter is omitted the evaluation will be performed in the context // of the inspected page. func (p EvaluateParams) WithContextID(contextId ExecutionContextID) *EvaluateParams { p.ContextID = contextId return &p } // WithReturnByValue whether the result is expected to be a JSON object that // should be sent by value. func (p EvaluateParams) WithReturnByValue(returnByValue bool) *EvaluateParams { p.ReturnByValue = returnByValue return &p } // WithGeneratePreview whether preview should be generated for the result. func (p EvaluateParams) WithGeneratePreview(generatePreview bool) *EvaluateParams { p.GeneratePreview = generatePreview return &p } // WithUserGesture whether execution should be treated as initiated by user // in the UI. func (p EvaluateParams) WithUserGesture(userGesture bool) *EvaluateParams { p.UserGesture = userGesture return &p } // WithAwaitPromise whether execution should wait for promise to be resolved. // If the result of evaluation is not a Promise, it's considered to be an error. func (p EvaluateParams) WithAwaitPromise(awaitPromise bool) *EvaluateParams { p.AwaitPromise = awaitPromise return &p } // EvaluateReturns return values. type EvaluateReturns struct { Result *RemoteObject `json:"result,omitempty"` // Evaluation result. ExceptionDetails *ExceptionDetails `json:"exceptionDetails,omitempty"` // Exception details. } // Do executes Runtime.evaluate. // // returns: // result - Evaluation result. // exceptionDetails - Exception details. func (p *EvaluateParams) Do(ctxt context.Context, h FrameHandler) (result *RemoteObject, exceptionDetails *ExceptionDetails, err error) { if ctxt == nil { ctxt = context.Background() } // marshal buf, err := easyjson.Marshal(p) if err != nil { return nil, nil, err } // execute ch := h.Execute(ctxt, CommandRuntimeEvaluate, easyjson.RawMessage(buf)) // read response select { case res := <-ch: if res == nil { return nil, nil, ErrChannelClosed } switch v := res.(type) { case easyjson.RawMessage: // unmarshal var r EvaluateReturns err = easyjson.Unmarshal(v, &r) if err != nil { return nil, nil, ErrInvalidResult } return r.Result, r.ExceptionDetails, nil case error: return nil, nil, v } case <-ctxt.Done(): return nil, nil, ErrContextDone } return nil, nil, ErrUnknownResult } // AwaitPromiseParams add handler to promise with given promise object id. type AwaitPromiseParams struct { PromiseObjectID RemoteObjectID `json:"promiseObjectId"` // Identifier of the promise. ReturnByValue bool `json:"returnByValue,omitempty"` // Whether the result is expected to be a JSON object that should be sent by value. GeneratePreview bool `json:"generatePreview,omitempty"` // Whether preview should be generated for the result. } // AwaitPromise add handler to promise with given promise object id. // // parameters: // promiseObjectId - Identifier of the promise. func AwaitPromise(promiseObjectId RemoteObjectID) *AwaitPromiseParams { return &AwaitPromiseParams{ PromiseObjectID: promiseObjectId, } } // WithReturnByValue whether the result is expected to be a JSON object that // should be sent by value. func (p AwaitPromiseParams) WithReturnByValue(returnByValue bool) *AwaitPromiseParams { p.ReturnByValue = returnByValue return &p } // WithGeneratePreview whether preview should be generated for the result. func (p AwaitPromiseParams) WithGeneratePreview(generatePreview bool) *AwaitPromiseParams { p.GeneratePreview = generatePreview return &p } // AwaitPromiseReturns return values. type AwaitPromiseReturns struct { Result *RemoteObject `json:"result,omitempty"` // Promise result. Will contain rejected value if promise was rejected. ExceptionDetails *ExceptionDetails `json:"exceptionDetails,omitempty"` // Exception details if stack strace is available. } // Do executes Runtime.awaitPromise. // // returns: // result - Promise result. Will contain rejected value if promise was rejected. // exceptionDetails - Exception details if stack strace is available. func (p *AwaitPromiseParams) Do(ctxt context.Context, h FrameHandler) (result *RemoteObject, exceptionDetails *ExceptionDetails, err error) { if ctxt == nil { ctxt = context.Background() } // marshal buf, err := easyjson.Marshal(p) if err != nil { return nil, nil, err } // execute ch := h.Execute(ctxt, CommandRuntimeAwaitPromise, easyjson.RawMessage(buf)) // read response select { case res := <-ch: if res == nil { return nil, nil, ErrChannelClosed } switch v := res.(type) { case easyjson.RawMessage: // unmarshal var r AwaitPromiseReturns err = easyjson.Unmarshal(v, &r) if err != nil { return nil, nil, ErrInvalidResult } return r.Result, r.ExceptionDetails, nil case error: return nil, nil, v } case <-ctxt.Done(): return nil, nil, ErrContextDone } return nil, nil, ErrUnknownResult } // CallFunctionOnParams calls function with given declaration on the given // object. Object group of the result is inherited from the target object. type CallFunctionOnParams struct { ObjectID RemoteObjectID `json:"objectId"` // Identifier of the object to call function on. FunctionDeclaration string `json:"functionDeclaration"` // Declaration of the function to call. Arguments []*CallArgument `json:"arguments,omitempty"` // Call arguments. All call arguments must belong to the same JavaScript world as the target object. Silent bool `json:"silent,omitempty"` // In silent mode exceptions thrown during evaluation are not reported and do not pause execution. Overrides setPauseOnException state. ReturnByValue bool `json:"returnByValue,omitempty"` // Whether the result is expected to be a JSON object which should be sent by value. GeneratePreview bool `json:"generatePreview,omitempty"` // Whether preview should be generated for the result. UserGesture bool `json:"userGesture,omitempty"` // Whether execution should be treated as initiated by user in the UI. AwaitPromise bool `json:"awaitPromise,omitempty"` // Whether execution should wait for promise to be resolved. If the result of evaluation is not a Promise, it's considered to be an error. } // CallFunctionOn calls function with given declaration on the given object. // Object group of the result is inherited from the target object. // // parameters: // objectId - Identifier of the object to call function on. // functionDeclaration - Declaration of the function to call. func CallFunctionOn(objectId RemoteObjectID, functionDeclaration string) *CallFunctionOnParams { return &CallFunctionOnParams{ ObjectID: objectId, FunctionDeclaration: functionDeclaration, } } // WithArguments call arguments. All call arguments must belong to the same // JavaScript world as the target object. func (p CallFunctionOnParams) WithArguments(arguments []*CallArgument) *CallFunctionOnParams { p.Arguments = arguments return &p } // WithSilent in silent mode exceptions thrown during evaluation are not // reported and do not pause execution. Overrides setPauseOnException state. func (p CallFunctionOnParams) WithSilent(silent bool) *CallFunctionOnParams { p.Silent = silent return &p } // WithReturnByValue whether the result is expected to be a JSON object which // should be sent by value. func (p CallFunctionOnParams) WithReturnByValue(returnByValue bool) *CallFunctionOnParams { p.ReturnByValue = returnByValue return &p } // WithGeneratePreview whether preview should be generated for the result. func (p CallFunctionOnParams) WithGeneratePreview(generatePreview bool) *CallFunctionOnParams { p.GeneratePreview = generatePreview return &p } // WithUserGesture whether execution should be treated as initiated by user // in the UI. func (p CallFunctionOnParams) WithUserGesture(userGesture bool) *CallFunctionOnParams { p.UserGesture = userGesture return &p } // WithAwaitPromise whether execution should wait for promise to be resolved. // If the result of evaluation is not a Promise, it's considered to be an error. func (p CallFunctionOnParams) WithAwaitPromise(awaitPromise bool) *CallFunctionOnParams { p.AwaitPromise = awaitPromise return &p } // CallFunctionOnReturns return values. type CallFunctionOnReturns struct { Result *RemoteObject `json:"result,omitempty"` // Call result. ExceptionDetails *ExceptionDetails `json:"exceptionDetails,omitempty"` // Exception details. } // Do executes Runtime.callFunctionOn. // // returns: // result - Call result. // exceptionDetails - Exception details. func (p *CallFunctionOnParams) Do(ctxt context.Context, h FrameHandler) (result *RemoteObject, exceptionDetails *ExceptionDetails, err error) { if ctxt == nil { ctxt = context.Background() } // marshal buf, err := easyjson.Marshal(p) if err != nil { return nil, nil, err } // execute ch := h.Execute(ctxt, CommandRuntimeCallFunctionOn, easyjson.RawMessage(buf)) // read response select { case res := <-ch: if res == nil { return nil, nil, ErrChannelClosed } switch v := res.(type) { case easyjson.RawMessage: // unmarshal var r CallFunctionOnReturns err = easyjson.Unmarshal(v, &r) if err != nil { return nil, nil, ErrInvalidResult } return r.Result, r.ExceptionDetails, nil case error: return nil, nil, v } case <-ctxt.Done(): return nil, nil, ErrContextDone } return nil, nil, ErrUnknownResult } // GetPropertiesParams returns properties of a given object. Object group of // the result is inherited from the target object. type GetPropertiesParams struct { ObjectID RemoteObjectID `json:"objectId"` // Identifier of the object to return properties for. OwnProperties bool `json:"ownProperties,omitempty"` // If true, returns properties belonging only to the element itself, not to its prototype chain. AccessorPropertiesOnly bool `json:"accessorPropertiesOnly,omitempty"` // If true, returns accessor properties (with getter/setter) only; internal properties are not returned either. GeneratePreview bool `json:"generatePreview,omitempty"` // Whether preview should be generated for the results. } // GetProperties returns properties of a given object. Object group of the // result is inherited from the target object. // // parameters: // objectId - Identifier of the object to return properties for. func GetProperties(objectId RemoteObjectID) *GetPropertiesParams { return &GetPropertiesParams{ ObjectID: objectId, } } // WithOwnProperties if true, returns properties belonging only to the // element itself, not to its prototype chain. func (p GetPropertiesParams) WithOwnProperties(ownProperties bool) *GetPropertiesParams { p.OwnProperties = ownProperties return &p } // WithAccessorPropertiesOnly if true, returns accessor properties (with // getter/setter) only; internal properties are not returned either. func (p GetPropertiesParams) WithAccessorPropertiesOnly(accessorPropertiesOnly bool) *GetPropertiesParams { p.AccessorPropertiesOnly = accessorPropertiesOnly return &p } // WithGeneratePreview whether preview should be generated for the results. func (p GetPropertiesParams) WithGeneratePreview(generatePreview bool) *GetPropertiesParams { p.GeneratePreview = generatePreview return &p } // GetPropertiesReturns return values. type GetPropertiesReturns struct { Result []*PropertyDescriptor `json:"result,omitempty"` // Object properties. InternalProperties []*InternalPropertyDescriptor `json:"internalProperties,omitempty"` // Internal object properties (only of the element itself). ExceptionDetails *ExceptionDetails `json:"exceptionDetails,omitempty"` // Exception details. } // Do executes Runtime.getProperties. // // returns: // result - Object properties. // internalProperties - Internal object properties (only of the element itself). // exceptionDetails - Exception details. func (p *GetPropertiesParams) Do(ctxt context.Context, h FrameHandler) (result []*PropertyDescriptor, internalProperties []*InternalPropertyDescriptor, exceptionDetails *ExceptionDetails, err error) { if ctxt == nil { ctxt = context.Background() } // marshal buf, err := easyjson.Marshal(p) if err != nil { return nil, nil, nil, err } // execute ch := h.Execute(ctxt, CommandRuntimeGetProperties, easyjson.RawMessage(buf)) // read response select { case res := <-ch: if res == nil { return nil, nil, nil, ErrChannelClosed } switch v := res.(type) { case easyjson.RawMessage: // unmarshal var r GetPropertiesReturns err = easyjson.Unmarshal(v, &r) if err != nil { return nil, nil, nil, ErrInvalidResult } return r.Result, r.InternalProperties, r.ExceptionDetails, nil case error: return nil, nil, nil, v } case <-ctxt.Done(): return nil, nil, nil, ErrContextDone } return nil, nil, nil, ErrUnknownResult } // ReleaseObjectParams releases remote object with given id. type ReleaseObjectParams struct { ObjectID RemoteObjectID `json:"objectId"` // Identifier of the object to release. } // ReleaseObject releases remote object with given id. // // parameters: // objectId - Identifier of the object to release. func ReleaseObject(objectId RemoteObjectID) *ReleaseObjectParams { return &ReleaseObjectParams{ ObjectID: objectId, } } // Do executes Runtime.releaseObject. func (p *ReleaseObjectParams) Do(ctxt context.Context, h FrameHandler) (err error) { if ctxt == nil { ctxt = context.Background() } // marshal buf, err := easyjson.Marshal(p) if err != nil { return err } // execute ch := h.Execute(ctxt, CommandRuntimeReleaseObject, easyjson.RawMessage(buf)) // read response select { case res := <-ch: if res == nil { return ErrChannelClosed } switch v := res.(type) { case easyjson.RawMessage: return nil case error: return v } case <-ctxt.Done(): return ErrContextDone } return ErrUnknownResult } // ReleaseObjectGroupParams releases all remote objects that belong to a // given group. type ReleaseObjectGroupParams struct { ObjectGroup string `json:"objectGroup"` // Symbolic object group name. } // ReleaseObjectGroup releases all remote objects that belong to a given // group. // // parameters: // objectGroup - Symbolic object group name. func ReleaseObjectGroup(objectGroup string) *ReleaseObjectGroupParams { return &ReleaseObjectGroupParams{ ObjectGroup: objectGroup, } } // Do executes Runtime.releaseObjectGroup. func (p *ReleaseObjectGroupParams) Do(ctxt context.Context, h FrameHandler) (err error) { if ctxt == nil { ctxt = context.Background() } // marshal buf, err := easyjson.Marshal(p) if err != nil { return err } // execute ch := h.Execute(ctxt, CommandRuntimeReleaseObjectGroup, easyjson.RawMessage(buf)) // read response select { case res := <-ch: if res == nil { return ErrChannelClosed } switch v := res.(type) { case easyjson.RawMessage: return nil case error: return v } case <-ctxt.Done(): return ErrContextDone } return ErrUnknownResult } // RunIfWaitingForDebuggerParams tells inspected instance to run if it was // waiting for debugger to attach. type RunIfWaitingForDebuggerParams struct{} // RunIfWaitingForDebugger tells inspected instance to run if it was waiting // for debugger to attach. func RunIfWaitingForDebugger() *RunIfWaitingForDebuggerParams { return &RunIfWaitingForDebuggerParams{} } // Do executes Runtime.runIfWaitingForDebugger. func (p *RunIfWaitingForDebuggerParams) Do(ctxt context.Context, h FrameHandler) (err error) { if ctxt == nil { ctxt = context.Background() } // execute ch := h.Execute(ctxt, CommandRuntimeRunIfWaitingForDebugger, Empty) // read response select { case res := <-ch: if res == nil { return ErrChannelClosed } switch v := res.(type) { case easyjson.RawMessage: return nil case error: return v } case <-ctxt.Done(): return ErrContextDone } return ErrUnknownResult } // EnableParams enables reporting of execution contexts creation by means of // executionContextCreated event. When the reporting gets enabled the event will // be sent immediately for each existing execution context. type EnableParams struct{} // Enable enables reporting of execution contexts creation by means of // executionContextCreated event. When the reporting gets enabled the event will // be sent immediately for each existing execution context. func Enable() *EnableParams { return &EnableParams{} } // Do executes Runtime.enable. func (p *EnableParams) Do(ctxt context.Context, h FrameHandler) (err error) { if ctxt == nil { ctxt = context.Background() } // execute ch := h.Execute(ctxt, CommandRuntimeEnable, Empty) // read response select { case res := <-ch: if res == nil { return ErrChannelClosed } switch v := res.(type) { case easyjson.RawMessage: return nil case error: return v } case <-ctxt.Done(): return ErrContextDone } return ErrUnknownResult } // DisableParams disables reporting of execution contexts creation. type DisableParams struct{} // Disable disables reporting of execution contexts creation. func Disable() *DisableParams { return &DisableParams{} } // Do executes Runtime.disable. func (p *DisableParams) Do(ctxt context.Context, h FrameHandler) (err error) { if ctxt == nil { ctxt = context.Background() } // execute ch := h.Execute(ctxt, CommandRuntimeDisable, Empty) // read response select { case res := <-ch: if res == nil { return ErrChannelClosed } switch v := res.(type) { case easyjson.RawMessage: return nil case error: return v } case <-ctxt.Done(): return ErrContextDone } return ErrUnknownResult } // DiscardConsoleEntriesParams discards collected exceptions and console API // calls. type DiscardConsoleEntriesParams struct{} // DiscardConsoleEntries discards collected exceptions and console API calls. func DiscardConsoleEntries() *DiscardConsoleEntriesParams { return &DiscardConsoleEntriesParams{} } // Do executes Runtime.discardConsoleEntries. func (p *DiscardConsoleEntriesParams) Do(ctxt context.Context, h FrameHandler) (err error) { if ctxt == nil { ctxt = context.Background() } // execute ch := h.Execute(ctxt, CommandRuntimeDiscardConsoleEntries, Empty) // read response select { case res := <-ch: if res == nil { return ErrChannelClosed } switch v := res.(type) { case easyjson.RawMessage: return nil case error: return v } case <-ctxt.Done(): return ErrContextDone } return ErrUnknownResult } type SetCustomObjectFormatterEnabledParams struct { Enabled bool `json:"enabled"` } // parameters: // enabled func SetCustomObjectFormatterEnabled(enabled bool) *SetCustomObjectFormatterEnabledParams { return &SetCustomObjectFormatterEnabledParams{ Enabled: enabled, } } // Do executes Runtime.setCustomObjectFormatterEnabled. func (p *SetCustomObjectFormatterEnabledParams) Do(ctxt context.Context, h FrameHandler) (err error) { if ctxt == nil { ctxt = context.Background() } // marshal buf, err := easyjson.Marshal(p) if err != nil { return err } // execute ch := h.Execute(ctxt, CommandRuntimeSetCustomObjectFormatterEnabled, easyjson.RawMessage(buf)) // read response select { case res := <-ch: if res == nil { return ErrChannelClosed } switch v := res.(type) { case easyjson.RawMessage: return nil case error: return v } case <-ctxt.Done(): return ErrContextDone } return ErrUnknownResult } // CompileScriptParams compiles expression. type CompileScriptParams struct { Expression string `json:"expression"` // Expression to compile. SourceURL string `json:"sourceURL"` // Source url to be set for the script. PersistScript bool `json:"persistScript"` // Specifies whether the compiled script should be persisted. ExecutionContextID ExecutionContextID `json:"executionContextId,omitempty"` // Specifies in which execution context to perform script run. If the parameter is omitted the evaluation will be performed in the context of the inspected page. } // CompileScript compiles expression. // // parameters: // expression - Expression to compile. // sourceURL - Source url to be set for the script. // persistScript - Specifies whether the compiled script should be persisted. func CompileScript(expression string, sourceURL string, persistScript bool) *CompileScriptParams { return &CompileScriptParams{ Expression: expression, SourceURL: sourceURL, PersistScript: persistScript, } } // WithExecutionContextID specifies in which execution context to perform // script run. If the parameter is omitted the evaluation will be performed in // the context of the inspected page. func (p CompileScriptParams) WithExecutionContextID(executionContextId ExecutionContextID) *CompileScriptParams { p.ExecutionContextID = executionContextId return &p } // CompileScriptReturns return values. type CompileScriptReturns struct { ScriptID ScriptID `json:"scriptId,omitempty"` // Id of the script. ExceptionDetails *ExceptionDetails `json:"exceptionDetails,omitempty"` // Exception details. } // Do executes Runtime.compileScript. // // returns: // scriptId - Id of the script. // exceptionDetails - Exception details. func (p *CompileScriptParams) Do(ctxt context.Context, h FrameHandler) (scriptId ScriptID, exceptionDetails *ExceptionDetails, err error) { if ctxt == nil { ctxt = context.Background() } // marshal buf, err := easyjson.Marshal(p) if err != nil { return "", nil, err } // execute ch := h.Execute(ctxt, CommandRuntimeCompileScript, easyjson.RawMessage(buf)) // read response select { case res := <-ch: if res == nil { return "", nil, ErrChannelClosed } switch v := res.(type) { case easyjson.RawMessage: // unmarshal var r CompileScriptReturns err = easyjson.Unmarshal(v, &r) if err != nil { return "", nil, ErrInvalidResult } return r.ScriptID, r.ExceptionDetails, nil case error: return "", nil, v } case <-ctxt.Done(): return "", nil, ErrContextDone } return "", nil, ErrUnknownResult } // RunScriptParams runs script with given id in a given context. type RunScriptParams struct { ScriptID ScriptID `json:"scriptId"` // Id of the script to run. ExecutionContextID ExecutionContextID `json:"executionContextId,omitempty"` // Specifies in which execution context to perform script run. If the parameter is omitted the evaluation will be performed in the context of the inspected page. ObjectGroup string `json:"objectGroup,omitempty"` // Symbolic group name that can be used to release multiple objects. Silent bool `json:"silent,omitempty"` // In silent mode exceptions thrown during evaluation are not reported and do not pause execution. Overrides setPauseOnException state. IncludeCommandLineAPI bool `json:"includeCommandLineAPI,omitempty"` // Determines whether Command Line API should be available during the evaluation. ReturnByValue bool `json:"returnByValue,omitempty"` // Whether the result is expected to be a JSON object which should be sent by value. GeneratePreview bool `json:"generatePreview,omitempty"` // Whether preview should be generated for the result. AwaitPromise bool `json:"awaitPromise,omitempty"` // Whether execution should wait for promise to be resolved. If the result of evaluation is not a Promise, it's considered to be an error. } // RunScript runs script with given id in a given context. // // parameters: // scriptId - Id of the script to run. func RunScript(scriptId ScriptID) *RunScriptParams { return &RunScriptParams{ ScriptID: scriptId, } } // WithExecutionContextID specifies in which execution context to perform // script run. If the parameter is omitted the evaluation will be performed in // the context of the inspected page. func (p RunScriptParams) WithExecutionContextID(executionContextId ExecutionContextID) *RunScriptParams { p.ExecutionContextID = executionContextId return &p } // WithObjectGroup symbolic group name that can be used to release multiple // objects. func (p RunScriptParams) WithObjectGroup(objectGroup string) *RunScriptParams { p.ObjectGroup = objectGroup return &p } // WithSilent in silent mode exceptions thrown during evaluation are not // reported and do not pause execution. Overrides setPauseOnException state. func (p RunScriptParams) WithSilent(silent bool) *RunScriptParams { p.Silent = silent return &p } // WithIncludeCommandLineAPI determines whether Command Line API should be // available during the evaluation. func (p RunScriptParams) WithIncludeCommandLineAPI(includeCommandLineAPI bool) *RunScriptParams { p.IncludeCommandLineAPI = includeCommandLineAPI return &p } // WithReturnByValue whether the result is expected to be a JSON object which // should be sent by value. func (p RunScriptParams) WithReturnByValue(returnByValue bool) *RunScriptParams { p.ReturnByValue = returnByValue return &p } // WithGeneratePreview whether preview should be generated for the result. func (p RunScriptParams) WithGeneratePreview(generatePreview bool) *RunScriptParams { p.GeneratePreview = generatePreview return &p } // WithAwaitPromise whether execution should wait for promise to be resolved. // If the result of evaluation is not a Promise, it's considered to be an error. func (p RunScriptParams) WithAwaitPromise(awaitPromise bool) *RunScriptParams { p.AwaitPromise = awaitPromise return &p } // RunScriptReturns return values. type RunScriptReturns struct { Result *RemoteObject `json:"result,omitempty"` // Run result. ExceptionDetails *ExceptionDetails `json:"exceptionDetails,omitempty"` // Exception details. } // Do executes Runtime.runScript. // // returns: // result - Run result. // exceptionDetails - Exception details. func (p *RunScriptParams) Do(ctxt context.Context, h FrameHandler) (result *RemoteObject, exceptionDetails *ExceptionDetails, err error) { if ctxt == nil { ctxt = context.Background() } // marshal buf, err := easyjson.Marshal(p) if err != nil { return nil, nil, err } // execute ch := h.Execute(ctxt, CommandRuntimeRunScript, easyjson.RawMessage(buf)) // read response select { case res := <-ch: if res == nil { return nil, nil, ErrChannelClosed } switch v := res.(type) { case easyjson.RawMessage: // unmarshal var r RunScriptReturns err = easyjson.Unmarshal(v, &r) if err != nil { return nil, nil, ErrInvalidResult } return r.Result, r.ExceptionDetails, nil case error: return nil, nil, v } case <-ctxt.Done(): return nil, nil, ErrContextDone } return nil, nil, ErrUnknownResult }