# Copyright 2017 The Chromium Authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.

version
  major 1
  minor 3

# This domain is deprecated - use Runtime or Log instead.
deprecated domain Console
  depends on Runtime

  # Console message.
  type ConsoleMessage extends object
    properties
      # Message source.
      enum source
        xml
        javascript
        network
        console-api
        storage
        appcache
        rendering
        security
        other
        deprecation
        worker
      # Message severity.
      enum level
        log
        warning
        error
        debug
        info
      # Message text.
      string text
      # URL of the message origin.
      optional string url
      # Line number in the resource that generated this message (1-based).
      optional integer line
      # Column number in the resource that generated this message (1-based).
      optional integer column

  # Does nothing.
  command clearMessages

  # Disables console domain, prevents further console messages from being reported to the client.
  command disable

  # Enables console domain, sends the messages collected so far to the client by means of the
  # `messageAdded` notification.
  command enable

  # Issued when new console message is added.
  event messageAdded
    parameters
      # Console message that has been added.
      ConsoleMessage message

# Debugger domain exposes JavaScript debugging capabilities. It allows setting and removing
# breakpoints, stepping through execution, exploring stack traces, etc.
domain Debugger
  depends on Runtime

  # Breakpoint identifier.
  type BreakpointId extends string

  # Call frame identifier.
  type CallFrameId extends string

  # Location in the source code.
  type Location extends object
    properties
      # Script identifier as reported in the `Debugger.scriptParsed`.
      Runtime.ScriptId scriptId
      # Line number in the script (0-based).
      integer lineNumber
      # Column number in the script (0-based).
      optional integer columnNumber

  # Location in the source code.
  experimental type ScriptPosition extends object
    properties
      integer lineNumber
      integer columnNumber

  # JavaScript call frame. Array of call frames form the call stack.
  type CallFrame extends object
    properties
      # Call frame identifier. This identifier is only valid while the virtual machine is paused.
      CallFrameId callFrameId
      # Name of the JavaScript function called on this call frame.
      string functionName
      # Location in the source code.
      optional Location functionLocation
      # Location in the source code.
      Location location
      # JavaScript script name or url.
      string url
      # Scope chain for this call frame.
      array of Scope scopeChain
      # `this` object for this call frame.
      Runtime.RemoteObject this
      # The value being returned, if the function is at return point.
      optional Runtime.RemoteObject returnValue

  # Scope description.
  type Scope extends object
    properties
      # Scope type.
      enum type
        global
        local
        with
        closure
        catch
        block
        script
        eval
        module
        wasm-expression-stack
      # Object representing the scope. For `global` and `with` scopes it represents the actual
      # object; for the rest of the scopes, it is artificial transient object enumerating scope
      # variables as its properties.
      Runtime.RemoteObject object
      optional string name
      # Location in the source code where scope starts
      optional Location startLocation
      # Location in the source code where scope ends
      optional Location endLocation

  # Search match for resource.
  type SearchMatch extends object
    properties
      # Line number in resource content.
      number lineNumber
      # Line with match content.
      string lineContent

  type BreakLocation extends object
    properties
      # Script identifier as reported in the `Debugger.scriptParsed`.
      Runtime.ScriptId scriptId
      # Line number in the script (0-based).
      integer lineNumber
      # Column number in the script (0-based).
      optional integer columnNumber
      optional enum type
        debuggerStatement
        call
        return

  # Continues execution until specific location is reached.
  command continueToLocation
    parameters
      # Location to continue to.
      Location location
      optional enum targetCallFrames
        any
        current

  # Disables debugger for given page.
  command disable

  # Enables debugger for the given page. Clients should not assume that the debugging has been
  # enabled until the result for this command is received.
  command enable
    parameters
      # The maximum size in bytes of collected scripts (not referenced by other heap objects)
      # the debugger can hold. Puts no limit if paramter is omitted.
      experimental optional number maxScriptsCacheSize
    returns
      # Unique identifier of the debugger.
      experimental Runtime.UniqueDebuggerId debuggerId

  # Evaluates expression on a given call frame.
  command evaluateOnCallFrame
    parameters
      # Call frame identifier to evaluate on.
      CallFrameId callFrameId
      # Expression to evaluate.
      string expression
      # String object group name to put result into (allows rapid releasing resulting object handles
      # using `releaseObjectGroup`).
      optional string objectGroup
      # Specifies whether command line API should be available to the evaluated expression, defaults
      # to false.
      optional boolean includeCommandLineAPI
      # In silent mode exceptions thrown during evaluation are not reported and do not pause
      # execution. Overrides `setPauseOnException` state.
      optional boolean silent
      # Whether the result is expected to be a JSON object that should be sent by value.
      optional boolean returnByValue
      # Whether preview should be generated for the result.
      experimental optional boolean generatePreview
      # Whether to throw an exception if side effect cannot be ruled out during evaluation.
      optional boolean throwOnSideEffect
      # Terminate execution after timing out (number of milliseconds).
      experimental optional Runtime.TimeDelta timeout
    returns
      # Object wrapper for the evaluation result.
      Runtime.RemoteObject result
      # Exception details.
      optional Runtime.ExceptionDetails exceptionDetails

  # Execute a Wasm Evaluator module on a given call frame.
  experimental command executeWasmEvaluator
    parameters
      # WebAssembly call frame identifier to evaluate on.
      CallFrameId callFrameId
      # Code of the evaluator module.
      binary evaluator
      # Terminate execution after timing out (number of milliseconds).
      experimental optional Runtime.TimeDelta timeout
    returns
      # Object wrapper for the evaluation result.
      Runtime.RemoteObject result
      # Exception details.
      optional Runtime.ExceptionDetails exceptionDetails

  # Returns possible locations for breakpoint. scriptId in start and end range locations should be
  # the same.
  command getPossibleBreakpoints
    parameters
      # Start of range to search possible breakpoint locations in.
      Location start
      # End of range to search possible breakpoint locations in (excluding). When not specified, end
      # of scripts is used as end of range.
      optional Location end
      # Only consider locations which are in the same (non-nested) function as start.
      optional boolean restrictToFunction
    returns
      # List of the possible breakpoint locations.
      array of BreakLocation locations

  # Returns source for the script with given id.
  command getScriptSource
    parameters
      # Id of the script to get source for.
      Runtime.ScriptId scriptId
    returns
      # Script source (empty in case of Wasm bytecode).
      string scriptSource
      # Wasm bytecode.
      optional binary bytecode

  # This command is deprecated. Use getScriptSource instead.
  deprecated command getWasmBytecode
    parameters
      # Id of the Wasm script to get source for.
      Runtime.ScriptId scriptId
    returns
      # Script source.
      binary bytecode

  # Returns stack trace with given `stackTraceId`.
  experimental command getStackTrace
    parameters
      Runtime.StackTraceId stackTraceId
    returns
      Runtime.StackTrace stackTrace

  # Stops on the next JavaScript statement.
  command pause

  experimental deprecated command pauseOnAsyncCall
    parameters
      # Debugger will pause when async call with given stack trace is started.
      Runtime.StackTraceId parentStackTraceId

  # Removes JavaScript breakpoint.
  command removeBreakpoint
    parameters
      BreakpointId breakpointId

  # Restarts particular call frame from the beginning.
  command restartFrame
    parameters
      # Call frame identifier to evaluate on.
      CallFrameId callFrameId
    returns
      # New stack trace.
      array of CallFrame callFrames
      # Async stack trace, if any.
      optional Runtime.StackTrace asyncStackTrace
      # Async stack trace, if any.
      experimental optional Runtime.StackTraceId asyncStackTraceId

  # Resumes JavaScript execution.
  command resume
    parameters
      # Set to true to terminate execution upon resuming execution. In contrast
      # to Runtime.terminateExecution, this will allows to execute further
      # JavaScript (i.e. via evaluation) until execution of the paused code
      # is actually resumed, at which point termination is triggered.
      # If execution is currently not paused, this parameter has no effect.
      optional boolean terminateOnResume

  # Searches for given string in script content.
  command searchInContent
    parameters
      # Id of the script to search in.
      Runtime.ScriptId scriptId
      # String to search for.
      string query
      # If true, search is case sensitive.
      optional boolean caseSensitive
      # If true, treats string parameter as regex.
      optional boolean isRegex
    returns
      # List of search matches.
      array of SearchMatch result

  # Enables or disables async call stacks tracking.
  command setAsyncCallStackDepth
    parameters
      # Maximum depth of async call stacks. Setting to `0` will effectively disable collecting async
      # call stacks (default).
      integer maxDepth

  # Replace previous blackbox patterns with passed ones. Forces backend to skip stepping/pausing in
  # scripts with url matching one of the patterns. VM will try to leave blackboxed script by
  # performing 'step in' several times, finally resorting to 'step out' if unsuccessful.
  experimental command setBlackboxPatterns
    parameters
      # Array of regexps that will be used to check script url for blackbox state.
      array of string patterns

  # Makes backend skip steps in the script in blackboxed ranges. VM will try leave blacklisted
  # scripts by performing 'step in' several times, finally resorting to 'step out' if unsuccessful.
  # Positions array contains positions where blackbox state is changed. First interval isn't
  # blackboxed. Array should be sorted.
  experimental command setBlackboxedRanges
    parameters
      # Id of the script.
      Runtime.ScriptId scriptId
      array of ScriptPosition positions

  # Sets JavaScript breakpoint at a given location.
  command setBreakpoint
    parameters
      # Location to set breakpoint in.
      Location location
      # Expression to use as a breakpoint condition. When specified, debugger will only stop on the
      # breakpoint if this expression evaluates to true.
      optional string condition
    returns
      # Id of the created breakpoint for further reference.
      BreakpointId breakpointId
      # Location this breakpoint resolved into.
      Location actualLocation

  # Sets instrumentation breakpoint.
  command setInstrumentationBreakpoint
    parameters
      # Instrumentation name.
      enum instrumentation
        beforeScriptExecution
        beforeScriptWithSourceMapExecution
    returns
      # Id of the created breakpoint for further reference.
      BreakpointId breakpointId

  # Sets JavaScript breakpoint at given location specified either by URL or URL regex. Once this
  # command is issued, all existing parsed scripts will have breakpoints resolved and returned in
  # `locations` property. Further matching script parsing will result in subsequent
  # `breakpointResolved` events issued. This logical breakpoint will survive page reloads.
  command setBreakpointByUrl
    parameters
      # Line number to set breakpoint at.
      integer lineNumber
      # URL of the resources to set breakpoint on.
      optional string url
      # Regex pattern for the URLs of the resources to set breakpoints on. Either `url` or
      # `urlRegex` must be specified.
      optional string urlRegex
      # Script hash of the resources to set breakpoint on.
      optional string scriptHash
      # Offset in the line to set breakpoint at.
      optional integer columnNumber
      # Expression to use as a breakpoint condition. When specified, debugger will only stop on the
      # breakpoint if this expression evaluates to true.
      optional string condition
    returns
      # Id of the created breakpoint for further reference.
      BreakpointId breakpointId
      # List of the locations this breakpoint resolved into upon addition.
      array of Location locations

  # Sets JavaScript breakpoint before each call to the given function.
  # If another function was created from the same source as a given one,
  # calling it will also trigger the breakpoint.
  experimental command setBreakpointOnFunctionCall
    parameters
      # Function object id.
      Runtime.RemoteObjectId objectId
      # Expression to use as a breakpoint condition. When specified, debugger will
      # stop on the breakpoint if this expression evaluates to true.
      optional string condition
    returns
      # Id of the created breakpoint for further reference.
      BreakpointId breakpointId

  # Activates / deactivates all breakpoints on the page.
  command setBreakpointsActive
    parameters
      # New value for breakpoints active state.
      boolean active

  # Defines pause on exceptions state. Can be set to stop on all exceptions, uncaught exceptions or
  # no exceptions. Initial pause on exceptions state is `none`.
  command setPauseOnExceptions
    parameters
      # Pause on exceptions mode.
      enum state
        none
        uncaught
        all

  # Changes return value in top frame. Available only at return break position.
  experimental command setReturnValue
    parameters
      # New return value.
      Runtime.CallArgument newValue

  # Edits JavaScript source live.
  command setScriptSource
    parameters
      # Id of the script to edit.
      Runtime.ScriptId scriptId
      # New content of the script.
      string scriptSource
      #  If true the change will not actually be applied. Dry run may be used to get result
      # description without actually modifying the code.
      optional boolean dryRun
    returns
      # New stack trace in case editing has happened while VM was stopped.
      optional array of CallFrame callFrames
      # Whether current call stack  was modified after applying the changes.
      optional boolean stackChanged
      # Async stack trace, if any.
      optional Runtime.StackTrace asyncStackTrace
      # Async stack trace, if any.
      experimental optional Runtime.StackTraceId asyncStackTraceId
      # Exception details if any.
      optional Runtime.ExceptionDetails exceptionDetails

  # Makes page not interrupt on any pauses (breakpoint, exception, dom exception etc).
  command setSkipAllPauses
    parameters
      # New value for skip pauses state.
      boolean skip

  # Changes value of variable in a callframe. Object-based scopes are not supported and must be
  # mutated manually.
  command setVariableValue
    parameters
      # 0-based number of scope as was listed in scope chain. Only 'local', 'closure' and 'catch'
      # scope types are allowed. Other scopes could be manipulated manually.
      integer scopeNumber
      # Variable name.
      string variableName
      # New variable value.
      Runtime.CallArgument newValue
      # Id of callframe that holds variable.
      CallFrameId callFrameId

  # Steps into the function call.
  command stepInto
    parameters
      # Debugger will pause on the execution of the first async task which was scheduled
      # before next pause.
      experimental optional boolean breakOnAsyncCall

  # Steps out of the function call.
  command stepOut

  # Steps over the statement.
  command stepOver

  # Fired when breakpoint is resolved to an actual script and location.
  event breakpointResolved
    parameters
      # Breakpoint unique identifier.
      BreakpointId breakpointId
      # Actual breakpoint location.
      Location location

  # Fired when the virtual machine stopped on breakpoint or exception or any other stop criteria.
  event paused
    parameters
      # Call stack the virtual machine stopped on.
      array of CallFrame callFrames
      # Pause reason.
      enum reason
        ambiguous
        assert
        debugCommand
        DOM
        EventListener
        exception
        instrumentation
        OOM
        other
        promiseRejection
        XHR
      # Object containing break-specific auxiliary properties.
      optional object data
      # Hit breakpoints IDs
      optional array of string hitBreakpoints
      # Async stack trace, if any.
      optional Runtime.StackTrace asyncStackTrace
      # Async stack trace, if any.
      experimental optional Runtime.StackTraceId asyncStackTraceId
      # Never present, will be removed.
      experimental deprecated optional Runtime.StackTraceId asyncCallStackTraceId

  # Fired when the virtual machine resumed execution.
  event resumed

  # Enum of possible script languages.
  type ScriptLanguage extends string
    enum
      JavaScript
      WebAssembly

  # Debug symbols available for a wasm script.
  type DebugSymbols extends object
    properties
      # Type of the debug symbols.
      enum type
        None
        SourceMap
        EmbeddedDWARF
        ExternalDWARF
      # URL of the external symbol source.
      optional string externalURL

  # Fired when virtual machine fails to parse the script.
  event scriptFailedToParse
    parameters
      # Identifier of the script parsed.
      Runtime.ScriptId scriptId
      # URL or name of the script parsed (if any).
      string url
      # Line offset of the script within the resource with given URL (for script tags).
      integer startLine
      # Column offset of the script within the resource with given URL.
      integer startColumn
      # Last line of the script.
      integer endLine
      # Length of the last line of the script.
      integer endColumn
      # Specifies script creation context.
      Runtime.ExecutionContextId executionContextId
      # Content hash of the script.
      string hash
      # Embedder-specific auxiliary data.
      optional object executionContextAuxData
      # URL of source map associated with script (if any).
      optional string sourceMapURL
      # True, if this script has sourceURL.
      optional boolean hasSourceURL
      # True, if this script is ES6 module.
      optional boolean isModule
      # This script length.
      optional integer length
      # JavaScript top stack frame of where the script parsed event was triggered if available.
      experimental optional Runtime.StackTrace stackTrace
      # If the scriptLanguage is WebAssembly, the code section offset in the module.
      experimental optional integer codeOffset
      # The language of the script.
      experimental optional Debugger.ScriptLanguage scriptLanguage

  # Fired when virtual machine parses script. This event is also fired for all known and uncollected
  # scripts upon enabling debugger.
  event scriptParsed
    parameters
      # Identifier of the script parsed.
      Runtime.ScriptId scriptId
      # URL or name of the script parsed (if any).
      string url
      # Line offset of the script within the resource with given URL (for script tags).
      integer startLine
      # Column offset of the script within the resource with given URL.
      integer startColumn
      # Last line of the script.
      integer endLine
      # Length of the last line of the script.
      integer endColumn
      # Specifies script creation context.
      Runtime.ExecutionContextId executionContextId
      # Content hash of the script.
      string hash
      # Embedder-specific auxiliary data.
      optional object executionContextAuxData
      # True, if this script is generated as a result of the live edit operation.
      experimental optional boolean isLiveEdit
      # URL of source map associated with script (if any).
      optional string sourceMapURL
      # True, if this script has sourceURL.
      optional boolean hasSourceURL
      # True, if this script is ES6 module.
      optional boolean isModule
      # This script length.
      optional integer length
      # JavaScript top stack frame of where the script parsed event was triggered if available.
      experimental optional Runtime.StackTrace stackTrace
      # If the scriptLanguage is WebAssembly, the code section offset in the module.
      experimental optional integer codeOffset
      # The language of the script.
      experimental optional Debugger.ScriptLanguage scriptLanguage
      # If the scriptLanguage is WebASsembly, the source of debug symbols for the module.
      experimental optional Debugger.DebugSymbols debugSymbols

