Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(64)

Unified Diff: src/inspector/v8-debugger-agent-impl.cc

Issue 2668763003: [inspector] V8DebuggerAgent cleanup (Closed)
Patch Set: Created 3 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « src/inspector/v8-debugger-agent-impl.h ('k') | test/inspector/debugger/step-into-next-script.js » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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 998d3723caeacb1041aaa1248db6a38ecd76f85b..08caa434a18212f831709e27a0857020e819961a 100644
--- a/src/inspector/v8-debugger-agent-impl.cc
+++ b/src/inspector/v8-debugger-agent-impl.cc
@@ -134,16 +134,13 @@ V8DebuggerAgentImpl::V8DebuggerAgentImpl(
m_breakReason(protocol::Debugger::Paused::ReasonEnum::Other),
m_scheduledDebuggerStep(NoStep),
m_javaScriptPauseScheduled(false),
- m_recursionLevelForStepOut(0),
- m_skipAllPauses(false) {
+ m_recursionLevelForStepOut(0) {
clearBreakDetails();
}
V8DebuggerAgentImpl::~V8DebuggerAgentImpl() {}
void V8DebuggerAgentImpl::enableImpl() {
- // m_inspector->addListener may result in reporting all parsed scripts to
- // the agent so it should already be in enabled state by then.
m_enabled = true;
m_state->setBoolean(DebuggerAgentState::debuggerEnabled, true);
m_debugger->enable();
@@ -179,9 +176,8 @@ Response V8DebuggerAgentImpl::disable() {
v8::debug::NoBreakOnException);
m_state->setInteger(DebuggerAgentState::asyncCallStackDepth, 0);
- if (!m_pausedContext.IsEmpty()) m_debugger->continueProgram();
+ if (isPaused()) m_debugger->continueProgram();
m_debugger->disable();
- m_pausedContext.Reset();
JavaScriptCallFrames emptyCallFrames;
m_pausedCallFrames.swap(emptyCallFrames);
m_blackboxedPositions.clear();
@@ -195,6 +191,7 @@ Response V8DebuggerAgentImpl::disable() {
m_scheduledDebuggerStep = NoStep;
m_javaScriptPauseScheduled = false;
m_skipAllPauses = false;
+ m_state->setBoolean(DebuggerAgentState::skipAllPauses, false);
m_state->remove(DebuggerAgentState::blackboxPattern);
m_enabled = false;
m_state->setBoolean(DebuggerAgentState::debuggerEnabled, false);
@@ -236,8 +233,8 @@ Response V8DebuggerAgentImpl::setBreakpointsActive(bool active) {
}
Response V8DebuggerAgentImpl::setSkipAllPauses(bool skip) {
+ m_state->setBoolean(DebuggerAgentState::skipAllPauses, skip);
m_skipAllPauses = skip;
- m_state->setBoolean(DebuggerAgentState::skipAllPauses, m_skipAllPauses);
return Response::OK();
}
@@ -548,7 +545,7 @@ Response V8DebuggerAgentImpl::restartFrame(
const String16& callFrameId,
std::unique_ptr<Array<CallFrame>>* newCallFrames,
Maybe<StackTrace>* asyncStackTrace) {
- if (m_pausedContext.IsEmpty()) return Response::Error(kDebuggerNotPaused);
+ if (!isPaused()) return Response::Error(kDebuggerNotPaused);
InjectedScript::CallFrameScope scope(m_inspector, m_session->contextGroupId(),
callFrameId);
Response response = scope.initialize();
@@ -589,7 +586,7 @@ void V8DebuggerAgentImpl::schedulePauseOnNextStatement(
const String16& breakReason,
std::unique_ptr<protocol::DictionaryValue> data) {
if (!enabled() || m_scheduledDebuggerStep == StepInto ||
- m_javaScriptPauseScheduled || m_debugger->isPaused() ||
+ m_javaScriptPauseScheduled || isPaused() ||
!m_debugger->breakpointsActivated())
return;
m_breakReason = breakReason;
@@ -600,22 +597,21 @@ void V8DebuggerAgentImpl::schedulePauseOnNextStatement(
void V8DebuggerAgentImpl::schedulePauseOnNextStatementIfSteppingInto() {
DCHECK(enabled());
if (m_scheduledDebuggerStep != StepInto || m_javaScriptPauseScheduled ||
- m_debugger->isPaused())
+ isPaused())
return;
clearBreakDetails();
m_debugger->setPauseOnNextStatement(true);
}
void V8DebuggerAgentImpl::cancelPauseOnNextStatement() {
- if (m_javaScriptPauseScheduled || m_debugger->isPaused()) return;
+ if (m_javaScriptPauseScheduled || isPaused()) return;
clearBreakDetails();
m_debugger->setPauseOnNextStatement(false);
}
Response V8DebuggerAgentImpl::pause() {
if (!enabled()) return Response::Error(kDebuggerNotEnabled);
- if (m_javaScriptPauseScheduled || m_debugger->isPaused())
- return Response::OK();
+ if (m_javaScriptPauseScheduled || isPaused()) return Response::OK();
clearBreakDetails();
m_javaScriptPauseScheduled = true;
m_scheduledDebuggerStep = NoStep;
@@ -624,7 +620,7 @@ Response V8DebuggerAgentImpl::pause() {
}
Response V8DebuggerAgentImpl::resume() {
- if (m_pausedContext.IsEmpty()) return Response::Error(kDebuggerNotPaused);
+ if (!isPaused()) return Response::Error(kDebuggerNotPaused);
m_scheduledDebuggerStep = NoStep;
m_session->releaseObjectGroup(kBacktraceObjectGroup);
m_debugger->continueProgram();
@@ -632,7 +628,7 @@ Response V8DebuggerAgentImpl::resume() {
}
Response V8DebuggerAgentImpl::stepOver() {
- if (m_pausedContext.IsEmpty()) return Response::Error(kDebuggerNotPaused);
+ if (!isPaused()) return Response::Error(kDebuggerNotPaused);
// StepOver at function return point should fallback to StepInto.
JavaScriptCallFrame* frame =
!m_pausedCallFrames.empty() ? m_pausedCallFrames[0].get() : nullptr;
@@ -644,7 +640,7 @@ Response V8DebuggerAgentImpl::stepOver() {
}
Response V8DebuggerAgentImpl::stepInto() {
- if (m_pausedContext.IsEmpty()) return Response::Error(kDebuggerNotPaused);
+ if (!isPaused()) return Response::Error(kDebuggerNotPaused);
m_scheduledDebuggerStep = StepInto;
m_session->releaseObjectGroup(kBacktraceObjectGroup);
m_debugger->stepIntoStatement();
@@ -652,7 +648,7 @@ Response V8DebuggerAgentImpl::stepInto() {
}
Response V8DebuggerAgentImpl::stepOut() {
- if (m_pausedContext.IsEmpty()) return Response::Error(kDebuggerNotPaused);
+ if (!isPaused()) return Response::Error(kDebuggerNotPaused);
m_scheduledDebuggerStep = StepOut;
m_recursionLevelForStepOut = 1;
m_session->releaseObjectGroup(kBacktraceObjectGroup);
@@ -690,7 +686,7 @@ Response V8DebuggerAgentImpl::evaluateOnCallFrame(
Maybe<bool> silent, Maybe<bool> returnByValue, Maybe<bool> generatePreview,
std::unique_ptr<RemoteObject>* result,
Maybe<protocol::Runtime::ExceptionDetails>* exceptionDetails) {
- if (m_pausedContext.IsEmpty()) return Response::Error(kDebuggerNotPaused);
+ if (!isPaused()) return Response::Error(kDebuggerNotPaused);
InjectedScript::CallFrameScope scope(m_inspector, m_session->contextGroupId(),
callFrameId);
Response response = scope.initialize();
@@ -720,7 +716,7 @@ Response V8DebuggerAgentImpl::setVariableValue(
std::unique_ptr<protocol::Runtime::CallArgument> newValueArgument,
const String16& callFrameId) {
if (!enabled()) return Response::Error(kDebuggerNotEnabled);
- if (m_pausedContext.IsEmpty()) return Response::Error(kDebuggerNotPaused);
+ if (!isPaused()) return Response::Error(kDebuggerNotPaused);
InjectedScript::CallFrameScope scope(m_inspector, m_session->contextGroupId(),
callFrameId);
Response response = scope.initialize();
@@ -829,7 +825,6 @@ Response V8DebuggerAgentImpl::setBlackboxedRanges(
void V8DebuggerAgentImpl::willExecuteScript(int scriptId) {
changeJavaScriptRecursionLevel(+1);
- // Fast return.
if (m_scheduledDebuggerStep != StepInto) return;
schedulePauseOnNextStatementIfSteppingInto();
}
@@ -839,8 +834,7 @@ void V8DebuggerAgentImpl::didExecuteScript() {
}
void V8DebuggerAgentImpl::changeJavaScriptRecursionLevel(int step) {
- if (m_javaScriptPauseScheduled && !m_skipAllPauses &&
- !m_debugger->isPaused()) {
+ if (m_javaScriptPauseScheduled && !m_skipAllPauses && !isPaused()) {
// Do not ever loose user's pause request until we have actually paused.
m_debugger->setPauseOnNextStatement(true);
}
@@ -858,7 +852,7 @@ void V8DebuggerAgentImpl::changeJavaScriptRecursionLevel(int step) {
Response V8DebuggerAgentImpl::currentCallFrames(
std::unique_ptr<Array<CallFrame>>* result) {
- if (m_pausedContext.IsEmpty() || !m_pausedCallFrames.size()) {
+ if (!isPaused()) {
*result = Array<CallFrame>::create();
return Response::OK();
}
@@ -967,12 +961,14 @@ Response V8DebuggerAgentImpl::currentCallFrames(
}
std::unique_ptr<StackTrace> V8DebuggerAgentImpl::currentAsyncStackTrace() {
- if (m_pausedContext.IsEmpty()) return nullptr;
+ if (!isPaused()) return nullptr;
V8StackTraceImpl* stackTrace = m_debugger->currentAsyncCallChain();
return stackTrace ? stackTrace->buildInspectorObjectForTail(m_debugger)
: nullptr;
}
+bool V8DebuggerAgentImpl::isPaused() const { return m_debugger->isPaused(); }
+
void V8DebuggerAgentImpl::didParseSource(
std::unique_ptr<V8DebuggerScript> script, bool success) {
v8::HandleScope handles(m_isolate);
@@ -1056,23 +1052,13 @@ void V8DebuggerAgentImpl::didParseSource(
}
}
-bool V8DebuggerAgentImpl::didPause(v8::Local<v8::Context> context,
+void V8DebuggerAgentImpl::didPause(int contextId,
v8::Local<v8::Value> exception,
const std::vector<String16>& hitBreakpoints,
bool isPromiseRejection, bool isUncaught,
bool isOOMBreak) {
- if (!isOOMBreak) {
- if (m_skipAllPauses) return false;
- JavaScriptCallFrames callFrames = m_debugger->currentCallFrames(1);
- JavaScriptCallFrame* topCallFrame =
- !callFrames.empty() ? callFrames.begin()->get() : nullptr;
- // Skip pauses inside V8 internal scripts and on syntax errors.
- if (!topCallFrame) return false;
- }
- DCHECK(m_pausedContext.IsEmpty());
JavaScriptCallFrames frames = m_debugger->currentCallFrames();
m_pausedCallFrames.swap(frames);
- m_pausedContext.Reset(m_isolate, context);
v8::HandleScope handles(m_isolate);
if (isOOMBreak) {
@@ -1080,8 +1066,7 @@ bool V8DebuggerAgentImpl::didPause(v8::Local<v8::Context> context,
m_breakAuxData = nullptr;
} else if (!exception.IsEmpty()) {
InjectedScript* injectedScript = nullptr;
- m_session->findInjectedScript(InspectedContext::contextId(context),
- injectedScript);
+ m_session->findInjectedScript(contextId, injectedScript);
if (injectedScript) {
m_breakReason =
isPromiseRejection
@@ -1129,11 +1114,9 @@ bool V8DebuggerAgentImpl::didPause(v8::Local<v8::Context> context,
m_debugger->removeBreakpoint(m_continueToLocationBreakpointId);
m_continueToLocationBreakpointId = "";
}
- return true;
}
void V8DebuggerAgentImpl::didContinue() {
- m_pausedContext.Reset();
JavaScriptCallFrames emptyCallFrames;
m_pausedCallFrames.swap(emptyCallFrames);
clearBreakDetails();
@@ -1143,9 +1126,7 @@ void V8DebuggerAgentImpl::didContinue() {
void V8DebuggerAgentImpl::breakProgram(
const String16& breakReason,
std::unique_ptr<protocol::DictionaryValue> data) {
- if (!enabled() || m_skipAllPauses || !m_pausedContext.IsEmpty() ||
- !m_debugger->canBreakProgram())
- return;
+ if (!enabled() || !m_debugger->canBreakProgram() || m_skipAllPauses) return;
m_breakReason = breakReason;
m_breakAuxData = std::move(data);
m_scheduledDebuggerStep = NoStep;
« no previous file with comments | « src/inspector/v8-debugger-agent-impl.h ('k') | test/inspector/debugger/step-into-next-script.js » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698