diff --git a/platform/script-debugger/backend/src/debugger/BreakpointManager.kt b/platform/script-debugger/backend/src/debugger/BreakpointManager.kt index 2cf19e28c47d..06cee00048dc 100644 --- a/platform/script-debugger/backend/src/debugger/BreakpointManager.kt +++ b/platform/script-debugger/backend/src/debugger/BreakpointManager.kt @@ -80,6 +80,10 @@ interface BreakpointManager { */ fun enableBreakpoints(enabled: Boolean): Promise<*> + fun setBreakOnFirstStatement() + + fun isBreakOnFirstStatement(context: SuspendContext<*>): Boolean + interface SetBreakpointResult data class BreakpointExist(val existingBreakpoint: Breakpoint) : SetBreakpointResult data class BreakpointCreated(val breakpoint: Breakpoint, val isResolved: Promise) : SetBreakpointResult diff --git a/platform/script-debugger/backend/src/debugger/BreakpointManagerBase.kt b/platform/script-debugger/backend/src/debugger/BreakpointManagerBase.kt index 3e297ee11fc2..9403446faa55 100644 --- a/platform/script-debugger/backend/src/debugger/BreakpointManagerBase.kt +++ b/platform/script-debugger/backend/src/debugger/BreakpointManagerBase.kt @@ -113,6 +113,11 @@ abstract class BreakpointManagerBase> : BreakpointManager override fun flush(breakpoint: Breakpoint) = (breakpoint as T).flush(this) override fun enableBreakpoints(enabled: Boolean): Promise<*> = rejectedPromise("Unsupported") + + override fun setBreakOnFirstStatement() { + } + + override fun isBreakOnFirstStatement(context: SuspendContext<*>): Boolean = false } // used in goland @@ -135,4 +140,9 @@ class DummyBreakpointManager : BreakpointManager { override fun flush(breakpoint: Breakpoint) = nullPromise() override fun enableBreakpoints(enabled: Boolean) = nullPromise() + + override fun setBreakOnFirstStatement() { + } + + override fun isBreakOnFirstStatement(context: SuspendContext<*>): Boolean = false } \ No newline at end of file diff --git a/platform/script-debugger/protocol/protocol-model-generator/src/Generator.kt b/platform/script-debugger/protocol/protocol-model-generator/src/Generator.kt index c2f916afd09c..8dc358f8fac7 100644 --- a/platform/script-debugger/protocol/protocol-model-generator/src/Generator.kt +++ b/platform/script-debugger/protocol/protocol-model-generator/src/Generator.kt @@ -230,10 +230,8 @@ internal class Generator(outputDir: String, private val rootPackage: String, req val READER_INTERFACE_NAME = "ProtocolResponseReader" - // todo DOMDebugger private val INCLUDED_DOMAINS = arrayOf("CSS", "Debugger", "DOM", "Inspector", "Log", "Network", "Page", "Runtime", "ServiceWorker", - "Tracing", "Target", "Overlay", - "Console") + "Tracing", "Target", "Overlay", "Console", "DOMDebugger") fun generateMethodNameSubstitute(originalName: String, out: TextOutput): String { if (originalName != "this") { diff --git a/platform/util/resources/misc/registry.properties b/platform/util/resources/misc/registry.properties index 209a660d46a4..41dbaa7ecde1 100644 --- a/platform/util/resources/misc/registry.properties +++ b/platform/util/resources/misc/registry.properties @@ -863,6 +863,10 @@ js.debugger.use.vm.receiver=false js.debugger.auto.expressions.all.qualifiers=false js.debugger.async.call.stack.depth=10 js.debugger.async.call.stack.depth.description=Enables or disables async call stacks tracking in JS debugger +js.debugger.break.on.first.statement=false +js.debugger.break.on.first.statement.description=Puts instrumentation breakpoint on first statement of each script. +js.debugger.break.on.first.statement.with.regexp=false +js.debugger.break.on.first.statement.with.regexp.description=Puts regexp breakpoint on first statement of each script. html.prefer.short.notation.of.boolean.attributes=true