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

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

Issue 2318853002: [DevTools] Handle navigation in console.log (Closed)
Patch Set: addressed comments Created 4 years, 3 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/StringUtil.h" 8 #include "platform/v8_inspector/StringUtil.h"
9 #include "platform/v8_inspector/V8ConsoleAgentImpl.h" 9 #include "platform/v8_inspector/V8ConsoleAgentImpl.h"
10 #include "platform/v8_inspector/V8InspectorImpl.h" 10 #include "platform/v8_inspector/V8InspectorImpl.h"
(...skipping 312 matching lines...) Expand 10 before | Expand all | Expand 10 after
323 } 323 }
324 324
325 ConsoleAPIType V8ConsoleMessage::type() const 325 ConsoleAPIType V8ConsoleMessage::type() const
326 { 326 {
327 return m_type; 327 return m_type;
328 } 328 }
329 329
330 // static 330 // static
331 std::unique_ptr<V8ConsoleMessage> V8ConsoleMessage::createForConsoleAPI(double t imestamp, ConsoleAPIType type, const std::vector<v8::Local<v8::Value>>& argument s, std::unique_ptr<V8StackTraceImpl> stackTrace, InspectedContext* context) 331 std::unique_ptr<V8ConsoleMessage> V8ConsoleMessage::createForConsoleAPI(double t imestamp, ConsoleAPIType type, const std::vector<v8::Local<v8::Value>>& argument s, std::unique_ptr<V8StackTraceImpl> stackTrace, InspectedContext* context)
332 { 332 {
333 v8::Isolate* isolate = context->isolate();
334 int contextId = context->contextId();
335 int contextGroupId = context->contextGroupId();
336 V8InspectorImpl* inspector = context->inspector();
337
333 std::unique_ptr<V8ConsoleMessage> message = wrapUnique(new V8ConsoleMessage( V8MessageOrigin::kConsole, timestamp, String16())); 338 std::unique_ptr<V8ConsoleMessage> message = wrapUnique(new V8ConsoleMessage( V8MessageOrigin::kConsole, timestamp, String16()));
334 if (stackTrace && !stackTrace->isEmpty()) { 339 if (stackTrace && !stackTrace->isEmpty()) {
335 message->m_url = toString16(stackTrace->topSourceURL()); 340 message->m_url = toString16(stackTrace->topSourceURL());
336 message->m_lineNumber = stackTrace->topLineNumber(); 341 message->m_lineNumber = stackTrace->topLineNumber();
337 message->m_columnNumber = stackTrace->topColumnNumber(); 342 message->m_columnNumber = stackTrace->topColumnNumber();
338 } 343 }
339 message->m_stackTrace = std::move(stackTrace); 344 message->m_stackTrace = std::move(stackTrace);
340 message->m_type = type; 345 message->m_type = type;
341 message->m_contextId = context->contextId(); 346 message->m_contextId = contextId;
342 for (size_t i = 0; i < arguments.size(); ++i) 347 for (size_t i = 0; i < arguments.size(); ++i)
343 message->m_arguments.push_back(wrapUnique(new v8::Global<v8::Value>(cont ext->isolate(), arguments.at(i)))); 348 message->m_arguments.push_back(wrapUnique(new v8::Global<v8::Value>(isol ate, arguments.at(i))));
344 if (arguments.size()) 349 if (arguments.size())
345 message->m_message = V8ValueStringBuilder::toString(arguments[0], contex t->isolate()); 350 message->m_message = V8ValueStringBuilder::toString(arguments[0], isolat e);
346 351
347 V8ConsoleAPIType clientType = V8ConsoleAPIType::kLog; 352 V8ConsoleAPIType clientType = V8ConsoleAPIType::kLog;
348 if (type == ConsoleAPIType::kDebug || type == ConsoleAPIType::kCount || type == ConsoleAPIType::kTimeEnd) 353 if (type == ConsoleAPIType::kDebug || type == ConsoleAPIType::kCount || type == ConsoleAPIType::kTimeEnd)
349 clientType = V8ConsoleAPIType::kDebug; 354 clientType = V8ConsoleAPIType::kDebug;
350 else if (type == ConsoleAPIType::kError || type == ConsoleAPIType::kAssert) 355 else if (type == ConsoleAPIType::kError || type == ConsoleAPIType::kAssert)
351 clientType = V8ConsoleAPIType::kError; 356 clientType = V8ConsoleAPIType::kError;
352 else if (type == ConsoleAPIType::kWarning) 357 else if (type == ConsoleAPIType::kWarning)
353 clientType = V8ConsoleAPIType::kWarning; 358 clientType = V8ConsoleAPIType::kWarning;
354 else if (type == ConsoleAPIType::kInfo) 359 else if (type == ConsoleAPIType::kInfo)
355 clientType = V8ConsoleAPIType::kInfo; 360 clientType = V8ConsoleAPIType::kInfo;
356 else if (type == ConsoleAPIType::kClear) 361 else if (type == ConsoleAPIType::kClear)
357 clientType = V8ConsoleAPIType::kClear; 362 clientType = V8ConsoleAPIType::kClear;
358 context->inspector()->client()->consoleAPIMessage(context->contextGroupId(), clientType, toStringView(message->m_message), toStringView(message->m_url), mes sage->m_lineNumber, message->m_columnNumber, message->m_stackTrace.get()); 363 inspector->client()->consoleAPIMessage(contextGroupId, clientType, toStringV iew(message->m_message), toStringView(message->m_url), message->m_lineNumber, me ssage->m_columnNumber, message->m_stackTrace.get());
359 364
360 return message; 365 return message;
361 } 366 }
362 367
363 // static 368 // static
364 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) 369 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)
365 { 370 {
366 std::unique_ptr<V8ConsoleMessage> consoleMessage = wrapUnique(new V8ConsoleM essage(V8MessageOrigin::kException, timestamp, message)); 371 std::unique_ptr<V8ConsoleMessage> consoleMessage = wrapUnique(new V8ConsoleM essage(V8MessageOrigin::kException, timestamp, message));
367 consoleMessage->setLocation(url, lineNumber, columnNumber, std::move(stackTr ace), scriptId); 372 consoleMessage->setLocation(url, lineNumber, columnNumber, std::move(stackTr ace), scriptId);
368 consoleMessage->m_exceptionId = exceptionId; 373 consoleMessage->m_exceptionId = exceptionId;
(...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after
402 { 407 {
403 } 408 }
404 409
405 V8ConsoleMessageStorage::~V8ConsoleMessageStorage() 410 V8ConsoleMessageStorage::~V8ConsoleMessageStorage()
406 { 411 {
407 clear(); 412 clear();
408 } 413 }
409 414
410 void V8ConsoleMessageStorage::addMessage(std::unique_ptr<V8ConsoleMessage> messa ge) 415 void V8ConsoleMessageStorage::addMessage(std::unique_ptr<V8ConsoleMessage> messa ge)
411 { 416 {
417 int contextGroupId = m_contextGroupId;
418 V8InspectorImpl* inspector = m_inspector;
412 if (message->type() == ConsoleAPIType::kClear) 419 if (message->type() == ConsoleAPIType::kClear)
413 clear(); 420 clear();
414 421
415 V8InspectorSessionImpl* session = m_inspector->sessionForContextGroup(m_cont extGroupId); 422 V8InspectorSessionImpl* session = inspector->sessionForContextGroup(contextG roupId);
416 if (session) { 423 if (session) {
417 if (message->origin() == V8MessageOrigin::kConsole) 424 if (message->origin() == V8MessageOrigin::kConsole)
418 session->consoleAgent()->messageAdded(message.get()); 425 session->consoleAgent()->messageAdded(message.get());
419 session->runtimeAgent()->messageAdded(message.get()); 426 session->runtimeAgent()->messageAdded(message.get());
420 } 427 }
428 if (!inspector->hasConsoleMessageStorage(contextGroupId))
429 return;
421 430
422 DCHECK(m_messages.size() <= maxConsoleMessageCount); 431 DCHECK(m_messages.size() <= maxConsoleMessageCount);
423 if (m_messages.size() == maxConsoleMessageCount) { 432 if (m_messages.size() == maxConsoleMessageCount) {
424 ++m_expiredCount; 433 ++m_expiredCount;
425 m_messages.pop_front(); 434 m_messages.pop_front();
426 } 435 }
427 m_messages.push_back(std::move(message)); 436 m_messages.push_back(std::move(message));
428 } 437 }
429 438
430 void V8ConsoleMessageStorage::clear() 439 void V8ConsoleMessageStorage::clear()
431 { 440 {
432 m_messages.clear(); 441 m_messages.clear();
433 m_expiredCount = 0; 442 m_expiredCount = 0;
434 if (V8InspectorSessionImpl* session = m_inspector->sessionForContextGroup(m_ contextGroupId)) 443 if (V8InspectorSessionImpl* session = m_inspector->sessionForContextGroup(m_ contextGroupId))
435 session->releaseObjectGroup("console"); 444 session->releaseObjectGroup("console");
436 } 445 }
437 446
438 void V8ConsoleMessageStorage::contextDestroyed(int contextId) 447 void V8ConsoleMessageStorage::contextDestroyed(int contextId)
439 { 448 {
440 for (size_t i = 0; i < m_messages.size(); ++i) 449 for (size_t i = 0; i < m_messages.size(); ++i)
441 m_messages[i]->contextDestroyed(contextId); 450 m_messages[i]->contextDestroyed(contextId);
442 } 451 }
443 452
444 } // namespace v8_inspector 453 } // namespace v8_inspector
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698