| 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/V8DebuggerImpl.h" |
| 10 #include "platform/v8_inspector/V8InspectorSessionImpl.h" | 10 #include "platform/v8_inspector/V8InspectorSessionImpl.h" |
| (...skipping 18 matching lines...) Expand all Loading... |
| 29 case RenderingMessageSource: return protocol::Console::ConsoleMessage::Sourc
eEnum::Rendering; | 29 case RenderingMessageSource: return protocol::Console::ConsoleMessage::Sourc
eEnum::Rendering; |
| 30 case SecurityMessageSource: return protocol::Console::ConsoleMessage::Source
Enum::Security; | 30 case SecurityMessageSource: return protocol::Console::ConsoleMessage::Source
Enum::Security; |
| 31 case OtherMessageSource: return protocol::Console::ConsoleMessage::SourceEnu
m::Other; | 31 case OtherMessageSource: return protocol::Console::ConsoleMessage::SourceEnu
m::Other; |
| 32 case DeprecationMessageSource: return protocol::Console::ConsoleMessage::Sou
rceEnum::Deprecation; | 32 case DeprecationMessageSource: return protocol::Console::ConsoleMessage::Sou
rceEnum::Deprecation; |
| 33 case WorkerMessageSource: return protocol::Console::ConsoleMessage::SourceEn
um::Worker; | 33 case WorkerMessageSource: return protocol::Console::ConsoleMessage::SourceEn
um::Worker; |
| 34 } | 34 } |
| 35 return protocol::Console::ConsoleMessage::SourceEnum::Other; | 35 return protocol::Console::ConsoleMessage::SourceEnum::Other; |
| 36 } | 36 } |
| 37 | 37 |
| 38 | 38 |
| 39 String16 messageTypeValue(MessageType type) | 39 String16 consoleAPITypeValue(ConsoleAPIType type) |
| 40 { | 40 { |
| 41 switch (type) { | 41 switch (type) { |
| 42 case LogMessageType: return protocol::Console::ConsoleMessage::TypeEnum::Log
; | 42 case ConsoleAPIType::kLog: return protocol::Console::ConsoleMessage::TypeEnu
m::Log; |
| 43 case ClearMessageType: return protocol::Console::ConsoleMessage::TypeEnum::C
lear; | 43 case ConsoleAPIType::kClear: return protocol::Console::ConsoleMessage::TypeE
num::Clear; |
| 44 case DirMessageType: return protocol::Console::ConsoleMessage::TypeEnum::Dir
; | 44 case ConsoleAPIType::kDir: return protocol::Console::ConsoleMessage::TypeEnu
m::Dir; |
| 45 case DirXMLMessageType: return protocol::Console::ConsoleMessage::TypeEnum::
Dirxml; | 45 case ConsoleAPIType::kDirXML: return protocol::Console::ConsoleMessage::Type
Enum::Dirxml; |
| 46 case TableMessageType: return protocol::Console::ConsoleMessage::TypeEnum::T
able; | 46 case ConsoleAPIType::kTable: return protocol::Console::ConsoleMessage::TypeE
num::Table; |
| 47 case TraceMessageType: return protocol::Console::ConsoleMessage::TypeEnum::T
race; | 47 case ConsoleAPIType::kTrace: return protocol::Console::ConsoleMessage::TypeE
num::Trace; |
| 48 case StartGroupMessageType: return protocol::Console::ConsoleMessage::TypeEn
um::StartGroup; | 48 case ConsoleAPIType::kStartGroup: return protocol::Console::ConsoleMessage::
TypeEnum::StartGroup; |
| 49 case StartGroupCollapsedMessageType: return protocol::Console::ConsoleMessag
e::TypeEnum::StartGroupCollapsed; | 49 case ConsoleAPIType::kStartGroupCollapsed: return protocol::Console::Console
Message::TypeEnum::StartGroupCollapsed; |
| 50 case EndGroupMessageType: return protocol::Console::ConsoleMessage::TypeEnum
::EndGroup; | 50 case ConsoleAPIType::kEndGroup: return protocol::Console::ConsoleMessage::Ty
peEnum::EndGroup; |
| 51 case AssertMessageType: return protocol::Console::ConsoleMessage::TypeEnum::
Assert; | 51 case ConsoleAPIType::kAssert: return protocol::Console::ConsoleMessage::Type
Enum::Assert; |
| 52 case TimeEndMessageType: return protocol::Console::ConsoleMessage::TypeEnum:
:Log; | 52 case ConsoleAPIType::kTimeEnd: return protocol::Console::ConsoleMessage::Typ
eEnum::Log; |
| 53 case CountMessageType: return protocol::Console::ConsoleMessage::TypeEnum::L
og; | 53 case ConsoleAPIType::kCount: return protocol::Console::ConsoleMessage::TypeE
num::Log; |
| 54 } | 54 } |
| 55 return protocol::Console::ConsoleMessage::TypeEnum::Log; | 55 return protocol::Console::ConsoleMessage::TypeEnum::Log; |
| 56 } | 56 } |
| 57 | 57 |
| 58 String16 messageLevelValue(MessageLevel level) | 58 String16 messageLevelValue(MessageLevel level) |
| 59 { | 59 { |
| 60 switch (level) { | 60 switch (level) { |
| 61 case DebugMessageLevel: return protocol::Console::ConsoleMessage::LevelEnum:
:Debug; | 61 case DebugMessageLevel: return protocol::Console::ConsoleMessage::LevelEnum:
:Debug; |
| 62 case LogMessageLevel: return protocol::Console::ConsoleMessage::LevelEnum::L
og; | 62 case LogMessageLevel: return protocol::Console::ConsoleMessage::LevelEnum::L
og; |
| 63 case WarningMessageLevel: return protocol::Console::ConsoleMessage::LevelEnu
m::Warning; | 63 case WarningMessageLevel: return protocol::Console::ConsoleMessage::LevelEnu
m::Warning; |
| (...skipping 139 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 203 V8ConsoleMessage::V8ConsoleMessage(V8MessageOrigin origin, double timestamp, Mes
sageSource source, MessageLevel level, const String16& message) | 203 V8ConsoleMessage::V8ConsoleMessage(V8MessageOrigin origin, double timestamp, Mes
sageSource source, MessageLevel level, const String16& message) |
| 204 : m_origin(origin) | 204 : m_origin(origin) |
| 205 , m_timestamp(timestamp) | 205 , m_timestamp(timestamp) |
| 206 , m_source(source) | 206 , m_source(source) |
| 207 , m_level(level) | 207 , m_level(level) |
| 208 , m_message(message) | 208 , m_message(message) |
| 209 , m_lineNumber(0) | 209 , m_lineNumber(0) |
| 210 , m_columnNumber(0) | 210 , m_columnNumber(0) |
| 211 , m_scriptId(0) | 211 , m_scriptId(0) |
| 212 , m_contextId(0) | 212 , m_contextId(0) |
| 213 , m_type(LogMessageType) | 213 , m_type(ConsoleAPIType::kLog) |
| 214 , m_exceptionId(0) | 214 , m_exceptionId(0) |
| 215 , m_revokedExceptionId(0) | 215 , m_revokedExceptionId(0) |
| 216 { | 216 { |
| 217 } | 217 } |
| 218 | 218 |
| 219 V8ConsoleMessage::~V8ConsoleMessage() | 219 V8ConsoleMessage::~V8ConsoleMessage() |
| 220 { | 220 { |
| 221 } | 221 } |
| 222 | 222 |
| 223 void V8ConsoleMessage::setLocation(const String16& url, unsigned lineNumber, uns
igned columnNumber, std::unique_ptr<V8StackTrace> stackTrace, int scriptId) | 223 void V8ConsoleMessage::setLocation(const String16& url, unsigned lineNumber, uns
igned columnNumber, std::unique_ptr<V8StackTrace> stackTrace, int scriptId) |
| 224 { | 224 { |
| 225 m_url = url; | 225 m_url = url; |
| 226 m_lineNumber = lineNumber; | 226 m_lineNumber = lineNumber; |
| 227 m_columnNumber = columnNumber; | 227 m_columnNumber = columnNumber; |
| 228 m_stackTrace = std::move(stackTrace); | 228 m_stackTrace = std::move(stackTrace); |
| 229 m_scriptId = scriptId; | 229 m_scriptId = scriptId; |
| 230 } | 230 } |
| 231 | 231 |
| 232 void V8ConsoleMessage::reportToFrontend(protocol::Console::Frontend* frontend, V
8InspectorSessionImpl* session, bool generatePreview) const | 232 void V8ConsoleMessage::reportToFrontend(protocol::Console::Frontend* frontend, V
8InspectorSessionImpl* session, bool generatePreview) const |
| 233 { | 233 { |
| 234 DCHECK_EQ(V8MessageOrigin::kConsole, m_origin); | 234 DCHECK_EQ(V8MessageOrigin::kConsole, m_origin); |
| 235 std::unique_ptr<protocol::Console::ConsoleMessage> result = | 235 std::unique_ptr<protocol::Console::ConsoleMessage> result = |
| 236 protocol::Console::ConsoleMessage::create() | 236 protocol::Console::ConsoleMessage::create() |
| 237 .setSource(messageSourceValue(m_source)) | 237 .setSource(messageSourceValue(m_source)) |
| 238 .setLevel(messageLevelValue(m_level)) | 238 .setLevel(messageLevelValue(m_level)) |
| 239 .setText(m_message) | 239 .setText(m_message) |
| 240 .setTimestamp(m_timestamp / 1000) // TODO(dgozman): migrate this to mill
iseconds. | 240 .setTimestamp(m_timestamp / 1000) // TODO(dgozman): migrate this to mill
iseconds. |
| 241 .build(); | 241 .build(); |
| 242 result->setType(messageTypeValue(m_type)); | 242 result->setType(consoleAPITypeValue(m_type)); |
| 243 result->setLine(static_cast<int>(m_lineNumber)); | 243 result->setLine(static_cast<int>(m_lineNumber)); |
| 244 result->setColumn(static_cast<int>(m_columnNumber)); | 244 result->setColumn(static_cast<int>(m_columnNumber)); |
| 245 if (m_scriptId) | 245 if (m_scriptId) |
| 246 result->setScriptId(String16::number(m_scriptId)); | 246 result->setScriptId(String16::number(m_scriptId)); |
| 247 result->setUrl(m_url); | 247 result->setUrl(m_url); |
| 248 if (m_source == NetworkMessageSource && !m_requestIdentifier.isEmpty()) | 248 if (m_source == NetworkMessageSource && !m_requestIdentifier.isEmpty()) |
| 249 result->setNetworkRequestId(m_requestIdentifier); | 249 result->setNetworkRequestId(m_requestIdentifier); |
| 250 if (m_contextId) | 250 if (m_contextId) |
| 251 result->setExecutionContextId(m_contextId); | 251 result->setExecutionContextId(m_contextId); |
| 252 std::unique_ptr<protocol::Array<protocol::Runtime::RemoteObject>> args = wra
pArguments(session, generatePreview); | 252 std::unique_ptr<protocol::Array<protocol::Runtime::RemoteObject>> args = wra
pArguments(session, generatePreview); |
| (...skipping 12 matching lines...) Expand all Loading... |
| 265 return nullptr; | 265 return nullptr; |
| 266 InspectedContext* inspectedContext = session->debugger()->getContext(session
->contextGroupId(), m_contextId); | 266 InspectedContext* inspectedContext = session->debugger()->getContext(session
->contextGroupId(), m_contextId); |
| 267 if (!inspectedContext) | 267 if (!inspectedContext) |
| 268 return nullptr; | 268 return nullptr; |
| 269 | 269 |
| 270 v8::Isolate* isolate = inspectedContext->isolate(); | 270 v8::Isolate* isolate = inspectedContext->isolate(); |
| 271 v8::HandleScope handles(isolate); | 271 v8::HandleScope handles(isolate); |
| 272 v8::Local<v8::Context> context = inspectedContext->context(); | 272 v8::Local<v8::Context> context = inspectedContext->context(); |
| 273 | 273 |
| 274 std::unique_ptr<protocol::Array<protocol::Runtime::RemoteObject>> args = pro
tocol::Array<protocol::Runtime::RemoteObject>::create(); | 274 std::unique_ptr<protocol::Array<protocol::Runtime::RemoteObject>> args = pro
tocol::Array<protocol::Runtime::RemoteObject>::create(); |
| 275 if (m_type == TableMessageType && generatePreview) { | 275 if (m_type == ConsoleAPIType::kTable && generatePreview) { |
| 276 v8::Local<v8::Value> table = m_arguments[0]->Get(isolate); | 276 v8::Local<v8::Value> table = m_arguments[0]->Get(isolate); |
| 277 v8::Local<v8::Value> columns = m_arguments.size() > 1 ? m_arguments[1]->
Get(isolate) : v8::Local<v8::Value>(); | 277 v8::Local<v8::Value> columns = m_arguments.size() > 1 ? m_arguments[1]->
Get(isolate) : v8::Local<v8::Value>(); |
| 278 std::unique_ptr<protocol::Runtime::RemoteObject> wrapped = session->wrap
Table(context, table, columns); | 278 std::unique_ptr<protocol::Runtime::RemoteObject> wrapped = session->wrap
Table(context, table, columns); |
| 279 if (wrapped) | 279 if (wrapped) |
| 280 args->addItem(std::move(wrapped)); | 280 args->addItem(std::move(wrapped)); |
| 281 else | 281 else |
| 282 args = nullptr; | 282 args = nullptr; |
| 283 } else { | 283 } else { |
| 284 for (size_t i = 0; i < m_arguments.size(); ++i) { | 284 for (size_t i = 0; i < m_arguments.size(); ++i) { |
| 285 std::unique_ptr<protocol::Runtime::RemoteObject> wrapped = session->
wrapObject(context, m_arguments[i]->Get(isolate), "console", generatePreview); | 285 std::unique_ptr<protocol::Runtime::RemoteObject> wrapped = session->
wrapObject(context, m_arguments[i]->Get(isolate), "console", generatePreview); |
| (...skipping 55 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 341 V8MessageOrigin V8ConsoleMessage::origin() const | 341 V8MessageOrigin V8ConsoleMessage::origin() const |
| 342 { | 342 { |
| 343 return m_origin; | 343 return m_origin; |
| 344 } | 344 } |
| 345 | 345 |
| 346 unsigned V8ConsoleMessage::argumentCount() const | 346 unsigned V8ConsoleMessage::argumentCount() const |
| 347 { | 347 { |
| 348 return m_arguments.size(); | 348 return m_arguments.size(); |
| 349 } | 349 } |
| 350 | 350 |
| 351 MessageType V8ConsoleMessage::type() const | 351 ConsoleAPIType V8ConsoleMessage::type() const |
| 352 { | 352 { |
| 353 return m_type; | 353 return m_type; |
| 354 } | 354 } |
| 355 | 355 |
| 356 // static | 356 // static |
| 357 std::unique_ptr<V8ConsoleMessage> V8ConsoleMessage::createForConsoleAPI(double t
imestamp, MessageType type, MessageLevel level, const String16& messageText, std
::vector<v8::Local<v8::Value>>* arguments, std::unique_ptr<V8StackTrace> stackTr
ace, InspectedContext* context) | 357 std::unique_ptr<V8ConsoleMessage> V8ConsoleMessage::createForConsoleAPI(double t
imestamp, ConsoleAPIType type, MessageLevel level, const String16& messageText,
std::vector<v8::Local<v8::Value>>* arguments, std::unique_ptr<V8StackTrace> stac
kTrace, InspectedContext* context) |
| 358 { | 358 { |
| 359 String16 url; | 359 String16 url; |
| 360 unsigned lineNumber = 0; | 360 unsigned lineNumber = 0; |
| 361 unsigned columnNumber = 0; | 361 unsigned columnNumber = 0; |
| 362 if (stackTrace && !stackTrace->isEmpty()) { | 362 if (stackTrace && !stackTrace->isEmpty()) { |
| 363 url = stackTrace->topSourceURL(); | 363 url = stackTrace->topSourceURL(); |
| 364 lineNumber = stackTrace->topLineNumber(); | 364 lineNumber = stackTrace->topLineNumber(); |
| 365 columnNumber = stackTrace->topColumnNumber(); | 365 columnNumber = stackTrace->topColumnNumber(); |
| 366 } | 366 } |
| 367 | 367 |
| (...skipping 70 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 438 { | 438 { |
| 439 } | 439 } |
| 440 | 440 |
| 441 V8ConsoleMessageStorage::~V8ConsoleMessageStorage() | 441 V8ConsoleMessageStorage::~V8ConsoleMessageStorage() |
| 442 { | 442 { |
| 443 clear(); | 443 clear(); |
| 444 } | 444 } |
| 445 | 445 |
| 446 void V8ConsoleMessageStorage::addMessage(std::unique_ptr<V8ConsoleMessage> messa
ge) | 446 void V8ConsoleMessageStorage::addMessage(std::unique_ptr<V8ConsoleMessage> messa
ge) |
| 447 { | 447 { |
| 448 if (message->type() == ClearMessageType) | 448 if (message->type() == ConsoleAPIType::kClear) |
| 449 clear(); | 449 clear(); |
| 450 | 450 |
| 451 V8InspectorSessionImpl* session = m_debugger->sessionForContextGroup(m_conte
xtGroupId); | 451 V8InspectorSessionImpl* session = m_debugger->sessionForContextGroup(m_conte
xtGroupId); |
| 452 if (session) { | 452 if (session) { |
| 453 if (message->origin() == V8MessageOrigin::kConsole) | 453 if (message->origin() == V8MessageOrigin::kConsole) |
| 454 session->consoleAgent()->messageAdded(message.get()); | 454 session->consoleAgent()->messageAdded(message.get()); |
| 455 else | 455 else |
| 456 session->runtimeAgent()->exceptionMessageAdded(message.get()); | 456 session->runtimeAgent()->exceptionMessageAdded(message.get()); |
| 457 } | 457 } |
| 458 | 458 |
| (...skipping 17 matching lines...) Expand all Loading... |
| 476 } | 476 } |
| 477 } | 477 } |
| 478 | 478 |
| 479 void V8ConsoleMessageStorage::contextDestroyed(int contextId) | 479 void V8ConsoleMessageStorage::contextDestroyed(int contextId) |
| 480 { | 480 { |
| 481 for (size_t i = 0; i < m_messages.size(); ++i) | 481 for (size_t i = 0; i < m_messages.size(); ++i) |
| 482 m_messages[i]->contextDestroyed(contextId); | 482 m_messages[i]->contextDestroyed(contextId); |
| 483 } | 483 } |
| 484 | 484 |
| 485 } // namespace blink | 485 } // namespace blink |
| OLD | NEW |