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/V8ConsoleMessage.h" | 5 #include "platform/v8_inspector/V8ConsoleMessage.h" |
6 | 6 |
7 #include "platform/v8_inspector/InspectedContext.h" | 7 #include "platform/v8_inspector/InspectedContext.h" |
8 #include "platform/v8_inspector/V8ConsoleAgentImpl.h" | 8 #include "platform/v8_inspector/V8ConsoleAgentImpl.h" |
9 #include "platform/v8_inspector/V8DebuggerImpl.h" | 9 #include "platform/v8_inspector/V8InspectorImpl.h" |
10 #include "platform/v8_inspector/V8InspectorSessionImpl.h" | 10 #include "platform/v8_inspector/V8InspectorSessionImpl.h" |
11 #include "platform/v8_inspector/V8RuntimeAgentImpl.h" | 11 #include "platform/v8_inspector/V8RuntimeAgentImpl.h" |
12 #include "platform/v8_inspector/V8StackTraceImpl.h" | 12 #include "platform/v8_inspector/V8StackTraceImpl.h" |
13 #include "platform/v8_inspector/V8StringUtil.h" | 13 #include "platform/v8_inspector/V8StringUtil.h" |
14 #include "platform/v8_inspector/public/V8DebuggerClient.h" | 14 #include "platform/v8_inspector/public/V8InspectorClient.h" |
15 | 15 |
16 namespace blink { | 16 namespace blink { |
17 | 17 |
18 namespace { | 18 namespace { |
19 | 19 |
20 String16 consoleAPITypeValue(ConsoleAPIType type) | 20 String16 consoleAPITypeValue(ConsoleAPIType type) |
21 { | 21 { |
22 switch (type) { | 22 switch (type) { |
23 case ConsoleAPIType::kLog: return protocol::Runtime::ConsoleAPICalled::TypeE
num::Log; | 23 case ConsoleAPIType::kLog: return protocol::Runtime::ConsoleAPICalled::TypeE
num::Log; |
24 case ConsoleAPIType::kDebug: return protocol::Runtime::ConsoleAPICalled::Typ
eEnum::Debug; | 24 case ConsoleAPIType::kDebug: return protocol::Runtime::ConsoleAPICalled::Typ
eEnum::Debug; |
(...skipping 187 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
212 result->setLine(static_cast<int>(m_lineNumber)); | 212 result->setLine(static_cast<int>(m_lineNumber)); |
213 result->setColumn(static_cast<int>(m_columnNumber)); | 213 result->setColumn(static_cast<int>(m_columnNumber)); |
214 result->setUrl(m_url); | 214 result->setUrl(m_url); |
215 frontend->messageAdded(std::move(result)); | 215 frontend->messageAdded(std::move(result)); |
216 } | 216 } |
217 | 217 |
218 std::unique_ptr<protocol::Array<protocol::Runtime::RemoteObject>> V8ConsoleMessa
ge::wrapArguments(V8InspectorSessionImpl* session, bool generatePreview) const | 218 std::unique_ptr<protocol::Array<protocol::Runtime::RemoteObject>> V8ConsoleMessa
ge::wrapArguments(V8InspectorSessionImpl* session, bool generatePreview) const |
219 { | 219 { |
220 if (!m_arguments.size() || !m_contextId) | 220 if (!m_arguments.size() || !m_contextId) |
221 return nullptr; | 221 return nullptr; |
222 InspectedContext* inspectedContext = session->debugger()->getContext(session
->contextGroupId(), m_contextId); | 222 InspectedContext* inspectedContext = session->inspector()->getContext(sessio
n->contextGroupId(), m_contextId); |
223 if (!inspectedContext) | 223 if (!inspectedContext) |
224 return nullptr; | 224 return nullptr; |
225 | 225 |
226 v8::Isolate* isolate = inspectedContext->isolate(); | 226 v8::Isolate* isolate = inspectedContext->isolate(); |
227 v8::HandleScope handles(isolate); | 227 v8::HandleScope handles(isolate); |
228 v8::Local<v8::Context> context = inspectedContext->context(); | 228 v8::Local<v8::Context> context = inspectedContext->context(); |
229 | 229 |
230 std::unique_ptr<protocol::Array<protocol::Runtime::RemoteObject>> args = pro
tocol::Array<protocol::Runtime::RemoteObject>::create(); | 230 std::unique_ptr<protocol::Array<protocol::Runtime::RemoteObject>> args = pro
tocol::Array<protocol::Runtime::RemoteObject>::create(); |
231 if (m_type == ConsoleAPIType::kTable && generatePreview) { | 231 if (m_type == ConsoleAPIType::kTable && generatePreview) { |
232 v8::Local<v8::Value> table = m_arguments[0]->Get(isolate); | 232 v8::Local<v8::Value> table = m_arguments[0]->Get(isolate); |
(...skipping 56 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
289 return; | 289 return; |
290 } | 290 } |
291 NOTREACHED(); | 291 NOTREACHED(); |
292 } | 292 } |
293 | 293 |
294 std::unique_ptr<protocol::Runtime::RemoteObject> V8ConsoleMessage::wrapException
(V8InspectorSessionImpl* session, bool generatePreview) const | 294 std::unique_ptr<protocol::Runtime::RemoteObject> V8ConsoleMessage::wrapException
(V8InspectorSessionImpl* session, bool generatePreview) const |
295 { | 295 { |
296 if (!m_arguments.size() || !m_contextId) | 296 if (!m_arguments.size() || !m_contextId) |
297 return nullptr; | 297 return nullptr; |
298 DCHECK_EQ(1u, m_arguments.size()); | 298 DCHECK_EQ(1u, m_arguments.size()); |
299 InspectedContext* inspectedContext = session->debugger()->getContext(session
->contextGroupId(), m_contextId); | 299 InspectedContext* inspectedContext = session->inspector()->getContext(sessio
n->contextGroupId(), m_contextId); |
300 if (!inspectedContext) | 300 if (!inspectedContext) |
301 return nullptr; | 301 return nullptr; |
302 | 302 |
303 v8::Isolate* isolate = inspectedContext->isolate(); | 303 v8::Isolate* isolate = inspectedContext->isolate(); |
304 v8::HandleScope handles(isolate); | 304 v8::HandleScope handles(isolate); |
305 // TODO(dgozman): should we use different object group? | 305 // TODO(dgozman): should we use different object group? |
306 return session->wrapObject(inspectedContext->context(), m_arguments[0]->Get(
isolate), "console", generatePreview); | 306 return session->wrapObject(inspectedContext->context(), m_arguments[0]->Get(
isolate), "console", generatePreview); |
307 } | 307 } |
308 | 308 |
309 V8MessageOrigin V8ConsoleMessage::origin() const | 309 V8MessageOrigin V8ConsoleMessage::origin() const |
(...skipping 27 matching lines...) Expand all Loading... |
337 if (type == ConsoleAPIType::kDebug || type == ConsoleAPIType::kCount || type
== ConsoleAPIType::kTimeEnd) | 337 if (type == ConsoleAPIType::kDebug || type == ConsoleAPIType::kCount || type
== ConsoleAPIType::kTimeEnd) |
338 clientType = V8ConsoleAPIType::kDebug; | 338 clientType = V8ConsoleAPIType::kDebug; |
339 else if (type == ConsoleAPIType::kError || type == ConsoleAPIType::kAssert) | 339 else if (type == ConsoleAPIType::kError || type == ConsoleAPIType::kAssert) |
340 clientType = V8ConsoleAPIType::kError; | 340 clientType = V8ConsoleAPIType::kError; |
341 else if (type == ConsoleAPIType::kWarning) | 341 else if (type == ConsoleAPIType::kWarning) |
342 clientType = V8ConsoleAPIType::kWarning; | 342 clientType = V8ConsoleAPIType::kWarning; |
343 else if (type == ConsoleAPIType::kInfo) | 343 else if (type == ConsoleAPIType::kInfo) |
344 clientType = V8ConsoleAPIType::kInfo; | 344 clientType = V8ConsoleAPIType::kInfo; |
345 else if (type == ConsoleAPIType::kClear) | 345 else if (type == ConsoleAPIType::kClear) |
346 clientType = V8ConsoleAPIType::kClear; | 346 clientType = V8ConsoleAPIType::kClear; |
347 context->debugger()->client()->consoleAPIMessage(context->contextGroupId(),
clientType, message->m_message, message->m_url, message->m_lineNumber, message->
m_columnNumber, message->m_stackTrace.get()); | 347 context->inspector()->client()->consoleAPIMessage(context->contextGroupId(),
clientType, message->m_message, message->m_url, message->m_lineNumber, message-
>m_columnNumber, message->m_stackTrace.get()); |
348 | 348 |
349 return message; | 349 return message; |
350 } | 350 } |
351 | 351 |
352 // static | 352 // static |
353 std::unique_ptr<V8ConsoleMessage> V8ConsoleMessage::createForException(double ti
mestamp, const String16& detailedMessage, const String16& url, unsigned lineNumb
er, unsigned columnNumber, std::unique_ptr<V8StackTraceImpl> stackTrace, int scr
iptId, v8::Isolate* isolate, const String16& message, int contextId, v8::Local<v
8::Value> exception, unsigned exceptionId) | 353 std::unique_ptr<V8ConsoleMessage> V8ConsoleMessage::createForException(double ti
mestamp, const String16& detailedMessage, const String16& url, unsigned lineNumb
er, unsigned columnNumber, std::unique_ptr<V8StackTraceImpl> stackTrace, int scr
iptId, v8::Isolate* isolate, const String16& message, int contextId, v8::Local<v
8::Value> exception, unsigned exceptionId) |
354 { | 354 { |
355 std::unique_ptr<V8ConsoleMessage> consoleMessage = wrapUnique(new V8ConsoleM
essage(V8MessageOrigin::kException, timestamp, message)); | 355 std::unique_ptr<V8ConsoleMessage> consoleMessage = wrapUnique(new V8ConsoleM
essage(V8MessageOrigin::kException, timestamp, message)); |
356 consoleMessage->setLocation(url, lineNumber, columnNumber, std::move(stackTr
ace), scriptId); | 356 consoleMessage->setLocation(url, lineNumber, columnNumber, std::move(stackTr
ace), scriptId); |
357 consoleMessage->m_exceptionId = exceptionId; | 357 consoleMessage->m_exceptionId = exceptionId; |
(...skipping 19 matching lines...) Expand all Loading... |
377 return; | 377 return; |
378 m_contextId = 0; | 378 m_contextId = 0; |
379 if (m_message.isEmpty()) | 379 if (m_message.isEmpty()) |
380 m_message = "<message collected>"; | 380 m_message = "<message collected>"; |
381 Arguments empty; | 381 Arguments empty; |
382 m_arguments.swap(empty); | 382 m_arguments.swap(empty); |
383 } | 383 } |
384 | 384 |
385 // ------------------------ V8ConsoleMessageStorage ---------------------------- | 385 // ------------------------ V8ConsoleMessageStorage ---------------------------- |
386 | 386 |
387 V8ConsoleMessageStorage::V8ConsoleMessageStorage(V8DebuggerImpl* debugger, int c
ontextGroupId) | 387 V8ConsoleMessageStorage::V8ConsoleMessageStorage(V8InspectorImpl* inspector, int
contextGroupId) |
388 : m_debugger(debugger) | 388 : m_inspector(inspector) |
389 , m_contextGroupId(contextGroupId) | 389 , m_contextGroupId(contextGroupId) |
390 , m_expiredCount(0) | 390 , m_expiredCount(0) |
391 { | 391 { |
392 } | 392 } |
393 | 393 |
394 V8ConsoleMessageStorage::~V8ConsoleMessageStorage() | 394 V8ConsoleMessageStorage::~V8ConsoleMessageStorage() |
395 { | 395 { |
396 clear(); | 396 clear(); |
397 } | 397 } |
398 | 398 |
399 void V8ConsoleMessageStorage::addMessage(std::unique_ptr<V8ConsoleMessage> messa
ge) | 399 void V8ConsoleMessageStorage::addMessage(std::unique_ptr<V8ConsoleMessage> messa
ge) |
400 { | 400 { |
401 if (message->type() == ConsoleAPIType::kClear) | 401 if (message->type() == ConsoleAPIType::kClear) |
402 clear(); | 402 clear(); |
403 | 403 |
404 V8InspectorSessionImpl* session = m_debugger->sessionForContextGroup(m_conte
xtGroupId); | 404 V8InspectorSessionImpl* session = m_inspector->sessionForContextGroup(m_cont
extGroupId); |
405 if (session) { | 405 if (session) { |
406 if (message->origin() == V8MessageOrigin::kConsole) | 406 if (message->origin() == V8MessageOrigin::kConsole) |
407 session->consoleAgent()->messageAdded(message.get()); | 407 session->consoleAgent()->messageAdded(message.get()); |
408 session->runtimeAgent()->messageAdded(message.get()); | 408 session->runtimeAgent()->messageAdded(message.get()); |
409 } | 409 } |
410 | 410 |
411 DCHECK(m_messages.size() <= maxConsoleMessageCount); | 411 DCHECK(m_messages.size() <= maxConsoleMessageCount); |
412 if (m_messages.size() == maxConsoleMessageCount) { | 412 if (m_messages.size() == maxConsoleMessageCount) { |
413 ++m_expiredCount; | 413 ++m_expiredCount; |
414 m_messages.pop_front(); | 414 m_messages.pop_front(); |
415 } | 415 } |
416 m_messages.push_back(std::move(message)); | 416 m_messages.push_back(std::move(message)); |
417 } | 417 } |
418 | 418 |
419 void V8ConsoleMessageStorage::clear() | 419 void V8ConsoleMessageStorage::clear() |
420 { | 420 { |
421 m_messages.clear(); | 421 m_messages.clear(); |
422 m_expiredCount = 0; | 422 m_expiredCount = 0; |
423 if (V8InspectorSessionImpl* session = m_debugger->sessionForContextGroup(m_c
ontextGroupId)) | 423 if (V8InspectorSessionImpl* session = m_inspector->sessionForContextGroup(m_
contextGroupId)) |
424 session->releaseObjectGroup("console"); | 424 session->releaseObjectGroup("console"); |
425 } | 425 } |
426 | 426 |
427 void V8ConsoleMessageStorage::contextDestroyed(int contextId) | 427 void V8ConsoleMessageStorage::contextDestroyed(int contextId) |
428 { | 428 { |
429 for (size_t i = 0; i < m_messages.size(); ++i) | 429 for (size_t i = 0; i < m_messages.size(); ++i) |
430 m_messages[i]->contextDestroyed(contextId); | 430 m_messages[i]->contextDestroyed(contextId); |
431 } | 431 } |
432 | 432 |
433 } // namespace blink | 433 } // namespace blink |
OLD | NEW |