experimental domain HeapProfiler
  depends on Runtime

  # Heap snapshot object id.
  type HeapSnapshotObjectId extends string

  # Sampling Heap Profile node. Holds callsite information, allocation statistics and child nodes.
  type SamplingHeapProfileNode extends object
    properties
      # Function location.
      Runtime.CallFrame callFrame
      # Allocations size in bytes for the node excluding children.
      number selfSize
      # Node id. Ids are unique across all profiles collected between startSampling and stopSampling.
      integer id
      # Child nodes.
      array of SamplingHeapProfileNode children

  # A single sample from a sampling profile.
  type SamplingHeapProfileSample extends object
    properties
      # Allocation size in bytes attributed to the sample.
      number size
      # Id of the corresponding profile tree node.
      integer nodeId
      # Time-ordered sample ordinal number. It is unique across all profiles retrieved
      # between startSampling and stopSampling.
      number ordinal

  # Sampling profile.
  type SamplingHeapProfile extends object
    properties
      SamplingHeapProfileNode head
      array of SamplingHeapProfileSample samples

  # Enables console to refer to the node with given id via $x (see Command Line API for more details
  # $x functions).
  command addInspectedHeapObject
    parameters
      # Heap snapshot object id to be accessible by means of $x command line API.
      HeapSnapshotObjectId heapObjectId

  command collectGarbage

  command disable

  command enable

  command getHeapObjectId
    parameters
      # Identifier of the object to get heap object id for.
      Runtime.RemoteObjectId objectId
    returns
      # Id of the heap snapshot object corresponding to the passed remote object id.
      HeapSnapshotObjectId heapSnapshotObjectId

  command getObjectByHeapObjectId
    parameters
      HeapSnapshotObjectId objectId
      # Symbolic group name that can be used to release multiple objects.
      optional string objectGroup
    returns
      # Evaluation result.
      Runtime.RemoteObject result

  command getSamplingProfile
    returns
      # Return the sampling profile being collected.
      SamplingHeapProfile profile

  command startSampling
    parameters
      # Average sample interval in bytes. Poisson distribution is used for the intervals. The
      # default value is 32768 bytes.
      optional number samplingInterval

  command startTrackingHeapObjects
    parameters
      optional boolean trackAllocations

  command stopSampling
    returns
      # Recorded sampling heap profile.
      SamplingHeapProfile profile

  command stopTrackingHeapObjects
    parameters
      # If true 'reportHeapSnapshotProgress' events will be generated while snapshot is being taken
      # when the tracking is stopped.
      optional boolean reportProgress
      optional boolean treatGlobalObjectsAsRoots

  command takeHeapSnapshot
    parameters
      # If true 'reportHeapSnapshotProgress' events will be generated while snapshot is being taken.
      optional boolean reportProgress
      # If true, a raw snapshot without artifical roots will be generated
      optional boolean treatGlobalObjectsAsRoots

  event addHeapSnapshotChunk
    parameters
      string chunk

  # If heap objects tracking has been started then backend may send update for one or more fragments
  event heapStatsUpdate
    parameters
      # An array of triplets. Each triplet describes a fragment. The first integer is the fragment
      # index, the second integer is a total count of objects for the fragment, the third integer is
      # a total size of the objects for the fragment.
      array of integer statsUpdate

  # If heap objects tracking has been started then backend regularly sends a current value for last
  # seen object id and corresponding timestamp. If the were changes in the heap since last event
  # then one or more heapStatsUpdate events will be sent before a new lastSeenObjectId event.
  event lastSeenObjectId
    parameters
      integer lastSeenObjectId
      number timestamp

  event reportHeapSnapshotProgress
    parameters
      integer done
      integer total
      optional boolean finished

  event resetProfiles

