Index: src/inspector/v8-debugger-agent-impl.cc |
diff --git a/src/inspector/v8-debugger-agent-impl.cc b/src/inspector/v8-debugger-agent-impl.cc |
index 04008bed5d17bf33fd9c3299e8da0d808f294561..e2757ee0a9f36c72c70793602ed9772e656e90b1 100644 |
--- a/src/inspector/v8-debugger-agent-impl.cc |
+++ b/src/inspector/v8-debugger-agent-impl.cc |
@@ -197,8 +197,7 @@ V8DebuggerAgentImpl::V8DebuggerAgentImpl( |
m_enabled(false), |
m_state(state), |
m_frontend(frontendChannel), |
- m_isolate(m_inspector->isolate()), |
- m_javaScriptPauseScheduled(false) {} |
+ m_isolate(m_inspector->isolate()) {} |
V8DebuggerAgentImpl::~V8DebuggerAgentImpl() {} |
@@ -250,7 +249,6 @@ Response V8DebuggerAgentImpl::disable() { |
m_debugger->setAsyncCallStackDepth(this, 0); |
m_continueToLocationBreakpointId = String16(); |
clearBreakDetails(); |
- m_javaScriptPauseScheduled = false; |
m_skipAllPauses = false; |
m_state->setBoolean(DebuggerAgentState::skipAllPauses, false); |
m_state->remove(DebuggerAgentState::blackboxPattern); |
@@ -684,9 +682,7 @@ void V8DebuggerAgentImpl::clearBreakDetails() { |
void V8DebuggerAgentImpl::schedulePauseOnNextStatement( |
const String16& breakReason, |
std::unique_ptr<protocol::DictionaryValue> data) { |
- if (!enabled() || m_javaScriptPauseScheduled || isPaused() || |
- !m_debugger->breakpointsActivated()) |
- return; |
+ if (!enabled() || isPaused() || !m_debugger->breakpointsActivated()) return; |
if (m_breakReason.empty()) { |
m_debugger->setPauseOnNextStatement(true, m_session->contextGroupId()); |
} |
@@ -694,17 +690,18 @@ void V8DebuggerAgentImpl::schedulePauseOnNextStatement( |
} |
void V8DebuggerAgentImpl::cancelPauseOnNextStatement() { |
- if (m_javaScriptPauseScheduled || isPaused()) return; |
+ if (!enabled() || isPaused() || !m_debugger->breakpointsActivated()) return; |
+ if (m_breakReason.size() == 1) m_debugger->setPauseOnNextStatement(false, 0); |
popBreakDetails(); |
- if (m_breakReason.empty()) m_debugger->setPauseOnNextStatement(false, 0); |
} |
Response V8DebuggerAgentImpl::pause() { |
if (!enabled()) return Response::Error(kDebuggerNotEnabled); |
- if (m_javaScriptPauseScheduled || isPaused()) return Response::OK(); |
- clearBreakDetails(); |
- m_javaScriptPauseScheduled = true; |
- m_debugger->setPauseOnNextStatement(true, m_session->contextGroupId()); |
+ if (isPaused()) return Response::OK(); |
+ if (m_breakReason.empty()) { |
+ m_debugger->setPauseOnNextStatement(true, m_session->contextGroupId()); |
+ } |
+ pushBreakDetails(protocol::Debugger::Paused::ReasonEnum::Other, nullptr); |
return Response::OK(); |
} |
@@ -1236,7 +1233,6 @@ void V8DebuggerAgentImpl::didPause(int contextId, |
m_frontend.paused(std::move(protocolCallFrames), breakReason, |
std::move(breakAuxData), std::move(hitBreakpointIds), |
currentAsyncStackTrace()); |
- m_javaScriptPauseScheduled = false; |
if (!m_continueToLocationBreakpointId.isEmpty()) { |
m_debugger->removeBreakpoint(m_continueToLocationBreakpointId); |