OLD | NEW |
1 // Copyright 2016 The Chromium Authors. All rights reserved. | 1 // Copyright 2016 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include "platform/v8_inspector/V8StackTraceImpl.h" | 5 #include "platform/v8_inspector/V8StackTraceImpl.h" |
6 | 6 |
7 #include "platform/inspector_protocol/Platform.h" | 7 #include "platform/inspector_protocol/Platform.h" |
8 #include "platform/inspector_protocol/String16.h" | 8 #include "platform/inspector_protocol/String16.h" |
9 #include "platform/v8_inspector/V8DebuggerImpl.h" | 9 #include "platform/v8_inspector/V8DebuggerImpl.h" |
10 #include "platform/v8_inspector/V8StringUtil.h" | 10 #include "platform/v8_inspector/V8StringUtil.h" |
(...skipping 209 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
220 DCHECK(m_frames.size()); | 220 DCHECK(m_frames.size()); |
221 return m_frames[0].m_functionName; | 221 return m_frames[0].m_functionName; |
222 } | 222 } |
223 | 223 |
224 String16 V8StackTraceImpl::topScriptId() const | 224 String16 V8StackTraceImpl::topScriptId() const |
225 { | 225 { |
226 DCHECK(m_frames.size()); | 226 DCHECK(m_frames.size()); |
227 return m_frames[0].m_scriptId; | 227 return m_frames[0].m_scriptId; |
228 } | 228 } |
229 | 229 |
230 std::unique_ptr<protocol::Runtime::StackTrace> V8StackTraceImpl::buildInspectorO
bject() const | 230 std::unique_ptr<protocol::Runtime::StackTrace> V8StackTraceImpl::buildInspectorO
bjectImpl() const |
231 { | 231 { |
232 std::unique_ptr<protocol::Array<protocol::Runtime::CallFrame>> frames = prot
ocol::Array<protocol::Runtime::CallFrame>::create(); | 232 std::unique_ptr<protocol::Array<protocol::Runtime::CallFrame>> frames = prot
ocol::Array<protocol::Runtime::CallFrame>::create(); |
233 for (size_t i = 0; i < m_frames.size(); i++) | 233 for (size_t i = 0; i < m_frames.size(); i++) |
234 frames->addItem(m_frames.at(i).buildInspectorObject()); | 234 frames->addItem(m_frames.at(i).buildInspectorObject()); |
235 | 235 |
236 std::unique_ptr<protocol::Runtime::StackTrace> stackTrace = protocol::Runtim
e::StackTrace::create() | 236 std::unique_ptr<protocol::Runtime::StackTrace> stackTrace = protocol::Runtim
e::StackTrace::create() |
237 .setCallFrames(std::move(frames)).build(); | 237 .setCallFrames(std::move(frames)).build(); |
238 if (!m_description.isEmpty()) | 238 if (!m_description.isEmpty()) |
239 stackTrace->setDescription(m_description); | 239 stackTrace->setDescription(m_description); |
240 if (m_parent) | 240 if (m_parent) |
241 stackTrace->setParent(m_parent->buildInspectorObject()); | 241 stackTrace->setParent(m_parent->buildInspectorObjectImpl()); |
242 return stackTrace; | 242 return stackTrace; |
243 } | 243 } |
244 | 244 |
245 std::unique_ptr<protocol::Runtime::StackTrace> V8StackTraceImpl::buildInspectorO
bjectForTail(V8DebuggerImpl* debugger) const | 245 std::unique_ptr<protocol::Runtime::StackTrace> V8StackTraceImpl::buildInspectorO
bjectForTail(V8DebuggerImpl* debugger) const |
246 { | 246 { |
247 v8::HandleScope handleScope(v8::Isolate::GetCurrent()); | 247 v8::HandleScope handleScope(v8::Isolate::GetCurrent()); |
248 // Next call collapses possible empty stack and ensures maxAsyncCallChainDep
th. | 248 // Next call collapses possible empty stack and ensures maxAsyncCallChainDep
th. |
249 std::unique_ptr<V8StackTraceImpl> fullChain = V8StackTraceImpl::create(debug
ger, m_contextGroupId, v8::Local<v8::StackTrace>(), V8StackTraceImpl::maxCallSta
ckSizeToCapture); | 249 std::unique_ptr<V8StackTraceImpl> fullChain = V8StackTraceImpl::create(debug
ger, m_contextGroupId, v8::Local<v8::StackTrace>(), V8StackTraceImpl::maxCallSta
ckSizeToCapture); |
250 if (!fullChain || !fullChain->m_parent) | 250 if (!fullChain || !fullChain->m_parent) |
251 return nullptr; | 251 return nullptr; |
252 return fullChain->m_parent->buildInspectorObject(); | 252 return fullChain->m_parent->buildInspectorObjectImpl(); |
| 253 } |
| 254 |
| 255 std::unique_ptr<protocol::Runtime::API::StackTrace> V8StackTraceImpl::buildInspe
ctorObject() const |
| 256 { |
| 257 return buildInspectorObjectImpl(); |
253 } | 258 } |
254 | 259 |
255 String16 V8StackTraceImpl::toString() const | 260 String16 V8StackTraceImpl::toString() const |
256 { | 261 { |
257 String16Builder stackTrace; | 262 String16Builder stackTrace; |
258 for (size_t i = 0; i < m_frames.size(); ++i) { | 263 for (size_t i = 0; i < m_frames.size(); ++i) { |
259 const Frame& frame = m_frames[i]; | 264 const Frame& frame = m_frames[i]; |
260 stackTrace.append("\n at " + (frame.functionName().length() ? frame.f
unctionName() : "(anonymous function)")); | 265 stackTrace.append("\n at " + (frame.functionName().length() ? frame.f
unctionName() : "(anonymous function)")); |
261 stackTrace.append(" ("); | 266 stackTrace.append(" ("); |
262 stackTrace.append(frame.sourceURL()); | 267 stackTrace.append(frame.sourceURL()); |
263 stackTrace.append(':'); | 268 stackTrace.append(':'); |
264 stackTrace.appendNumber(frame.lineNumber()); | 269 stackTrace.appendNumber(frame.lineNumber()); |
265 stackTrace.append(':'); | 270 stackTrace.append(':'); |
266 stackTrace.appendNumber(frame.columnNumber()); | 271 stackTrace.appendNumber(frame.columnNumber()); |
267 stackTrace.append(')'); | 272 stackTrace.append(')'); |
268 } | 273 } |
269 return stackTrace.toString(); | 274 return stackTrace.toString(); |
270 } | 275 } |
271 | 276 |
272 } // namespace blink | 277 } // namespace blink |
OLD | NEW |