domain Profiler
  depends on Runtime
  depends on Debugger

  # Profile node. Holds callsite information, execution statistics and child nodes.
  type ProfileNode extends object
    properties
      # Unique id of the node.
      integer id
      # Function location.
      Runtime.CallFrame callFrame
      # Number of samples where this node was on top of the call stack.
      optional integer hitCount
      # Child node ids.
      optional array of integer children
      # The reason of being not optimized. The function may be deoptimized or marked as don't
      # optimize.
      optional string deoptReason
      # An array of source position ticks.
      optional array of PositionTickInfo positionTicks

  # Profile.
  type Profile extends object
    properties
      # The list of profile nodes. First item is the root node.
      array of ProfileNode nodes
      # Profiling start timestamp in microseconds.
      number startTime
      # Profiling end timestamp in microseconds.
      number endTime
      # Ids of samples top nodes.
      optional array of integer samples
      # Time intervals between adjacent samples in microseconds. The first delta is relative to the
      # profile startTime.
      optional array of integer timeDeltas

  # Specifies a number of samples attributed to a certain source position.
  type PositionTickInfo extends object
    properties
      # Source line number (1-based).
      integer line
      # Number of samples attributed to the source line.
      integer ticks

  # Coverage data for a source range.
  type CoverageRange extends object
    properties
      # JavaScript script source offset for the range start.
      integer startOffset
      # JavaScript script source offset for the range end.
      integer endOffset
      # Collected execution count of the source range.
      integer count

  # Coverage data for a JavaScript function.
  type FunctionCoverage extends object
    properties
      # JavaScript function name.
      string functionName
      # Source ranges inside the function with coverage data.
      array of CoverageRange ranges
      # Whether coverage data for this function has block granularity.
      boolean isBlockCoverage

  # Coverage data for a JavaScript script.
  type ScriptCoverage extends object
    properties
      # JavaScript script id.
      Runtime.ScriptId scriptId
      # JavaScript script name or url.
      string url
      # Functions contained in the script that has coverage data.
      array of FunctionCoverage functions

  # Describes a type collected during runtime.
  experimental type TypeObject extends object
    properties
      # Name of a type collected with type profiling.
      string name

  # Source offset and types for a parameter or return value.
  experimental type TypeProfileEntry extends object
    properties
      # Source offset of the parameter or end of function for return values.
      integer offset
      # The types for this parameter or return value.
      array of TypeObject types

  # Type profile data collected during runtime for a JavaScript script.
  experimental type ScriptTypeProfile extends object
    properties
      # JavaScript script id.
      Runtime.ScriptId scriptId
      # JavaScript script name or url.
      string url
      # Type profile entries for parameters and return values of the functions in the script.
      array of TypeProfileEntry entries

  # Collected counter information.
  experimental type CounterInfo extends object
    properties
      # Counter name.
      string name
      # Counter value.
      integer value

  command disable

  command enable

  # Collect coverage data for the current isolate. The coverage data may be incomplete due to
  # garbage collection.
  command getBestEffortCoverage
    returns
      # Coverage data for the current isolate.
      array of ScriptCoverage result

  # Changes CPU profiler sampling interval. Must be called before CPU profiles recording started.
  command setSamplingInterval
    parameters
      # New sampling interval in microseconds.
      integer interval

  command start

  # Enable precise code coverage. Coverage data for JavaScript executed before enabling precise code
  # coverage may be incomplete. Enabling prevents running optimized code and resets execution
  # counters.
  command startPreciseCoverage
    parameters
      # Collect accurate call counts beyond simple 'covered' or 'not covered'.
      optional boolean callCount
      # Collect block-based coverage.
      optional boolean detailed
      # Allow the backend to send updates on its own initiative
      optional boolean allowTriggeredUpdates
    returns
      # Monotonically increasing time (in seconds) when the coverage update was taken in the backend.
      number timestamp

  # Enable type profile.
  experimental command startTypeProfile

  command stop
    returns
      # Recorded profile.
      Profile profile

  # Disable precise code coverage. Disabling releases unnecessary execution count records and allows
  # executing optimized code.
  command stopPreciseCoverage

  # Disable type profile. Disabling releases type profile data collected so far.
  experimental command stopTypeProfile

  # Collect coverage data for the current isolate, and resets execution counters. Precise code
  # coverage needs to have started.
  command takePreciseCoverage
    returns
      # Coverage data for the current isolate.
      array of ScriptCoverage result
      # Monotonically increasing time (in seconds) when the coverage update was taken in the backend.
      number timestamp

  # Collect type profile.
  experimental command takeTypeProfile
    returns
      # Type profile for all scripts since startTypeProfile() was turned on.
      array of ScriptTypeProfile result

  # Enable run time call stats collection.
  experimental command enableRuntimeCallStats

  # Disable run time call stats collection.
  experimental command disableRuntimeCallStats

  # Retrieve run time call stats.
  experimental command getRuntimeCallStats
    returns
      # Collected counter information.
      array of CounterInfo result

  event consoleProfileFinished
    parameters
      string id
      # Location of console.profileEnd().
      Debugger.Location location
      Profile profile
      # Profile title passed as an argument to console.profile().
      optional string title

  # Sent when new profile recording is started using console.profile() call.
  event consoleProfileStarted
    parameters
      string id
      # Location of console.profile().
      Debugger.Location location
      # Profile title passed as an argument to console.profile().
      optional string title

  # Reports coverage delta since the last poll (either from an event like this, or from
  # `takePreciseCoverage` for the current isolate. May only be sent if precise code
  # coverage has been started. This event can be trigged by the embedder to, for example,
  # trigger collection of coverage data immediatelly at a certain point in time.
  experimental event preciseCoverageDeltaUpdate
    parameters
      # Monotonically increasing time (in seconds) when the coverage update was taken in the backend.
      number timestamp
      # Identifier for distinguishing coverage events.
      string occassion
      # Coverage data for the current isolate.
      array of ScriptCoverage result

