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

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

Issue 2367163002: [DevTools] handle navigation after console.log (Closed)
Patch Set: Created 4 years, 2 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 288 matching lines...) Expand 10 before | Expand all | Expand 10 after
299 } 299 }
300 300
301 MessageType V8ConsoleMessage::type() const 301 MessageType V8ConsoleMessage::type() const
302 { 302 {
303 return m_type; 303 return m_type;
304 } 304 }
305 305
306 // static 306 // static
307 std::unique_ptr<V8ConsoleMessage> V8ConsoleMessage::createForConsoleAPI(double t imestampMS, MessageType type, MessageLevel level, const String16& messageText, s td::vector<v8::Local<v8::Value>>* arguments, std::unique_ptr<V8StackTrace> stack Trace, InspectedContext* context) 307 std::unique_ptr<V8ConsoleMessage> V8ConsoleMessage::createForConsoleAPI(double t imestampMS, MessageType type, MessageLevel level, const String16& messageText, s td::vector<v8::Local<v8::Value>>* arguments, std::unique_ptr<V8StackTrace> stack Trace, InspectedContext* context)
308 { 308 {
309 v8::Isolate* isolate = context->isolate();
310 int contextId = context->contextId();
311 int contextGroupId = context->contextGroupId();
312 V8DebuggerImpl* debugger = context->debugger();
313
309 String16 url; 314 String16 url;
310 unsigned lineNumber = 0; 315 unsigned lineNumber = 0;
311 unsigned columnNumber = 0; 316 unsigned columnNumber = 0;
312 if (stackTrace && !stackTrace->isEmpty()) { 317 if (stackTrace && !stackTrace->isEmpty()) {
313 url = stackTrace->topSourceURL(); 318 url = stackTrace->topSourceURL();
314 lineNumber = stackTrace->topLineNumber(); 319 lineNumber = stackTrace->topLineNumber();
315 columnNumber = stackTrace->topColumnNumber(); 320 columnNumber = stackTrace->topColumnNumber();
316 } 321 }
317 322
318 String16 actualMessage = messageText; 323 String16 actualMessage = messageText;
319 324
320 Arguments messageArguments; 325 Arguments messageArguments;
321 if (arguments && arguments->size()) { 326 if (arguments && arguments->size()) {
322 for (size_t i = 0; i < arguments->size(); ++i) 327 for (size_t i = 0; i < arguments->size(); ++i)
323 messageArguments.push_back(wrapUnique(new v8::Global<v8::Value>(cont ext->isolate(), arguments->at(i)))); 328 messageArguments.push_back(wrapUnique(new v8::Global<v8::Value>(isol ate, arguments->at(i))));
324 if (actualMessage.isEmpty()) 329 if (actualMessage.isEmpty())
325 actualMessage = V8ValueStringBuilder::toString(messageArguments.at(0 )->Get(context->isolate()), context->isolate()); 330 actualMessage = V8ValueStringBuilder::toString(messageArguments.at(0 )->Get(isolate), isolate);
326 } 331 }
327 332
328 std::unique_ptr<V8ConsoleMessage> message = wrapUnique(new V8ConsoleMessage( timestampMS, ConsoleAPIMessageSource, level, actualMessage, url, lineNumber, col umnNumber, std::move(stackTrace), 0 /* scriptId */, String16() /* requestIdentif ier */)); 333 std::unique_ptr<V8ConsoleMessage> message = wrapUnique(new V8ConsoleMessage( timestampMS, ConsoleAPIMessageSource, level, actualMessage, url, lineNumber, col umnNumber, std::move(stackTrace), 0 /* scriptId */, String16() /* requestIdentif ier */));
329 message->m_type = type; 334 message->m_type = type;
330 if (messageArguments.size()) { 335 if (messageArguments.size()) {
331 message->m_contextId = context->contextId(); 336 message->m_contextId = contextId;
332 message->m_arguments.swap(messageArguments); 337 message->m_arguments.swap(messageArguments);
333 } 338 }
334 339
335 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()); 340 debugger->client()->messageAddedToConsole(contextGroupId, message->m_source, message->m_level, message->m_message, message->m_url, message->m_lineNumber, me ssage->m_columnNumber, message->m_stackTrace.get());
336 return message; 341 return message;
337 } 342 }
338 343
339 void V8ConsoleMessage::contextDestroyed(int contextId) 344 void V8ConsoleMessage::contextDestroyed(int contextId)
340 { 345 {
341 if (contextId != m_contextId) 346 if (contextId != m_contextId)
342 return; 347 return;
343 m_contextId = 0; 348 m_contextId = 0;
344 if (m_message.isEmpty()) 349 if (m_message.isEmpty())
345 m_message = "<message collected>"; 350 m_message = "<message collected>";
(...skipping 29 matching lines...) Expand all
375 { 380 {
376 } 381 }
377 382
378 V8ConsoleMessageStorage::~V8ConsoleMessageStorage() 383 V8ConsoleMessageStorage::~V8ConsoleMessageStorage()
379 { 384 {
380 clear(); 385 clear();
381 } 386 }
382 387
383 void V8ConsoleMessageStorage::addMessage(std::unique_ptr<V8ConsoleMessage> messa ge) 388 void V8ConsoleMessageStorage::addMessage(std::unique_ptr<V8ConsoleMessage> messa ge)
384 { 389 {
390 int contextGroupId = m_contextGroupId;
391 V8DebuggerImpl* debugger = m_debugger;
392
385 if (message->type() == ClearMessageType) 393 if (message->type() == ClearMessageType)
386 clear(); 394 clear();
387 395
388 V8InspectorSessionImpl* session = m_debugger->sessionForContextGroup(m_conte xtGroupId); 396 V8InspectorSessionImpl* session = debugger->sessionForContextGroup(contextGr oupId);
389 if (session) 397 if (session)
390 session->consoleAgent()->messageAdded(message.get()); 398 session->consoleAgent()->messageAdded(message.get());
399 if (!debugger->hasConsoleMessageStorage(contextGroupId))
400 return;
391 401
392 DCHECK(m_messages.size() <= maxConsoleMessageCount); 402 DCHECK(m_messages.size() <= maxConsoleMessageCount);
393 if (m_messages.size() == maxConsoleMessageCount) { 403 if (m_messages.size() == maxConsoleMessageCount) {
394 ++m_expiredCount; 404 ++m_expiredCount;
395 m_messages.pop_front(); 405 m_messages.pop_front();
396 } 406 }
397 m_messages.push_back(std::move(message)); 407 m_messages.push_back(std::move(message));
398 } 408 }
399 409
400 void V8ConsoleMessageStorage::clear() 410 void V8ConsoleMessageStorage::clear()
401 { 411 {
402 m_messages.clear(); 412 m_messages.clear();
403 m_expiredCount = 0; 413 m_expiredCount = 0;
404 V8InspectorSessionImpl* session = m_debugger->sessionForContextGroup(m_conte xtGroupId); 414 V8InspectorSessionImpl* session = m_debugger->sessionForContextGroup(m_conte xtGroupId);
405 if (session) { 415 if (session) {
406 session->consoleAgent()->reset(); 416 session->consoleAgent()->reset();
407 session->releaseObjectGroup("console"); 417 session->releaseObjectGroup("console");
408 session->client()->consoleCleared(); 418 session->client()->consoleCleared();
409 } 419 }
410 } 420 }
411 421
412 void V8ConsoleMessageStorage::contextDestroyed(int contextId) 422 void V8ConsoleMessageStorage::contextDestroyed(int contextId)
413 { 423 {
414 for (size_t i = 0; i < m_messages.size(); ++i) 424 for (size_t i = 0; i < m_messages.size(); ++i)
415 m_messages[i]->contextDestroyed(contextId); 425 m_messages[i]->contextDestroyed(contextId);
416 } 426 }
417 427
418 } // namespace blink 428 } // namespace blink
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698