Index: src/inspector/v8-console.cc |
diff --git a/src/inspector/v8-console.cc b/src/inspector/v8-console.cc |
index 0d3c03a4dadce618170ec6dfaa4c5abadd98adc6..1ff4e5cebee6d61daf5a17d7eb91fa41d856a83f 100644 |
--- a/src/inspector/v8-console.cc |
+++ b/src/inspector/v8-console.cc |
@@ -124,24 +124,8 @@ class ConsoleHelper { |
return func; |
} |
- V8ProfilerAgentImpl* profilerAgent() { |
- if (V8InspectorSessionImpl* session = currentSession()) { |
- if (session && session->profilerAgent()->enabled()) |
- return session->profilerAgent(); |
- } |
- return nullptr; |
- } |
- |
- V8DebuggerAgentImpl* debuggerAgent() { |
- if (V8InspectorSessionImpl* session = currentSession()) { |
- if (session && session->debuggerAgent()->enabled()) |
- return session->debuggerAgent(); |
- } |
- return nullptr; |
- } |
- |
- V8InspectorSessionImpl* currentSession() { |
- return m_inspector->sessionForContextGroup(m_groupId); |
+ void forEachSession(std::function<void(V8InspectorSessionImpl*)> callback) { |
+ m_inspector->forEachSession(m_groupId, callback); |
} |
private: |
@@ -288,9 +272,12 @@ void V8Console::Assert(const v8::debug::ConsoleCallArguments& info) { |
toV8String(m_inspector->isolate(), String16("console.assert"))); |
helper.reportCall(ConsoleAPIType::kAssert, arguments); |
- if (V8DebuggerAgentImpl* debuggerAgent = helper.debuggerAgent()) |
- debuggerAgent->breakProgramOnException( |
- protocol::Debugger::Paused::ReasonEnum::Assert, nullptr); |
+ helper.forEachSession([](V8InspectorSessionImpl* session) { |
+ if (session->debuggerAgent()->enabled()) { |
+ session->debuggerAgent()->breakProgramOnException( |
+ protocol::Debugger::Paused::ReasonEnum::Assert, nullptr); |
+ } |
+ }); |
} |
void V8Console::MarkTimeline(const v8::debug::ConsoleCallArguments& info) { |
@@ -304,14 +291,18 @@ void V8Console::MarkTimeline(const v8::debug::ConsoleCallArguments& info) { |
void V8Console::Profile(const v8::debug::ConsoleCallArguments& info) { |
ConsoleHelper helper(info, m_inspector); |
- if (V8ProfilerAgentImpl* profilerAgent = helper.profilerAgent()) |
- profilerAgent->consoleProfile(helper.firstArgToString(String16())); |
+ helper.forEachSession([&helper](V8InspectorSessionImpl* session) { |
+ session->profilerAgent()->consoleProfile( |
+ helper.firstArgToString(String16())); |
+ }); |
} |
void V8Console::ProfileEnd(const v8::debug::ConsoleCallArguments& info) { |
ConsoleHelper helper(info, m_inspector); |
- if (V8ProfilerAgentImpl* profilerAgent = helper.profilerAgent()) |
- profilerAgent->consoleProfileEnd(helper.firstArgToString(String16())); |
+ helper.forEachSession([&helper](V8InspectorSessionImpl* session) { |
+ session->profilerAgent()->consoleProfileEnd( |
+ helper.firstArgToString(String16())); |
+ }); |
} |
static void timeFunction(const v8::debug::ConsoleCallArguments& info, |
@@ -426,20 +417,24 @@ static void setFunctionBreakpoint(ConsoleHelper& helper, |
v8::Local<v8::Function> function, |
V8DebuggerAgentImpl::BreakpointSource source, |
const String16& condition, bool enable) { |
- V8DebuggerAgentImpl* debuggerAgent = helper.debuggerAgent(); |
- if (!debuggerAgent) return; |
String16 scriptId = String16::fromInteger(function->ScriptId()); |
int lineNumber = function->GetScriptLineNumber(); |
int columnNumber = function->GetScriptColumnNumber(); |
if (lineNumber == v8::Function::kLineOffsetNotFound || |
columnNumber == v8::Function::kLineOffsetNotFound) |
return; |
- if (enable) |
- debuggerAgent->setBreakpointAt(scriptId, lineNumber, columnNumber, source, |
- condition); |
- else |
- debuggerAgent->removeBreakpointAt(scriptId, lineNumber, columnNumber, |
- source); |
+ |
+ helper.forEachSession([&enable, &scriptId, &lineNumber, &columnNumber, |
+ &source, &condition](V8InspectorSessionImpl* session) { |
+ if (!session->debuggerAgent()->enabled()) return; |
+ if (enable) { |
+ session->debuggerAgent()->setBreakpointAt( |
+ scriptId, lineNumber, columnNumber, source, condition); |
+ } else { |
+ session->debuggerAgent()->removeBreakpointAt(scriptId, lineNumber, |
+ columnNumber, source); |
+ } |
+ }); |
} |
void V8Console::debugFunctionCallback( |
@@ -526,10 +521,11 @@ static void inspectImpl(const v8::FunctionCallbackInfo<v8::Value>& info, |
std::unique_ptr<protocol::DictionaryValue> hints = |
protocol::DictionaryValue::create(); |
if (copyToClipboard) hints->setBoolean("copyToClipboard", true); |
- if (V8InspectorSessionImpl* session = helper.currentSession()) { |
- session->runtimeAgent()->inspect(std::move(wrappedObject), |
- std::move(hints)); |
- } |
+ helper.forEachSession( |
+ [&wrappedObject, &hints](V8InspectorSessionImpl* session) { |
+ session->runtimeAgent()->inspect(std::move(wrappedObject), |
+ std::move(hints)); |
+ }); |
} |
void V8Console::inspectCallback( |
@@ -546,14 +542,14 @@ void V8Console::inspectedObject(const v8::FunctionCallbackInfo<v8::Value>& info, |
DCHECK(num < V8InspectorSessionImpl::kInspectedObjectBufferSize); |
v8::debug::ConsoleCallArguments args(info); |
ConsoleHelper helper(args, m_inspector); |
- if (V8InspectorSessionImpl* session = helper.currentSession()) { |
+ helper.forEachSession([&info, &num](V8InspectorSessionImpl* session) { |
V8InspectorSession::Inspectable* object = session->inspectedObject(num); |
v8::Isolate* isolate = info.GetIsolate(); |
if (object) |
info.GetReturnValue().Set(object->get(isolate->GetCurrentContext())); |
else |
info.GetReturnValue().Set(v8::Undefined(isolate)); |
- } |
+ }); |
} |
void V8Console::installMemoryGetter(v8::Local<v8::Context> context, |