# 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.
domain Runtime

  # Unique script identifier.
  type ScriptId extends string

  # Unique object identifier.
  type RemoteObjectId extends string

  # Primitive value which cannot be JSON-stringified. Includes values `-0`, `NaN`, `Infinity`,
  # `-Infinity`, and bigint literals.
  type UnserializableValue extends string

  # Mirror object referencing original JavaScript object.
  type RemoteObject extends object
    properties
      # Object type.
      enum type
        object
        function
        undefined
        string
        number
        boolean
        symbol
        bigint
        wasm
      # Object subtype hint. Specified for `object` or `wasm` type values only.
      optional enum subtype
        array
        null
        node
        regexp
        date
        map
        set
        weakmap
        weakset
        iterator
        generator
        error
        proxy
        promise
        typedarray
        arraybuffer
        dataview
        i32
        i64
        f32
        f64
        v128
        externref
      # Object class (constructor) name. Specified for `object` type values only.
      optional string className
      # Remote object value in case of primitive values or JSON values (if it was requested).
      optional any value
      # Primitive value which can not be JSON-stringified does not have `value`, but gets this
      # property.
      optional UnserializableValue unserializableValue
      # String representation of the object.
      optional string description
      # Unique object identifier (for non-primitive values).
      optional RemoteObjectId objectId
      # Preview containing abbreviated property values. Specified for `object` type values only.
      experimental optional ObjectPreview preview
      experimental optional CustomPreview customPreview

  experimental type CustomPreview extends object
    properties
      # The JSON-stringified result of formatter.header(object, config) call.
      # It contains json ML array that represents RemoteObject.
      string header
      # If formatter returns true as a result of formatter.hasBody call then bodyGetterId will
      # contain RemoteObjectId for the function that returns result of formatter.body(object, config) call.
      # The result value is json ML array.
      optional RemoteObjectId bodyGetterId

  # Object containing abbreviated remote object value.
  experimental type ObjectPreview extends object
    properties
      # Object type.
      enum type
        object
        function
        undefined
        string
        number
        boolean
        symbol
        bigint
      # Object subtype hint. Specified for `object` type values only.
      optional enum subtype
        array
        null
        node
        regexp
        date
        map
        set
        weakmap
        weakset
        iterator
        generator
        error
      # String representation of the object.
      optional string description
      # True iff some of the properties or entries of the original object did not fit.
      boolean overflow
      # List of the properties.
      array of PropertyPreview properties
      # List of the entries. Specified for `map` and `set` subtype values only.
      optional array of EntryPreview entries

  experimental type PropertyPreview extends object
    properties
      # Property name.
      string name
      # Object type. Accessor means that the property itself is an accessor property.
      enum type
        object
        function
        undefined
        string
        number
        boolean
        symbol
        accessor
        bigint
      # User-friendly property value string.
      optional string value
      # Nested value preview.
      optional ObjectPreview valuePreview
      # Object subtype hint. Specified for `object` type values only.
      optional enum subtype
        array
        null
        node
        regexp
        date
        map
        set
        weakmap
        weakset
        iterator
        generator
        error

  experimental type EntryPreview extends object
    properties
      # Preview of the key. Specified for map-like collection entries.
      optional ObjectPreview key
      # Preview of the value.
      ObjectPreview value

  # Object property descriptor.
  type PropertyDescriptor extends object
    properties
      # Property name or symbol description.
      string name
      # The value associated with the property.
      optional RemoteObject value
      # True if the value associated with the property may be changed (data descriptors only).
      optional boolean writable
      # A function which serves as a getter for the property, or `undefined` if there is no getter
      # (accessor descriptors only).
      optional RemoteObject get
      # A function which serves as a setter for the property, or `undefined` if there is no setter
      # (accessor descriptors only).
      optional RemoteObject set
      # True if the type of this property descriptor may be changed and if the property may be
      # deleted from the corresponding object.
      boolean configurable
      # True if this property shows up during enumeration of the properties on the corresponding
      # object.
      boolean enumerable
      # True if the result was thrown during the evaluation.
      optional boolean wasThrown
      # True if the property is owned for the object.
      optional boolean isOwn
      # Property symbol object, if the property is of the `symbol` type.
      optional RemoteObject symbol

  # Object internal property descriptor. This property isn't normally visible in JavaScript code.
  type InternalPropertyDescriptor extends object
    properties
      # Conventional property name.
      string name
      # The value associated with the property.
      optional RemoteObject value

  # Object private field descriptor.
  experimental type PrivatePropertyDescriptor extends object
    properties
      # Private property name.
      string name
      # The value associated with the private property.
      optional RemoteObject value
      # A function which serves as a getter for the private property,
      # or `undefined` if there is no getter (accessor descriptors only).
      optional RemoteObject get
      # A function which serves as a setter for the private property,
      # or `undefined` if there is no setter (accessor descriptors only).
      optional RemoteObject set

  # Represents function call argument. Either remote object id `objectId`, primitive `value`,
  # unserializable primitive value or neither of (for undefined) them should be specified.
  type CallArgument extends object
    properties
      # Primitive value or serializable javascript object.
      optional any value
      # Primitive value which can not be JSON-stringified.
      optional UnserializableValue unserializableValue
      # Remote object handle.
      optional RemoteObjectId objectId

  # Id of an execution context.
  type ExecutionContextId extends integer

  # Description of an isolated world.
  type ExecutionContextDescription extends object
    properties
      # Unique id of the execution context. It can be used to specify in which execution context
      # script evaluation should be performed.
      ExecutionContextId id
      # Execution context origin.
      string origin
      # Human readable name describing given context.
      string name
      # Embedder-specific auxiliary data.
      optional object auxData

  # Detailed information about exception (or error) that was thrown during script compilation or
  # execution.
  type ExceptionDetails extends object
    properties
      # Exception id.
      integer exceptionId
      # Exception text, which should be used together with exception object when available.
      string text
      # Line number of the exception location (0-based).
      integer lineNumber
      # Column number of the exception location (0-based).
      integer columnNumber
      # Script ID of the exception location.
      optional ScriptId scriptId
      # URL of the exception location, to be used when the script was not reported.
      optional string url
      # JavaScript stack trace if available.
      optional StackTrace stackTrace
      # Exception object if available.
      optional RemoteObject exception
      # Identifier of the context where exception happened.
      optional ExecutionContextId executionContextId

  # Number of milliseconds since epoch.
  type Timestamp extends number

  # Number of milliseconds.
  type TimeDelta extends number

  # Stack entry for runtime errors and assertions.
  type CallFrame extends object
    properties
      # JavaScript function name.
      string functionName
      # JavaScript script id.
      ScriptId scriptId
      # JavaScript script name or url.
      string url
      # JavaScript script line number (0-based).
      integer lineNumber
      # JavaScript script column number (0-based).
      integer columnNumber

  # Call frames for assertions or error messages.
  type StackTrace extends object
    properties
      # String label of this stack trace. For async traces this may be a name of the function that
      # initiated the async call.
      optional string description
      # JavaScript function name.
      array of CallFrame callFrames
      # Asynchronous JavaScript stack trace that preceded this stack, if available.
      optional StackTrace parent
      # Asynchronous JavaScript stack trace that preceded this stack, if available.
      experimental optional StackTraceId parentId

  # Unique identifier of current debugger.
  experimental type UniqueDebuggerId extends string

  # If `debuggerId` is set stack trace comes from another debugger and can be resolved there. This
  # allows to track cross-debugger calls. See `Runtime.StackTrace` and `Debugger.paused` for usages.
  experimental type StackTraceId extends object
    properties
      string id
      optional UniqueDebuggerId debuggerId

  # Add handler to promise with given promise object id.
  command awaitPromise
    parameters
      # Identifier of the promise.
      RemoteObjectId promiseObjectId
      # Whether the result is expected to be a JSON object that should be sent by value.
      optional boolean returnByValue
      # Whether preview should be generated for the result.
      optional boolean generatePreview
    returns
      # Promise result. Will contain rejected value if promise was rejected.
      RemoteObject result
      # Exception details if stack strace is available.
      optional ExceptionDetails exceptionDetails

  # Calls function with given declaration on the given object. Object group of the result is
  # inherited from the target object.
  command callFunctionOn
    parameters
      # Declaration of the function to call.
      string functionDeclaration
      # Identifier of the object to call function on. Either objectId or executionContextId should
      # be specified.
      optional RemoteObjectId objectId
      # Call arguments. All call arguments must belong to the same JavaScript world as the target
      # object.
      optional array of CallArgument arguments
      # In silent mode exceptions thrown during evaluation are not reported and do not pause
      # execution. Overrides `setPauseOnException` state.
      optional boolean silent
      # Whether the result is expected to be a JSON object which should be sent by value.
      optional boolean returnByValue
      # Whether preview should be generated for the result.
      experimental optional boolean generatePreview
      # Whether execution should be treated as initiated by user in the UI.
      optional boolean userGesture
      # Whether execution should `await` for resulting value and return once awaited promise is
      # resolved.
      optional boolean awaitPromise
      # Specifies execution context which global object will be used to call function on. Either
      # executionContextId or objectId should be specified.
      optional ExecutionContextId executionContextId
      # Symbolic group name that can be used to release multiple objects. If objectGroup is not
      # specified and objectId is, objectGroup will be inherited from object.
      optional string objectGroup
    returns
      # Call result.
      RemoteObject result
      # Exception details.
      optional ExceptionDetails exceptionDetails

  # Compiles expression.
  command compileScript
    parameters
      # Expression to compile.
      string expression
      # Source url to be set for the script.
      string sourceURL
      # Specifies whether the compiled script should be persisted.
      boolean persistScript
      # 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.
      optional ExecutionContextId executionContextId
    returns
      # Id of the script.
      optional ScriptId scriptId
      # Exception details.
      optional ExceptionDetails exceptionDetails

  # Disables reporting of execution contexts creation.
  command disable

  # Discards collected exceptions and console API calls.
  command discardConsoleEntries

  # 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.
  command enable

  # Evaluates expression on global object.
  command evaluate
    parameters
      # Expression to evaluate.
      string expression
      # Symbolic group name that can be used to release multiple objects.
      optional string objectGroup
      # Determines whether Command Line API should be available during the evaluation.
      optional boolean includeCommandLineAPI
      # In silent mode exceptions thrown during evaluation are not reported and do not pause
      # execution. Overrides `setPauseOnException` state.
      optional boolean silent
      # 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.
      optional ExecutionContextId contextId
      # Whether the result is expected to be a JSON object that should be sent by value.
      optional boolean returnByValue
      # Whether preview should be generated for the result.
      experimental optional boolean generatePreview
      # Whether execution should be treated as initiated by user in the UI.
      optional boolean userGesture
      # Whether execution should `await` for resulting value and return once awaited promise is
      # resolved.
      optional boolean awaitPromise
      # Whether to throw an exception if side effect cannot be ruled out during evaluation.
      # This implies `disableBreaks` below.
      experimental optional boolean throwOnSideEffect
      # Terminate execution after timing out (number of milliseconds).
      experimental optional TimeDelta timeout
      # Disable breakpoints during execution.
      experimental optional boolean disableBreaks
      # Setting this flag to true enables `let` re-declaration and top-level `await`.
      # Note that `let` variables can only be re-declared if they originate from
      # `replMode` themselves.
      experimental optional boolean replMode
      # The Content Security Policy (CSP) for the target might block 'unsafe-eval'
      # which includes eval(), Function(), setTimeout() and setInterval()
      # when called with non-callable arguments. This flag bypasses CSP for this
      # evaluation and allows unsafe-eval. Defaults to true.
      experimental optional boolean allowUnsafeEvalBlockedByCSP
    returns
      # Evaluation result.
      RemoteObject result
      # Exception details.
      optional ExceptionDetails exceptionDetails

  # Returns the isolate id.
  experimental command getIsolateId
    returns
      # The isolate id.
      string id

  # Returns the JavaScript heap usage.
  # It is the total usage of the corresponding isolate not scoped to a particular Runtime.
  experimental command getHeapUsage
    returns
      # Used heap size in bytes.
      number usedSize
      # Allocated heap size in bytes.
      number totalSize

  # Returns properties of a given object. Object group of the result is inherited from the target
  # object.
  command getProperties
    parameters
      # Identifier of the object to return properties for.
      RemoteObjectId objectId
      # If true, returns properties belonging only to the element itself, not to its prototype
      # chain.
      optional boolean ownProperties
      # If true, returns accessor properties (with getter/setter) only; internal properties are not
      # returned either.
      experimental optional boolean accessorPropertiesOnly
      # Whether preview should be generated for the results.
      experimental optional boolean generatePreview
    returns
      # Object properties.
      array of PropertyDescriptor result
      # Internal object properties (only of the element itself).
      optional array of InternalPropertyDescriptor internalProperties
      # Object private properties.
      experimental optional array of PrivatePropertyDescriptor privateProperties
      # Exception details.
      optional ExceptionDetails exceptionDetails

  # Returns all let, const and class variables from global scope.
  command globalLexicalScopeNames
    parameters
      # Specifies in which execution context to lookup global scope variables.
      optional ExecutionContextId executionContextId
    returns
      array of string names

  command queryObjects
    parameters
      # Identifier of the prototype to return objects for.
      RemoteObjectId prototypeObjectId
      # Symbolic group name that can be used to release the results.
      optional string objectGroup
    returns
      # Array with objects.
      RemoteObject objects

  # Releases remote object with given id.
  command releaseObject
    parameters
      # Identifier of the object to release.
      RemoteObjectId objectId

  # Releases all remote objects that belong to a given group.
  command releaseObjectGroup
    parameters
      # Symbolic object group name.
      string objectGroup

  # Tells inspected instance to run if it was waiting for debugger to attach.
  command runIfWaitingForDebugger

  # Runs script with given id in a given context.
  command runScript
    parameters
      # Id of the script to run.
      ScriptId scriptId
      # 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.
      optional ExecutionContextId executionContextId
      # Symbolic group name that can be used to release multiple objects.
      optional string objectGroup
      # In silent mode exceptions thrown during evaluation are not reported and do not pause
      # execution. Overrides `setPauseOnException` state.
      optional boolean silent
      # Determines whether Command Line API should be available during the evaluation.
      optional boolean includeCommandLineAPI
      # Whether the result is expected to be a JSON object which should be sent by value.
      optional boolean returnByValue
      # Whether preview should be generated for the result.
      optional boolean generatePreview
      # Whether execution should `await` for resulting value and return once awaited promise is
      # resolved.
      optional boolean awaitPromise
    returns
      # Run result.
      RemoteObject result
      # Exception details.
      optional ExceptionDetails exceptionDetails

  # Enables or disables async call stacks tracking.
  command setAsyncCallStackDepth
    redirect Debugger
    parameters
      # Maximum depth of async call stacks. Setting to `0` will effectively disable collecting async
      # call stacks (default).
      integer maxDepth

  experimental command setCustomObjectFormatterEnabled
    parameters
      boolean enabled

  experimental command setMaxCallStackSizeToCapture
    parameters
      integer size

  # Terminate current or next JavaScript execution.
  # Will cancel the termination when the outer-most script execution ends.
  experimental command terminateExecution

  # If executionContextId is empty, adds binding with the given name on the
  # global objects of all inspected contexts, including those created later,
  # bindings survive reloads.
  # If executionContextId is specified, adds binding only on global object of
  # given execution context.
  # Binding function takes exactly one argument, this argument should be string,
  # in case of any other input, function throws an exception.
  # Each binding function call produces Runtime.bindingCalled notification.
  experimental command addBinding
    parameters
      string name
      optional ExecutionContextId executionContextId

  # This method does not remove binding function from global object but
  # unsubscribes current runtime agent from Runtime.bindingCalled notifications.
  experimental command removeBinding
    parameters
      string name

  # Notification is issued every time when binding is called.
  experimental event bindingCalled
    parameters
      string name
      string payload
      # Identifier of the context where the call was made.
      ExecutionContextId executionContextId

  # Issued when console API was called.
  event consoleAPICalled
    parameters
      # Type of the call.
      enum type
        log
        debug
        info
        error
        warning
        dir
        dirxml
        table
        trace
        clear
        startGroup
        startGroupCollapsed
        endGroup
        assert
        profile
        profileEnd
        count
        timeEnd
      # Call arguments.
      array of RemoteObject args
      # Identifier of the context where the call was made.
      ExecutionContextId executionContextId
      # Call timestamp.
      Timestamp timestamp
      # Stack trace captured when the call was made. The async stack chain is automatically reported for
      # the following call types: `assert`, `error`, `trace`, `warning`. For other types the async call
      # chain can be retrieved using `Debugger.getStackTrace` and `stackTrace.parentId` field.
      optional StackTrace stackTrace
      # 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.
      experimental optional string context

  # Issued when unhandled exception was revoked.
  event exceptionRevoked
    parameters
      # Reason describing why exception was revoked.
      string reason
      # The id of revoked exception, as reported in `exceptionThrown`.
      integer exceptionId

  # Issued when exception was thrown and unhandled.
  event exceptionThrown
    parameters
      # Timestamp of the exception.
      Timestamp timestamp
      ExceptionDetails exceptionDetails

  # Issued when new execution context is created.
  event executionContextCreated
    parameters
      # A newly created execution context.
      ExecutionContextDescription context

  # Issued when execution context is destroyed.
  event executionContextDestroyed
    parameters
      # Id of the destroyed context
      ExecutionContextId executionContextId

  # Issued when all executionContexts were cleared in browser
  event executionContextsCleared

  # Issued when object should be inspected (for example, as a result of inspect() command line API
  # call).
  event inspectRequested
    parameters
      RemoteObject object
      object hints

# This domain is deprecated.
deprecated domain Schema

  # Description of the protocol domain.
  type Domain extends object
    properties
      # Domain name.
      string name
      # Domain version.
      string version

  # Returns supported domains.
  command getDomains
    returns
      # List of supported domains.
      array of Domain domains
