Index: third_party/WebKit/Source/platform/v8_inspector/V8DebuggerAgentImpl.cpp |
diff --git a/third_party/WebKit/Source/platform/v8_inspector/V8DebuggerAgentImpl.cpp b/third_party/WebKit/Source/platform/v8_inspector/V8DebuggerAgentImpl.cpp |
index 46c5e52c3ba447ae0def133e5904ac4fbb9d073e..6a3472e4793b58918e9e1f5f78ed307b65e9988a 100644 |
--- a/third_party/WebKit/Source/platform/v8_inspector/V8DebuggerAgentImpl.cpp |
+++ b/third_party/WebKit/Source/platform/v8_inspector/V8DebuggerAgentImpl.cpp |
@@ -11,6 +11,8 @@ |
#include "platform/v8_inspector/JavaScriptCallFrame.h" |
#include "platform/v8_inspector/RemoteObjectId.h" |
#include "platform/v8_inspector/ScriptBreakpoint.h" |
+#include "platform/v8_inspector/V8Debugger.h" |
+#include "platform/v8_inspector/V8DebuggerScript.h" |
#include "platform/v8_inspector/V8InspectorImpl.h" |
#include "platform/v8_inspector/V8InspectorSessionImpl.h" |
#include "platform/v8_inspector/V8Regex.h" |
@@ -94,6 +96,7 @@ static std::unique_ptr<protocol::Debugger::Location> buildProtocolLocation(const |
V8DebuggerAgentImpl::V8DebuggerAgentImpl(V8InspectorSessionImpl* session, protocol::FrontendChannel* frontendChannel, protocol::DictionaryValue* state) |
: m_inspector(session->inspector()) |
+ , m_debugger(m_inspector->debugger()) |
, m_session(session) |
, m_enabled(false) |
, m_state(state) |
@@ -131,15 +134,15 @@ void V8DebuggerAgentImpl::enable() |
// the agent so it should already be in enabled state by then. |
m_enabled = true; |
m_state->setBoolean(DebuggerAgentState::debuggerEnabled, true); |
- m_inspector->debuggerAgentEnabled(); |
+ m_debugger->enable(); |
std::vector<std::unique_ptr<V8DebuggerScript>> compiledScripts; |
- m_inspector->getCompiledScripts(m_session->contextGroupId(), compiledScripts); |
+ m_debugger->getCompiledScripts(m_session->contextGroupId(), compiledScripts); |
for (size_t i = 0; i < compiledScripts.size(); i++) |
didParseSource(std::move(compiledScripts[i]), true); |
// FIXME(WK44513): breakpoints activated flag should be synchronized between all front-ends |
- m_inspector->setBreakpointsActivated(true); |
+ m_debugger->setBreakpointsActivated(true); |
} |
bool V8DebuggerAgentImpl::enabled() |
@@ -166,19 +169,19 @@ void V8DebuggerAgentImpl::disable(ErrorString*) |
return; |
m_state->setObject(DebuggerAgentState::javaScriptBreakpoints, protocol::DictionaryValue::create()); |
- m_state->setInteger(DebuggerAgentState::pauseOnExceptionsState, V8InspectorImpl::DontPauseOnExceptions); |
+ m_state->setInteger(DebuggerAgentState::pauseOnExceptionsState, V8Debugger::DontPauseOnExceptions); |
m_state->setInteger(DebuggerAgentState::asyncCallStackDepth, 0); |
if (!m_pausedContext.IsEmpty()) |
- m_inspector->continueProgram(); |
- m_inspector->debuggerAgentDisabled(); |
+ m_debugger->continueProgram(); |
+ m_debugger->disable(); |
m_pausedContext.Reset(); |
JavaScriptCallFrames emptyCallFrames; |
m_pausedCallFrames.swap(emptyCallFrames); |
m_scripts.clear(); |
m_blackboxedPositions.clear(); |
m_breakpointIdToDebuggerBreakpointIds.clear(); |
- m_inspector->setAsyncCallStackDepth(this, 0); |
+ m_debugger->setAsyncCallStackDepth(this, 0); |
m_continueToLocationBreakpointId = String16(); |
clearBreakDetails(); |
m_scheduledDebuggerStep = NoStep; |
@@ -206,7 +209,7 @@ void V8DebuggerAgentImpl::restore() |
enable(); |
ErrorString error; |
- int pauseState = V8InspectorImpl::DontPauseOnExceptions; |
+ int pauseState = V8Debugger::DontPauseOnExceptions; |
m_state->getInteger(DebuggerAgentState::pauseOnExceptionsState, &pauseState); |
setPauseOnExceptionsImpl(&error, pauseState); |
DCHECK(error.isEmpty()); |
@@ -215,7 +218,7 @@ void V8DebuggerAgentImpl::restore() |
int asyncCallStackDepth = 0; |
m_state->getInteger(DebuggerAgentState::asyncCallStackDepth, &asyncCallStackDepth); |
- m_inspector->setAsyncCallStackDepth(this, asyncCallStackDepth); |
+ m_debugger->setAsyncCallStackDepth(this, asyncCallStackDepth); |
String16 blackboxPattern; |
if (m_state->getString(DebuggerAgentState::blackboxPattern, &blackboxPattern)) { |
@@ -228,7 +231,7 @@ void V8DebuggerAgentImpl::setBreakpointsActive(ErrorString* errorString, bool ac |
{ |
if (!checkEnabled(errorString)) |
return; |
- m_inspector->setBreakpointsActivated(active); |
+ m_debugger->setBreakpointsActivated(active); |
} |
void V8DebuggerAgentImpl::setSkipAllPauses(ErrorString*, bool skipped) |
@@ -366,7 +369,7 @@ void V8DebuggerAgentImpl::removeBreakpoint(const String16& breakpointId) |
for (size_t i = 0; i < ids.size(); ++i) { |
const String16& debuggerBreakpointId = ids[i]; |
- m_inspector->removeBreakpoint(debuggerBreakpointId); |
+ m_debugger->removeBreakpoint(debuggerBreakpointId); |
m_serverBreakpoints.erase(debuggerBreakpointId); |
} |
m_breakpointIdToDebuggerBreakpointIds.erase(breakpointId); |
@@ -379,7 +382,7 @@ void V8DebuggerAgentImpl::continueToLocation(ErrorString* errorString, |
if (!checkEnabled(errorString)) |
return; |
if (!m_continueToLocationBreakpointId.isEmpty()) { |
- m_inspector->removeBreakpoint(m_continueToLocationBreakpointId); |
+ m_debugger->removeBreakpoint(m_continueToLocationBreakpointId); |
m_continueToLocationBreakpointId = ""; |
} |
@@ -391,7 +394,7 @@ void V8DebuggerAgentImpl::continueToLocation(ErrorString* errorString, |
return; |
ScriptBreakpoint breakpoint(lineNumber, columnNumber, ""); |
- m_continueToLocationBreakpointId = m_inspector->setBreakpoint(scriptId, breakpoint, &lineNumber, &columnNumber, interstateLocationOpt.fromMaybe(false)); |
+ m_continueToLocationBreakpointId = m_debugger->setBreakpoint(scriptId, breakpoint, &lineNumber, &columnNumber, interstateLocationOpt.fromMaybe(false)); |
resume(errorString); |
} |
@@ -399,7 +402,7 @@ void V8DebuggerAgentImpl::getBacktrace(ErrorString* errorString, std::unique_ptr |
{ |
if (!assertPaused(errorString)) |
return; |
- JavaScriptCallFrames frames = m_inspector->currentCallFrames(); |
+ JavaScriptCallFrames frames = m_debugger->currentCallFrames(); |
m_pausedCallFrames.swap(frames); |
*callFrames = currentCallFrames(errorString); |
if (!*callFrames) |
@@ -410,7 +413,7 @@ void V8DebuggerAgentImpl::getBacktrace(ErrorString* errorString, std::unique_ptr |
bool V8DebuggerAgentImpl::isCurrentCallStackEmptyOrBlackboxed() |
{ |
DCHECK(enabled()); |
- JavaScriptCallFrames callFrames = m_inspector->currentCallFrames(); |
+ JavaScriptCallFrames callFrames = m_debugger->currentCallFrames(); |
for (size_t index = 0; index < callFrames.size(); ++index) { |
if (!isCallFrameWithUnknownScriptOrBlackboxed(callFrames[index].get())) |
return false; |
@@ -498,7 +501,7 @@ std::unique_ptr<protocol::Debugger::Location> V8DebuggerAgentImpl::resolveBreakp |
int actualLineNumber; |
int actualColumnNumber; |
- String16 debuggerBreakpointId = m_inspector->setBreakpoint(scriptId, breakpoint, &actualLineNumber, &actualColumnNumber, false); |
+ String16 debuggerBreakpointId = m_debugger->setBreakpoint(scriptId, breakpoint, &actualLineNumber, &actualColumnNumber, false); |
if (debuggerBreakpointId.isEmpty()) |
return nullptr; |
@@ -541,7 +544,7 @@ void V8DebuggerAgentImpl::setScriptSource(ErrorString* errorString, |
v8::HandleScope handles(m_isolate); |
v8::Local<v8::String> newSource = toV8String(m_isolate, newContent); |
- if (!m_inspector->setScriptSource(scriptId, newSource, preview.fromMaybe(false), errorString, optOutCompileError, &m_pausedCallFrames, stackChanged)) |
+ if (!m_debugger->setScriptSource(scriptId, newSource, preview.fromMaybe(false), errorString, optOutCompileError, &m_pausedCallFrames, stackChanged)) |
return; |
ScriptsMap::iterator it = m_scripts.find(scriptId); |
@@ -576,7 +579,7 @@ void V8DebuggerAgentImpl::restartFrame(ErrorString* errorString, |
*errorString = "Internal error"; |
return; |
} |
- JavaScriptCallFrames frames = m_inspector->currentCallFrames(); |
+ JavaScriptCallFrames frames = m_debugger->currentCallFrames(); |
m_pausedCallFrames.swap(frames); |
*newCallFrames = currentCallFrames(errorString); |
@@ -600,48 +603,48 @@ void V8DebuggerAgentImpl::getScriptSource(ErrorString* error, const String16& sc |
void V8DebuggerAgentImpl::schedulePauseOnNextStatement(const String16& breakReason, std::unique_ptr<protocol::DictionaryValue> data) |
{ |
- if (!enabled() || m_scheduledDebuggerStep == StepInto || m_javaScriptPauseScheduled || m_inspector->isPaused() || !m_inspector->breakpointsActivated()) |
+ if (!enabled() || m_scheduledDebuggerStep == StepInto || m_javaScriptPauseScheduled || m_debugger->isPaused() || !m_debugger->breakpointsActivated()) |
return; |
m_breakReason = breakReason; |
m_breakAuxData = std::move(data); |
m_pausingOnNativeEvent = true; |
m_skipNextDebuggerStepOut = false; |
- m_inspector->setPauseOnNextStatement(true); |
+ m_debugger->setPauseOnNextStatement(true); |
} |
void V8DebuggerAgentImpl::schedulePauseOnNextStatementIfSteppingInto() |
{ |
DCHECK(enabled()); |
- if (m_scheduledDebuggerStep != StepInto || m_javaScriptPauseScheduled || m_inspector->isPaused()) |
+ if (m_scheduledDebuggerStep != StepInto || m_javaScriptPauseScheduled || m_debugger->isPaused()) |
return; |
clearBreakDetails(); |
m_pausingOnNativeEvent = false; |
m_skippedStepFrameCount = 0; |
m_recursionLevelForStepFrame = 0; |
- m_inspector->setPauseOnNextStatement(true); |
+ m_debugger->setPauseOnNextStatement(true); |
} |
void V8DebuggerAgentImpl::cancelPauseOnNextStatement() |
{ |
- if (m_javaScriptPauseScheduled || m_inspector->isPaused()) |
+ if (m_javaScriptPauseScheduled || m_debugger->isPaused()) |
return; |
clearBreakDetails(); |
m_pausingOnNativeEvent = false; |
- m_inspector->setPauseOnNextStatement(false); |
+ m_debugger->setPauseOnNextStatement(false); |
} |
void V8DebuggerAgentImpl::pause(ErrorString* errorString) |
{ |
if (!checkEnabled(errorString)) |
return; |
- if (m_javaScriptPauseScheduled || m_inspector->isPaused()) |
+ if (m_javaScriptPauseScheduled || m_debugger->isPaused()) |
return; |
clearBreakDetails(); |
m_javaScriptPauseScheduled = true; |
m_scheduledDebuggerStep = NoStep; |
m_skippedStepFrameCount = 0; |
m_steppingFromFramework = false; |
- m_inspector->setPauseOnNextStatement(true); |
+ m_debugger->setPauseOnNextStatement(true); |
} |
void V8DebuggerAgentImpl::resume(ErrorString* errorString) |
@@ -651,7 +654,7 @@ void V8DebuggerAgentImpl::resume(ErrorString* errorString) |
m_scheduledDebuggerStep = NoStep; |
m_steppingFromFramework = false; |
m_session->releaseObjectGroup(backtraceObjectGroup); |
- m_inspector->continueProgram(); |
+ m_debugger->continueProgram(); |
} |
void V8DebuggerAgentImpl::stepOver(ErrorString* errorString) |
@@ -667,7 +670,7 @@ void V8DebuggerAgentImpl::stepOver(ErrorString* errorString) |
m_scheduledDebuggerStep = StepOver; |
m_steppingFromFramework = isTopPausedCallFrameBlackboxed(); |
m_session->releaseObjectGroup(backtraceObjectGroup); |
- m_inspector->stepOverStatement(); |
+ m_debugger->stepOverStatement(); |
} |
void V8DebuggerAgentImpl::stepInto(ErrorString* errorString) |
@@ -677,7 +680,7 @@ void V8DebuggerAgentImpl::stepInto(ErrorString* errorString) |
m_scheduledDebuggerStep = StepInto; |
m_steppingFromFramework = isTopPausedCallFrameBlackboxed(); |
m_session->releaseObjectGroup(backtraceObjectGroup); |
- m_inspector->stepIntoStatement(); |
+ m_debugger->stepIntoStatement(); |
} |
void V8DebuggerAgentImpl::stepOut(ErrorString* errorString) |
@@ -689,20 +692,20 @@ void V8DebuggerAgentImpl::stepOut(ErrorString* errorString) |
m_recursionLevelForStepOut = 1; |
m_steppingFromFramework = isTopPausedCallFrameBlackboxed(); |
m_session->releaseObjectGroup(backtraceObjectGroup); |
- m_inspector->stepOutOfFunction(); |
+ m_debugger->stepOutOfFunction(); |
} |
void V8DebuggerAgentImpl::setPauseOnExceptions(ErrorString* errorString, const String16& stringPauseState) |
{ |
if (!checkEnabled(errorString)) |
return; |
- V8InspectorImpl::PauseOnExceptionsState pauseState; |
+ V8Debugger::PauseOnExceptionsState pauseState; |
if (stringPauseState == "none") { |
- pauseState = V8InspectorImpl::DontPauseOnExceptions; |
+ pauseState = V8Debugger::DontPauseOnExceptions; |
} else if (stringPauseState == "all") { |
- pauseState = V8InspectorImpl::PauseOnAllExceptions; |
+ pauseState = V8Debugger::PauseOnAllExceptions; |
} else if (stringPauseState == "uncaught") { |
- pauseState = V8InspectorImpl::PauseOnUncaughtExceptions; |
+ pauseState = V8Debugger::PauseOnUncaughtExceptions; |
} else { |
*errorString = "Unknown pause on exceptions mode: " + stringPauseState; |
return; |
@@ -712,8 +715,8 @@ void V8DebuggerAgentImpl::setPauseOnExceptions(ErrorString* errorString, const S |
void V8DebuggerAgentImpl::setPauseOnExceptionsImpl(ErrorString* errorString, int pauseState) |
{ |
- m_inspector->setPauseOnExceptionsState(static_cast<V8InspectorImpl::PauseOnExceptionsState>(pauseState)); |
- if (m_inspector->getPauseOnExceptionsState() != pauseState) |
+ m_debugger->setPauseOnExceptionsState(static_cast<V8Debugger::PauseOnExceptionsState>(pauseState)); |
+ if (m_debugger->getPauseOnExceptionsState() != pauseState) |
*errorString = "Internal error. Could not change pause on exceptions state"; |
else |
m_state->setInteger(DebuggerAgentState::pauseOnExceptionsState, pauseState); |
@@ -796,7 +799,7 @@ void V8DebuggerAgentImpl::setAsyncCallStackDepth(ErrorString* errorString, int d |
if (!checkEnabled(errorString)) |
return; |
m_state->setInteger(DebuggerAgentState::asyncCallStackDepth, depth); |
- m_inspector->setAsyncCallStackDepth(this, depth); |
+ m_debugger->setAsyncCallStackDepth(this, depth); |
} |
void V8DebuggerAgentImpl::setBlackboxPatterns(ErrorString* errorString, std::unique_ptr<protocol::Array<String16>> patterns) |
@@ -888,9 +891,9 @@ void V8DebuggerAgentImpl::didExecuteScript() |
void V8DebuggerAgentImpl::changeJavaScriptRecursionLevel(int step) |
{ |
- if (m_javaScriptPauseScheduled && !m_skipAllPauses && !m_inspector->isPaused()) { |
+ if (m_javaScriptPauseScheduled && !m_skipAllPauses && !m_debugger->isPaused()) { |
// Do not ever loose user's pause request until we have actually paused. |
- m_inspector->setPauseOnNextStatement(true); |
+ m_debugger->setPauseOnNextStatement(true); |
} |
if (m_scheduledDebuggerStep == StepOut) { |
m_recursionLevelForStepOut += step; |
@@ -912,7 +915,7 @@ void V8DebuggerAgentImpl::changeJavaScriptRecursionLevel(int step) |
// from the old StepFrame. |
m_skippedStepFrameCount = 0; |
if (m_scheduledDebuggerStep == NoStep) |
- m_inspector->clearStepping(); |
+ m_debugger->clearStepping(); |
else if (m_scheduledDebuggerStep == StepOut) |
m_skipNextDebuggerStepOut = true; |
} |
@@ -984,8 +987,8 @@ std::unique_ptr<StackTrace> V8DebuggerAgentImpl::currentAsyncStackTrace() |
{ |
if (m_pausedContext.IsEmpty()) |
return nullptr; |
- V8StackTraceImpl* stackTrace = m_inspector->currentAsyncCallChain(); |
- return stackTrace ? stackTrace->buildInspectorObjectForTail(m_inspector) : nullptr; |
+ V8StackTraceImpl* stackTrace = m_debugger->currentAsyncCallChain(); |
+ return stackTrace ? stackTrace->buildInspectorObjectForTail(m_debugger) : nullptr; |
} |
void V8DebuggerAgentImpl::didParseSource(std::unique_ptr<V8DebuggerScript> script, bool success) |
@@ -1053,7 +1056,7 @@ void V8DebuggerAgentImpl::didParseSource(std::unique_ptr<V8DebuggerScript> scrip |
V8DebuggerAgentImpl::SkipPauseRequest V8DebuggerAgentImpl::didPause(v8::Local<v8::Context> context, v8::Local<v8::Value> exception, const std::vector<String16>& hitBreakpoints, bool isPromiseRejection) |
{ |
- JavaScriptCallFrames callFrames = m_inspector->currentCallFrames(1); |
+ JavaScriptCallFrames callFrames = m_debugger->currentCallFrames(1); |
JavaScriptCallFrame* topCallFrame = !callFrames.empty() ? callFrames.begin()->get() : nullptr; |
// Skip pause in internal scripts (e.g. InjectedScriptSource.js). |
@@ -1083,14 +1086,14 @@ V8DebuggerAgentImpl::SkipPauseRequest V8DebuggerAgentImpl::didPause(v8::Local<v8 |
return RequestContinue; |
DCHECK(m_pausedContext.IsEmpty()); |
- JavaScriptCallFrames frames = m_inspector->currentCallFrames(); |
+ JavaScriptCallFrames frames = m_debugger->currentCallFrames(); |
m_pausedCallFrames.swap(frames); |
m_pausedContext.Reset(m_isolate, context); |
v8::HandleScope handles(m_isolate); |
if (!exception.IsEmpty()) { |
ErrorString ignored; |
- InjectedScript* injectedScript = m_session->findInjectedScript(&ignored, V8InspectorImpl::contextId(context)); |
+ InjectedScript* injectedScript = m_session->findInjectedScript(&ignored, V8Debugger::contextId(context)); |
if (injectedScript) { |
m_breakReason = isPromiseRejection ? protocol::Debugger::Paused::ReasonEnum::PromiseRejection : protocol::Debugger::Paused::ReasonEnum::Exception; |
ErrorString errorString; |
@@ -1124,7 +1127,7 @@ V8DebuggerAgentImpl::SkipPauseRequest V8DebuggerAgentImpl::didPause(v8::Local<v8 |
m_recursionLevelForStepFrame = 0; |
if (!m_continueToLocationBreakpointId.isEmpty()) { |
- m_inspector->removeBreakpoint(m_continueToLocationBreakpointId); |
+ m_debugger->removeBreakpoint(m_continueToLocationBreakpointId); |
m_continueToLocationBreakpointId = ""; |
} |
return result; |
@@ -1141,19 +1144,19 @@ void V8DebuggerAgentImpl::didContinue() |
void V8DebuggerAgentImpl::breakProgram(const String16& breakReason, std::unique_ptr<protocol::DictionaryValue> data) |
{ |
- if (!enabled() || m_skipAllPauses || !m_pausedContext.IsEmpty() || isCurrentCallStackEmptyOrBlackboxed() || !m_inspector->breakpointsActivated()) |
+ if (!enabled() || m_skipAllPauses || !m_pausedContext.IsEmpty() || isCurrentCallStackEmptyOrBlackboxed() || !m_debugger->breakpointsActivated()) |
return; |
m_breakReason = breakReason; |
m_breakAuxData = std::move(data); |
m_scheduledDebuggerStep = NoStep; |
m_steppingFromFramework = false; |
m_pausingOnNativeEvent = false; |
- m_inspector->breakProgram(); |
+ m_debugger->breakProgram(); |
} |
void V8DebuggerAgentImpl::breakProgramOnException(const String16& breakReason, std::unique_ptr<protocol::DictionaryValue> data) |
{ |
- if (!enabled() || m_inspector->getPauseOnExceptionsState() == V8InspectorImpl::DontPauseOnExceptions) |
+ if (!enabled() || m_debugger->getPauseOnExceptionsState() == V8Debugger::DontPauseOnExceptions) |
return; |
breakProgram(breakReason, std::move(data)); |
} |