Index: src/inspector/v8-debugger.cc |
diff --git a/src/inspector/v8-debugger.cc b/src/inspector/v8-debugger.cc |
index 1917820fecc7ea2039c555d13baa928d7cbf83fd..e5da610bf3aff704e46acf71486462c15214bc87 100644 |
--- a/src/inspector/v8-debugger.cc |
+++ b/src/inspector/v8-debugger.cc |
@@ -11,7 +11,9 @@ |
#include "src/inspector/string-util.h" |
#include "src/inspector/v8-debugger-agent-impl.h" |
#include "src/inspector/v8-inspector-impl.h" |
+#include "src/inspector/v8-inspector-session-impl.h" |
#include "src/inspector/v8-internal-value-type.h" |
+#include "src/inspector/v8-runtime-agent-impl.h" |
#include "src/inspector/v8-stack-trace-impl.h" |
#include "src/inspector/v8-value-copier.h" |
@@ -27,15 +29,6 @@ inline v8::Local<v8::Boolean> v8Boolean(bool value, v8::Isolate* isolate) { |
return value ? v8::True(isolate) : v8::False(isolate); |
} |
-V8DebuggerAgentImpl* agentForScript(V8InspectorImpl* inspector, |
- v8::Local<v8::debug::Script> script) { |
- int contextId; |
- if (!script->ContextId().To(&contextId)) return nullptr; |
- int contextGroupId = inspector->contextGroupId(contextId); |
- if (!contextGroupId) return nullptr; |
- return inspector->enabledDebuggerAgentForGroup(contextGroupId); |
-} |
- |
v8::MaybeLocal<v8::Array> collectionsEntries(v8::Local<v8::Context> context, |
v8::Local<v8::Value> value) { |
v8::Isolate* isolate = context->GetIsolate(); |
@@ -361,7 +354,9 @@ bool V8Debugger::breakProgram(int targetContextGroupId) { |
DCHECK(targetContextGroupId); |
m_targetContextGroupId = targetContextGroupId; |
v8::debug::BreakRightNow(m_isolate); |
- return m_inspector->enabledDebuggerAgentForGroup(targetContextGroupId); |
+ V8InspectorSessionImpl* session = |
+ m_inspector->sessionForContextGroup(targetContextGroupId); |
+ return session && session->debuggerAgent()->enabled(); |
} |
void V8Debugger::continueProgram(int targetContextGroupId) { |
@@ -605,9 +600,10 @@ void V8Debugger::handleProgramBreak(v8::Local<v8::Context> pausedContext, |
m_stepIntoAsyncCallback.reset(); |
} |
m_breakRequested = false; |
- V8DebuggerAgentImpl* agent = m_inspector->enabledDebuggerAgentForGroup( |
- m_inspector->contextGroupId(pausedContext)); |
- if (!agent || (agent->skipAllPauses() && !m_scheduledOOMBreak)) return; |
+ V8InspectorSessionImpl* session = |
+ m_inspector->sessionForContextGroup(contextGroupId); |
+ if (!session || !session->debuggerAgent()->enabled()) return; |
+ if (!m_scheduledOOMBreak && session->debuggerAgent()->skipAllPauses()) return; |
std::vector<String16> breakpointIds; |
if (!hitBreakpointNumbers.IsEmpty()) { |
@@ -627,25 +623,25 @@ void V8Debugger::handleProgramBreak(v8::Local<v8::Context> pausedContext, |
} |
clearContinueToLocation(); |
+ DCHECK(contextGroupId); |
m_pausedContext = pausedContext; |
m_executionState = executionState; |
m_pausedContextGroupId = contextGroupId; |
- agent->didPause(InspectedContext::contextId(pausedContext), exception, |
- breakpointIds, isPromiseRejection, isUncaught, |
- m_scheduledOOMBreak); |
- int groupId = m_inspector->contextGroupId(pausedContext); |
- DCHECK(groupId); |
+ session->debuggerAgent()->didPause( |
+ InspectedContext::contextId(pausedContext), exception, breakpointIds, |
+ isPromiseRejection, isUncaught, m_scheduledOOMBreak); |
{ |
v8::Context::Scope scope(pausedContext); |
v8::Local<v8::Context> context = m_isolate->GetCurrentContext(); |
CHECK(!context.IsEmpty() && |
context != v8::debug::GetDebugContext(m_isolate)); |
- m_inspector->client()->runMessageLoopOnPause(groupId); |
+ m_inspector->client()->runMessageLoopOnPause(contextGroupId); |
m_pausedContextGroupId = 0; |
} |
// The agent may have been removed in the nested loop. |
- agent = m_inspector->enabledDebuggerAgentForGroup(groupId); |
- if (agent) agent->didContinue(); |
+ session = m_inspector->sessionForContextGroup(contextGroupId); |
+ if (session && session->debuggerAgent()->enabled()) |
+ session->debuggerAgent()->didContinue(); |
if (m_scheduledOOMBreak) m_isolate->RestoreOriginalHeapLimit(); |
m_scheduledOOMBreak = false; |
m_pausedContext.Clear(); |
@@ -664,12 +660,16 @@ void V8Debugger::v8OOMCallback(void* data) { |
void V8Debugger::ScriptCompiled(v8::Local<v8::debug::Script> script, |
bool has_compile_error) { |
- V8DebuggerAgentImpl* agent = agentForScript(m_inspector, script); |
- if (!agent) return; |
+ int contextId; |
+ if (!script->ContextId().To(&contextId)) return; |
+ V8InspectorSessionImpl* session = m_inspector->sessionForContextGroup( |
+ m_inspector->contextGroupId(contextId)); |
+ if (!session || !session->debuggerAgent()->enabled()) return; |
if (script->IsWasm()) { |
- m_wasmTranslation.AddScript(script.As<v8::debug::WasmScript>(), agent); |
+ m_wasmTranslation.AddScript(script.As<v8::debug::WasmScript>(), |
+ session->debuggerAgent()); |
} else if (m_ignoreScriptParsedEventsCounter == 0) { |
- agent->didParseSource( |
+ session->debuggerAgent()->didParseSource( |
V8DebuggerScript::Create(m_isolate, script, inLiveEditScope), |
!has_compile_error); |
} |
@@ -702,10 +702,13 @@ void V8Debugger::ExceptionThrown(v8::Local<v8::Context> pausedContext, |
bool V8Debugger::IsFunctionBlackboxed(v8::Local<v8::debug::Script> script, |
const v8::debug::Location& start, |
const v8::debug::Location& end) { |
- V8DebuggerAgentImpl* agent = agentForScript(m_inspector, script); |
- if (!agent) return false; |
- return agent->isFunctionBlackboxed(String16::fromInteger(script->Id()), start, |
- end); |
+ int contextId; |
+ if (!script->ContextId().To(&contextId)) return false; |
+ V8InspectorSessionImpl* session = m_inspector->sessionForContextGroup( |
+ m_inspector->contextGroupId(contextId)); |
+ if (!session || !session->debuggerAgent()->enabled()) return false; |
+ return session->debuggerAgent()->isFunctionBlackboxed( |
+ String16::fromInteger(script->Id()), start, end); |
} |
void V8Debugger::PromiseEventOccurred(v8::debug::PromiseDebugActionType type, |
@@ -1081,7 +1084,9 @@ std::unique_ptr<V8StackTraceImpl> V8Debugger::captureStackTrace( |
if (!contextGroupId) return nullptr; |
int stackSize = 1; |
- if (fullStack || m_inspector->enabledRuntimeAgentForGroup(contextGroupId)) { |
+ V8InspectorSessionImpl* session = |
+ m_inspector->sessionForContextGroup(contextGroupId); |
+ if (fullStack || (session && session->runtimeAgent()->enabled())) { |
stackSize = V8StackTraceImpl::maxCallStackSizeToCapture; |
} |
return V8StackTraceImpl::capture(this, contextGroupId, stackSize); |