Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(316)

Side by Side Diff: third_party/WebKit/Source/platform/v8_inspector/V8ConsoleMessage.cpp

Issue 2141673002: [DevTools] Always send a copy of worker message through the page. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: nit Created 4 years, 5 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
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 12 matching lines...) Expand all
23 case XMLMessageSource: return protocol::Console::ConsoleMessage::SourceEnum: :Xml; 23 case XMLMessageSource: return protocol::Console::ConsoleMessage::SourceEnum: :Xml;
24 case JSMessageSource: return protocol::Console::ConsoleMessage::SourceEnum:: Javascript; 24 case JSMessageSource: return protocol::Console::ConsoleMessage::SourceEnum:: Javascript;
25 case NetworkMessageSource: return protocol::Console::ConsoleMessage::SourceE num::Network; 25 case NetworkMessageSource: return protocol::Console::ConsoleMessage::SourceE num::Network;
26 case ConsoleAPIMessageSource: return protocol::Console::ConsoleMessage::Sour ceEnum::ConsoleApi; 26 case ConsoleAPIMessageSource: return protocol::Console::ConsoleMessage::Sour ceEnum::ConsoleApi;
27 case StorageMessageSource: return protocol::Console::ConsoleMessage::SourceE num::Storage; 27 case StorageMessageSource: return protocol::Console::ConsoleMessage::SourceE num::Storage;
28 case AppCacheMessageSource: return protocol::Console::ConsoleMessage::Source Enum::Appcache; 28 case AppCacheMessageSource: return protocol::Console::ConsoleMessage::Source Enum::Appcache;
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 } 34 }
34 return protocol::Console::ConsoleMessage::SourceEnum::Other; 35 return protocol::Console::ConsoleMessage::SourceEnum::Other;
35 } 36 }
36 37
37 38
38 String messageTypeValue(MessageType type) 39 String messageTypeValue(MessageType type)
39 { 40 {
40 switch (type) { 41 switch (type) {
41 case LogMessageType: return protocol::Console::ConsoleMessage::TypeEnum::Log ; 42 case LogMessageType: return protocol::Console::ConsoleMessage::TypeEnum::Log ;
42 case ClearMessageType: return protocol::Console::ConsoleMessage::TypeEnum::C lear; 43 case ClearMessageType: return protocol::Console::ConsoleMessage::TypeEnum::C lear;
(...skipping 147 matching lines...) Expand 10 before | Expand all | Expand 10 after
190 191
191 uint32_t m_arrayLimit; 192 uint32_t m_arrayLimit;
192 v8::Isolate* m_isolate; 193 v8::Isolate* m_isolate;
193 String16Builder m_builder; 194 String16Builder m_builder;
194 Vector<v8::Local<v8::Array>> m_visitedArrays; 195 Vector<v8::Local<v8::Array>> m_visitedArrays;
195 v8::TryCatch m_tryCatch; 196 v8::TryCatch m_tryCatch;
196 }; 197 };
197 198
198 } // namespace 199 } // namespace
199 200
200 V8ConsoleMessage::V8ConsoleMessage( 201 V8ConsoleMessage::V8ConsoleMessage(V8MessageOrigin origin, double timestamp, Mes sageSource source, MessageLevel level, const String16& message)
201 double timestamp, 202 : m_origin(origin)
202 MessageSource source,
203 MessageLevel level,
204 const String16& message,
205 const String16& url,
206 unsigned lineNumber,
207 unsigned columnNumber,
208 std::unique_ptr<V8StackTrace> stackTrace,
209 int scriptId,
210 const String16& requestIdentifier)
211 : m_origin(V8MessageOrigin::kConsole)
212 , m_timestamp(timestamp) 203 , m_timestamp(timestamp)
213 , m_source(source) 204 , m_source(source)
214 , m_level(level) 205 , m_level(level)
215 , m_message(message) 206 , m_message(message)
216 , m_url(url) 207 , m_lineNumber(0)
217 , m_lineNumber(lineNumber) 208 , m_columnNumber(0)
218 , m_columnNumber(columnNumber) 209 , m_scriptId(0)
219 , m_stackTrace(std::move(stackTrace))
220 , m_scriptId(scriptId)
221 , m_requestIdentifier(requestIdentifier)
222 , m_contextId(0) 210 , m_contextId(0)
223 , m_type(LogMessageType) 211 , m_type(LogMessageType)
224 , m_exceptionId(0) 212 , m_exceptionId(0)
225 , m_revokedExceptionId(0) 213 , m_revokedExceptionId(0)
226 { 214 {
227 } 215 }
228 216
229 V8ConsoleMessage::~V8ConsoleMessage() 217 V8ConsoleMessage::~V8ConsoleMessage()
230 { 218 {
231 } 219 }
232 220
221 void V8ConsoleMessage::setLocation(const String16& url, unsigned lineNumber, uns igned columnNumber, std::unique_ptr<V8StackTrace> stackTrace, int scriptId)
222 {
223 m_url = url;
224 m_lineNumber = lineNumber;
225 m_columnNumber = columnNumber;
226 m_stackTrace = std::move(stackTrace);
227 m_scriptId = scriptId;
228 }
229
233 void V8ConsoleMessage::reportToFrontend(protocol::Console::Frontend* frontend, V 8InspectorSessionImpl* session, bool generatePreview) const 230 void V8ConsoleMessage::reportToFrontend(protocol::Console::Frontend* frontend, V 8InspectorSessionImpl* session, bool generatePreview) const
234 { 231 {
235 DCHECK_EQ(V8MessageOrigin::kConsole, m_origin); 232 DCHECK_EQ(V8MessageOrigin::kConsole, m_origin);
236 std::unique_ptr<protocol::Console::ConsoleMessage> result = 233 std::unique_ptr<protocol::Console::ConsoleMessage> result =
237 protocol::Console::ConsoleMessage::create() 234 protocol::Console::ConsoleMessage::create()
238 .setSource(messageSourceValue(m_source)) 235 .setSource(messageSourceValue(m_source))
239 .setLevel(messageLevelValue(m_level)) 236 .setLevel(messageLevelValue(m_level))
240 .setText(m_message) 237 .setText(m_message)
241 .setTimestamp(m_timestamp / 1000) // TODO(dgozman): migrate this to mill iseconds. 238 .setTimestamp(m_timestamp / 1000) // TODO(dgozman): migrate this to mill iseconds.
242 .build(); 239 .build();
243 result->setType(messageTypeValue(m_type)); 240 result->setType(messageTypeValue(m_type));
244 result->setLine(static_cast<int>(m_lineNumber)); 241 result->setLine(static_cast<int>(m_lineNumber));
245 result->setColumn(static_cast<int>(m_columnNumber)); 242 result->setColumn(static_cast<int>(m_columnNumber));
246 if (m_scriptId) 243 if (m_scriptId)
247 result->setScriptId(String::number(m_scriptId)); 244 result->setScriptId(String::number(m_scriptId));
248 result->setUrl(m_url); 245 result->setUrl(m_url);
249 if (m_source == NetworkMessageSource && !m_requestIdentifier.isEmpty()) 246 if (m_source == NetworkMessageSource && !m_requestIdentifier.isEmpty())
250 result->setNetworkRequestId(m_requestIdentifier); 247 result->setNetworkRequestId(m_requestIdentifier);
251 if (m_contextId) 248 if (m_contextId)
252 result->setExecutionContextId(m_contextId); 249 result->setExecutionContextId(m_contextId);
253 std::unique_ptr<protocol::Array<protocol::Runtime::RemoteObject>> args = wra pArguments(session, generatePreview); 250 std::unique_ptr<protocol::Array<protocol::Runtime::RemoteObject>> args = wra pArguments(session, generatePreview);
254 if (args) 251 if (args)
255 result->setParameters(std::move(args)); 252 result->setParameters(std::move(args));
256 if (m_stackTrace) 253 if (m_stackTrace)
257 result->setStack(m_stackTrace->buildInspectorObject()); 254 result->setStack(m_stackTrace->buildInspectorObject());
255 if (m_source == WorkerMessageSource && !m_workerId.isEmpty())
256 result->setWorkerId(m_workerId);
258 frontend->messageAdded(std::move(result)); 257 frontend->messageAdded(std::move(result));
259 } 258 }
260 259
261 std::unique_ptr<protocol::Array<protocol::Runtime::RemoteObject>> V8ConsoleMessa ge::wrapArguments(V8InspectorSessionImpl* session, bool generatePreview) const 260 std::unique_ptr<protocol::Array<protocol::Runtime::RemoteObject>> V8ConsoleMessa ge::wrapArguments(V8InspectorSessionImpl* session, bool generatePreview) const
262 { 261 {
263 if (!m_arguments.size() || !m_contextId) 262 if (!m_arguments.size() || !m_contextId)
264 return nullptr; 263 return nullptr;
265 InspectedContext* inspectedContext = session->debugger()->getContext(session ->contextGroupId(), m_contextId); 264 InspectedContext* inspectedContext = session->debugger()->getContext(session ->contextGroupId(), m_contextId);
266 if (!inspectedContext) 265 if (!inspectedContext)
267 return nullptr; 266 return nullptr;
(...skipping 99 matching lines...) Expand 10 before | Expand all | Expand 10 after
367 String16 actualMessage = messageText; 366 String16 actualMessage = messageText;
368 367
369 Arguments messageArguments; 368 Arguments messageArguments;
370 if (arguments && arguments->size()) { 369 if (arguments && arguments->size()) {
371 for (size_t i = 0; i < arguments->size(); ++i) 370 for (size_t i = 0; i < arguments->size(); ++i)
372 messageArguments.push_back(wrapUnique(new v8::Global<v8::Value>(cont ext->isolate(), arguments->at(i)))); 371 messageArguments.push_back(wrapUnique(new v8::Global<v8::Value>(cont ext->isolate(), arguments->at(i))));
373 if (actualMessage.isEmpty()) 372 if (actualMessage.isEmpty())
374 actualMessage = V8ValueStringBuilder::toString(messageArguments.at(0 )->Get(context->isolate()), context->isolate()); 373 actualMessage = V8ValueStringBuilder::toString(messageArguments.at(0 )->Get(context->isolate()), context->isolate());
375 } 374 }
376 375
377 std::unique_ptr<V8ConsoleMessage> message = wrapUnique(new V8ConsoleMessage( timestamp, ConsoleAPIMessageSource, level, actualMessage, url, lineNumber, colum nNumber, std::move(stackTrace), 0 /* scriptId */, String16() /* requestIdentifie r */)); 376 std::unique_ptr<V8ConsoleMessage> message = wrapUnique(new V8ConsoleMessage( V8MessageOrigin::kConsole, timestamp, ConsoleAPIMessageSource, level, actualMess age));
377 message->setLocation(url, lineNumber, columnNumber, std::move(stackTrace), 0 );
378 message->m_type = type; 378 message->m_type = type;
379 if (messageArguments.size()) { 379 if (messageArguments.size()) {
380 message->m_contextId = context->contextId(); 380 message->m_contextId = context->contextId();
381 message->m_arguments.swap(messageArguments); 381 message->m_arguments.swap(messageArguments);
382 } 382 }
383 383
384 context->debugger()->client()->messageAddedToConsole(context->contextGroupId (), message->m_source, message->m_level, message->m_message, message->m_url, mes sage->m_lineNumber, message->m_columnNumber, message->m_stackTrace.get()); 384 context->debugger()->client()->messageAddedToConsole(context->contextGroupId (), message->m_source, message->m_level, message->m_message, message->m_url, mes sage->m_lineNumber, message->m_columnNumber, message->m_stackTrace.get());
385 return message; 385 return message;
386 } 386 }
387 387
388 // static 388 // static
389 std::unique_ptr<V8ConsoleMessage> V8ConsoleMessage::createForException(double ti mestamp, const String16& messageText, const String16& url, unsigned lineNumber, unsigned columnNumber, std::unique_ptr<V8StackTrace> stackTrace, int scriptId, v 8::Isolate* isolate, int contextId, v8::Local<v8::Value> exception, unsigned exc eptionId) 389 std::unique_ptr<V8ConsoleMessage> V8ConsoleMessage::createForException(double ti mestamp, const String16& messageText, const String16& url, unsigned lineNumber, unsigned columnNumber, std::unique_ptr<V8StackTrace> stackTrace, int scriptId, v 8::Isolate* isolate, int contextId, v8::Local<v8::Value> exception, unsigned exc eptionId)
390 { 390 {
391 std::unique_ptr<V8ConsoleMessage> message = wrapUnique(new V8ConsoleMessage( timestamp, JSMessageSource, ErrorMessageLevel, messageText, url, lineNumber, col umnNumber, std::move(stackTrace), scriptId, String16() /* requestIdentifier */)) ; 391 std::unique_ptr<V8ConsoleMessage> message = wrapUnique(new V8ConsoleMessage( V8MessageOrigin::kException, timestamp, JSMessageSource, ErrorMessageLevel, mess ageText));
392 message->setLocation(url, lineNumber, columnNumber, std::move(stackTrace), s criptId);
392 message->m_exceptionId = exceptionId; 393 message->m_exceptionId = exceptionId;
393 message->m_origin = V8MessageOrigin::kException;
394 if (contextId && !exception.IsEmpty()) { 394 if (contextId && !exception.IsEmpty()) {
395 message->m_contextId = contextId; 395 message->m_contextId = contextId;
396 message->m_arguments.push_back(wrapUnique(new v8::Global<v8::Value>(isol ate, exception))); 396 message->m_arguments.push_back(wrapUnique(new v8::Global<v8::Value>(isol ate, exception)));
397 } 397 }
398 return message; 398 return message;
399 } 399 }
400 400
401 // static 401 // static
402 std::unique_ptr<V8ConsoleMessage> V8ConsoleMessage::createForRevokedException(do uble timestamp, const String16& messageText, unsigned revokedExceptionId) 402 std::unique_ptr<V8ConsoleMessage> V8ConsoleMessage::createForRevokedException(do uble timestamp, const String16& messageText, unsigned revokedExceptionId)
403 { 403 {
404 std::unique_ptr<V8ConsoleMessage> message = wrapUnique(new V8ConsoleMessage( timestamp, JSMessageSource, ErrorMessageLevel, messageText, String16(), 0, 0, nu llptr, 0, String16())); 404 std::unique_ptr<V8ConsoleMessage> message = wrapUnique(new V8ConsoleMessage( V8MessageOrigin::kRevokedException, timestamp, JSMessageSource, ErrorMessageLeve l, messageText));
405 message->m_origin = V8MessageOrigin::kRevokedException;
406 message->m_revokedExceptionId = revokedExceptionId; 405 message->m_revokedExceptionId = revokedExceptionId;
407 return message; 406 return message;
408 } 407 }
409 408
409 // static
410 std::unique_ptr<V8ConsoleMessage> V8ConsoleMessage::createExternal(double timest amp, MessageSource source, MessageLevel level, const String16& messageText, cons t String16& url, unsigned lineNumber, unsigned columnNumber, std::unique_ptr<V8S tackTrace> stackTrace, int scriptId, const String16& requestIdentifier, const St ring16& workerId)
411 {
412 std::unique_ptr<V8ConsoleMessage> message = wrapUnique(new V8ConsoleMessage( V8MessageOrigin::kConsole, timestamp, source, level, messageText));
413 message->setLocation(url, lineNumber, columnNumber, std::move(stackTrace), s criptId);
414 message->m_requestIdentifier = requestIdentifier;
415 message->m_workerId = workerId;
416 return message;
417 }
418
410 void V8ConsoleMessage::contextDestroyed(int contextId) 419 void V8ConsoleMessage::contextDestroyed(int contextId)
411 { 420 {
412 if (contextId != m_contextId) 421 if (contextId != m_contextId)
413 return; 422 return;
414 m_contextId = 0; 423 m_contextId = 0;
415 if (m_message.isEmpty()) 424 if (m_message.isEmpty())
416 m_message = "<message collected>"; 425 m_message = "<message collected>";
417 Arguments empty; 426 Arguments empty;
418 m_arguments.swap(empty); 427 m_arguments.swap(empty);
419 } 428 }
(...skipping 45 matching lines...) Expand 10 before | Expand all | Expand 10 after
465 } 474 }
466 } 475 }
467 476
468 void V8ConsoleMessageStorage::contextDestroyed(int contextId) 477 void V8ConsoleMessageStorage::contextDestroyed(int contextId)
469 { 478 {
470 for (size_t i = 0; i < m_messages.size(); ++i) 479 for (size_t i = 0; i < m_messages.size(); ++i)
471 m_messages[i]->contextDestroyed(contextId); 480 m_messages[i]->contextDestroyed(contextId);
472 } 481 }
473 482
474 } // namespace blink 483 } // namespace blink
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698