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 |