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

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

Issue 2139543002: [DevTools] Report console API calls through Runtime. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: rebased 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 21 matching lines...) Expand all
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 consoleAPITypeValue(ConsoleAPIType type) 39 String16 consoleAPITypeValue(ConsoleAPIType type)
40 { 40 {
41 switch (type) { 41 switch (type) {
42 case ConsoleAPIType::kLog: return protocol::Console::ConsoleMessage::TypeEnu m::Log; 42 case ConsoleAPIType::kLog: return protocol::Runtime::ConsoleAPICalled::TypeE num::Log;
43 case ConsoleAPIType::kClear: return protocol::Console::ConsoleMessage::TypeE num::Clear; 43 case ConsoleAPIType::kDebug: return protocol::Runtime::ConsoleAPICalled::Typ eEnum::Debug;
44 case ConsoleAPIType::kDir: return protocol::Console::ConsoleMessage::TypeEnu m::Dir; 44 case ConsoleAPIType::kInfo: return protocol::Runtime::ConsoleAPICalled::Type Enum::Info;
45 case ConsoleAPIType::kDirXML: return protocol::Console::ConsoleMessage::Type Enum::Dirxml; 45 case ConsoleAPIType::kError: return protocol::Runtime::ConsoleAPICalled::Typ eEnum::Error;
46 case ConsoleAPIType::kTable: return protocol::Console::ConsoleMessage::TypeE num::Table; 46 case ConsoleAPIType::kWarning: return protocol::Runtime::ConsoleAPICalled::T ypeEnum::Warning;
47 case ConsoleAPIType::kTrace: return protocol::Console::ConsoleMessage::TypeE num::Trace; 47 case ConsoleAPIType::kClear: return protocol::Runtime::ConsoleAPICalled::Typ eEnum::Clear;
48 case ConsoleAPIType::kStartGroup: return protocol::Console::ConsoleMessage:: TypeEnum::StartGroup; 48 case ConsoleAPIType::kDir: return protocol::Runtime::ConsoleAPICalled::TypeE num::Dir;
49 case ConsoleAPIType::kStartGroupCollapsed: return protocol::Console::Console Message::TypeEnum::StartGroupCollapsed; 49 case ConsoleAPIType::kDirXML: return protocol::Runtime::ConsoleAPICalled::Ty peEnum::Dirxml;
50 case ConsoleAPIType::kEndGroup: return protocol::Console::ConsoleMessage::Ty peEnum::EndGroup; 50 case ConsoleAPIType::kTable: return protocol::Runtime::ConsoleAPICalled::Typ eEnum::Table;
51 case ConsoleAPIType::kAssert: return protocol::Console::ConsoleMessage::Type Enum::Assert; 51 case ConsoleAPIType::kTrace: return protocol::Runtime::ConsoleAPICalled::Typ eEnum::Trace;
52 case ConsoleAPIType::kTimeEnd: return protocol::Console::ConsoleMessage::Typ eEnum::Log; 52 case ConsoleAPIType::kStartGroup: return protocol::Runtime::ConsoleAPICalled ::TypeEnum::StartGroup;
53 case ConsoleAPIType::kCount: return protocol::Console::ConsoleMessage::TypeE num::Log; 53 case ConsoleAPIType::kStartGroupCollapsed: return protocol::Runtime::Console APICalled::TypeEnum::StartGroupCollapsed;
54 case ConsoleAPIType::kEndGroup: return protocol::Runtime::ConsoleAPICalled:: TypeEnum::EndGroup;
55 case ConsoleAPIType::kAssert: return protocol::Runtime::ConsoleAPICalled::Ty peEnum::Assert;
56 case ConsoleAPIType::kTimeEnd: return protocol::Runtime::ConsoleAPICalled::T ypeEnum::Debug;
57 case ConsoleAPIType::kCount: return protocol::Runtime::ConsoleAPICalled::Typ eEnum::Debug;
54 } 58 }
55 return protocol::Console::ConsoleMessage::TypeEnum::Log; 59 return protocol::Runtime::ConsoleAPICalled::TypeEnum::Log;
56 } 60 }
57 61
58 String16 messageLevelValue(MessageLevel level) 62 String16 messageLevelValue(MessageLevel level)
59 { 63 {
60 switch (level) { 64 switch (level) {
61 case DebugMessageLevel: return protocol::Console::ConsoleMessage::LevelEnum: :Debug; 65 case DebugMessageLevel: return protocol::Console::ConsoleMessage::LevelEnum: :Debug;
62 case LogMessageLevel: return protocol::Console::ConsoleMessage::LevelEnum::L og; 66 case LogMessageLevel: return protocol::Console::ConsoleMessage::LevelEnum::L og;
63 case WarningMessageLevel: return protocol::Console::ConsoleMessage::LevelEnu m::Warning; 67 case WarningMessageLevel: return protocol::Console::ConsoleMessage::LevelEnu m::Warning;
64 case ErrorMessageLevel: return protocol::Console::ConsoleMessage::LevelEnum: :Error; 68 case ErrorMessageLevel: return protocol::Console::ConsoleMessage::LevelEnum: :Error;
65 case InfoMessageLevel: return protocol::Console::ConsoleMessage::LevelEnum:: Info; 69 case InfoMessageLevel: return protocol::Console::ConsoleMessage::LevelEnum:: Info;
(...skipping 158 matching lines...) Expand 10 before | Expand all | Expand 10 after
224 { 228 {
225 m_url = url; 229 m_url = url;
226 m_lineNumber = lineNumber; 230 m_lineNumber = lineNumber;
227 m_columnNumber = columnNumber; 231 m_columnNumber = columnNumber;
228 m_stackTrace = std::move(stackTrace); 232 m_stackTrace = std::move(stackTrace);
229 m_scriptId = scriptId; 233 m_scriptId = scriptId;
230 } 234 }
231 235
232 void V8ConsoleMessage::reportToFrontend(protocol::Console::Frontend* frontend, V 8InspectorSessionImpl* session, bool generatePreview) const 236 void V8ConsoleMessage::reportToFrontend(protocol::Console::Frontend* frontend, V 8InspectorSessionImpl* session, bool generatePreview) const
233 { 237 {
234 DCHECK_EQ(V8MessageOrigin::kConsole, m_origin); 238 DCHECK(m_origin == V8MessageOrigin::kExternalConsole || m_origin == V8Messag eOrigin::kConsole);
235 std::unique_ptr<protocol::Console::ConsoleMessage> result = 239 std::unique_ptr<protocol::Console::ConsoleMessage> result =
236 protocol::Console::ConsoleMessage::create() 240 protocol::Console::ConsoleMessage::create()
237 .setSource(messageSourceValue(m_source)) 241 .setSource(messageSourceValue(m_source))
238 .setLevel(messageLevelValue(m_level)) 242 .setLevel(messageLevelValue(m_level))
239 .setText(m_message) 243 .setText(m_message)
240 .setTimestamp(m_timestamp / 1000) // TODO(dgozman): migrate this to mill iseconds. 244 .setTimestamp(m_timestamp / 1000) // TODO(dgozman): migrate this to mill iseconds.
241 .build(); 245 .build();
242 result->setType(consoleAPITypeValue(m_type));
243 result->setLine(static_cast<int>(m_lineNumber)); 246 result->setLine(static_cast<int>(m_lineNumber));
244 result->setColumn(static_cast<int>(m_columnNumber)); 247 result->setColumn(static_cast<int>(m_columnNumber));
245 if (m_scriptId) 248 if (m_scriptId)
246 result->setScriptId(String16::fromInteger(m_scriptId)); 249 result->setScriptId(String16::fromInteger(m_scriptId));
247 result->setUrl(m_url); 250 result->setUrl(m_url);
248 if (m_source == NetworkMessageSource && !m_requestIdentifier.isEmpty()) 251 if (m_source == NetworkMessageSource && !m_requestIdentifier.isEmpty())
249 result->setNetworkRequestId(m_requestIdentifier); 252 result->setNetworkRequestId(m_requestIdentifier);
250 if (m_contextId) 253 if (m_contextId)
251 result->setExecutionContextId(m_contextId); 254 result->setExecutionContextId(m_contextId);
252 std::unique_ptr<protocol::Array<protocol::Runtime::RemoteObject>> args = wra pArguments(session, generatePreview);
253 if (args)
254 result->setParameters(std::move(args));
255 if (m_stackTrace) 255 if (m_stackTrace)
256 result->setStack(m_stackTrace->buildInspectorObject()); 256 result->setStack(m_stackTrace->buildInspectorObject());
257 if (m_source == WorkerMessageSource && !m_workerId.isEmpty()) 257 if (m_source == WorkerMessageSource && !m_workerId.isEmpty())
258 result->setWorkerId(m_workerId); 258 result->setWorkerId(m_workerId);
259 frontend->messageAdded(std::move(result)); 259 frontend->messageAdded(std::move(result));
260 } 260 }
261 261
262 std::unique_ptr<protocol::Array<protocol::Runtime::RemoteObject>> V8ConsoleMessa ge::wrapArguments(V8InspectorSessionImpl* session, bool generatePreview) const 262 std::unique_ptr<protocol::Array<protocol::Runtime::RemoteObject>> V8ConsoleMessa ge::wrapArguments(V8InspectorSessionImpl* session, bool generatePreview) const
263 { 263 {
264 if (!m_arguments.size() || !m_contextId) 264 if (!m_arguments.size() || !m_contextId)
(...skipping 48 matching lines...) Expand 10 before | Expand all | Expand 10 after
313 if (exception) 313 if (exception)
314 frontend->exceptionThrown(m_exceptionId, m_timestamp, std::move(deta ils), std::move(exception), m_contextId); 314 frontend->exceptionThrown(m_exceptionId, m_timestamp, std::move(deta ils), std::move(exception), m_contextId);
315 else 315 else
316 frontend->exceptionThrown(m_exceptionId, m_timestamp, std::move(deta ils)); 316 frontend->exceptionThrown(m_exceptionId, m_timestamp, std::move(deta ils));
317 return; 317 return;
318 } 318 }
319 if (m_origin == V8MessageOrigin::kRevokedException) { 319 if (m_origin == V8MessageOrigin::kRevokedException) {
320 frontend->exceptionRevoked(m_timestamp, m_message, m_revokedExceptionId) ; 320 frontend->exceptionRevoked(m_timestamp, m_message, m_revokedExceptionId) ;
321 return; 321 return;
322 } 322 }
323 if (m_origin == V8MessageOrigin::kConsole) {
324 std::unique_ptr<protocol::Array<protocol::Runtime::RemoteObject>> argume nts = wrapArguments(session, generatePreview);
325 if (!arguments) {
326 arguments = protocol::Array<protocol::Runtime::RemoteObject>::create ();
327 if (!m_message.isEmpty()) {
328 std::unique_ptr<protocol::Runtime::RemoteObject> messageArg = pr otocol::Runtime::RemoteObject::create().setType(protocol::Runtime::RemoteObject: :TypeEnum::String).build();
329 messageArg->setValue(protocol::StringValue::create(m_message));
330 arguments->addItem(std::move(messageArg));
331 }
332 }
333 frontend->consoleAPICalled(consoleAPITypeValue(m_type), std::move(argume nts), m_contextId, m_timestamp, m_stackTrace ? m_stackTrace->buildInspectorObjec t() : nullptr);
334 return;
335 }
323 NOTREACHED(); 336 NOTREACHED();
324 } 337 }
325 338
326 std::unique_ptr<protocol::Runtime::RemoteObject> V8ConsoleMessage::wrapException (V8InspectorSessionImpl* session, bool generatePreview) const 339 std::unique_ptr<protocol::Runtime::RemoteObject> V8ConsoleMessage::wrapException (V8InspectorSessionImpl* session, bool generatePreview) const
327 { 340 {
328 if (!m_arguments.size() || !m_contextId) 341 if (!m_arguments.size() || !m_contextId)
329 return nullptr; 342 return nullptr;
330 DCHECK_EQ(1u, m_arguments.size()); 343 DCHECK_EQ(1u, m_arguments.size());
331 InspectedContext* inspectedContext = session->debugger()->getContext(session ->contextGroupId(), m_contextId); 344 InspectedContext* inspectedContext = session->debugger()->getContext(session ->contextGroupId(), m_contextId);
332 if (!inspectedContext) 345 if (!inspectedContext)
(...skipping 14 matching lines...) Expand all
347 { 360 {
348 return m_arguments.size(); 361 return m_arguments.size();
349 } 362 }
350 363
351 ConsoleAPIType V8ConsoleMessage::type() const 364 ConsoleAPIType V8ConsoleMessage::type() const
352 { 365 {
353 return m_type; 366 return m_type;
354 } 367 }
355 368
356 // static 369 // static
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) 370 std::unique_ptr<V8ConsoleMessage> V8ConsoleMessage::createForConsoleAPI(double t imestamp, ConsoleAPIType type, const std::vector<v8::Local<v8::Value>>& argument s, std::unique_ptr<V8StackTrace> stackTrace, InspectedContext* context)
358 { 371 {
359 String16 url; 372 std::unique_ptr<V8ConsoleMessage> message = wrapUnique(new V8ConsoleMessage( V8MessageOrigin::kConsole, timestamp, ConsoleAPIMessageSource, LogMessageLevel, String16()));
360 unsigned lineNumber = 0;
361 unsigned columnNumber = 0;
362 if (stackTrace && !stackTrace->isEmpty()) { 373 if (stackTrace && !stackTrace->isEmpty()) {
363 url = stackTrace->topSourceURL(); 374 message->m_url = stackTrace->topSourceURL();
364 lineNumber = stackTrace->topLineNumber(); 375 message->m_lineNumber = stackTrace->topLineNumber();
365 columnNumber = stackTrace->topColumnNumber(); 376 message->m_columnNumber = stackTrace->topColumnNumber();
366 } 377 }
378 message->m_stackTrace = std::move(stackTrace);
379 message->m_type = type;
380 message->m_contextId = context->contextId();
381 for (size_t i = 0; i < arguments.size(); ++i)
382 message->m_arguments.push_back(wrapUnique(new v8::Global<v8::Value>(cont ext->isolate(), arguments.at(i))));
383 if (arguments.size())
384 message->m_message = V8ValueStringBuilder::toString(arguments[0], contex t->isolate());
367 385
368 String16 actualMessage = messageText; 386 MessageLevel level = LogMessageLevel;
387 if (type == ConsoleAPIType::kDebug || type == ConsoleAPIType::kCount || type == ConsoleAPIType::kTimeEnd)
388 level = DebugMessageLevel;
389 if (type == ConsoleAPIType::kError || type == ConsoleAPIType::kAssert)
390 level = ErrorMessageLevel;
391 if (type == ConsoleAPIType::kWarning)
392 level = WarningMessageLevel;
393 if (type == ConsoleAPIType::kInfo)
394 level = InfoMessageLevel;
395 context->debugger()->client()->consoleAPIMessage(context->contextGroupId(), level, message->m_message, message->m_url, message->m_lineNumber, message->m_col umnNumber, message->m_stackTrace.get());
369 396
370 Arguments messageArguments;
371 if (arguments && arguments->size()) {
372 for (size_t i = 0; i < arguments->size(); ++i)
373 messageArguments.push_back(wrapUnique(new v8::Global<v8::Value>(cont ext->isolate(), arguments->at(i))));
374 if (actualMessage.isEmpty())
375 actualMessage = V8ValueStringBuilder::toString(messageArguments.at(0 )->Get(context->isolate()), context->isolate());
376 }
377
378 std::unique_ptr<V8ConsoleMessage> message = wrapUnique(new V8ConsoleMessage( V8MessageOrigin::kConsole, timestamp, ConsoleAPIMessageSource, level, actualMess age));
379 message->setLocation(url, lineNumber, columnNumber, std::move(stackTrace), 0 );
380 message->m_type = type;
381 if (messageArguments.size()) {
382 message->m_contextId = context->contextId();
383 message->m_arguments.swap(messageArguments);
384 }
385
386 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());
387 return message; 397 return message;
388 } 398 }
389 399
390 // static 400 // static
391 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) 401 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)
392 { 402 {
393 std::unique_ptr<V8ConsoleMessage> message = wrapUnique(new V8ConsoleMessage( V8MessageOrigin::kException, timestamp, JSMessageSource, ErrorMessageLevel, mess ageText)); 403 std::unique_ptr<V8ConsoleMessage> message = wrapUnique(new V8ConsoleMessage( V8MessageOrigin::kException, timestamp, JSMessageSource, ErrorMessageLevel, mess ageText));
394 message->setLocation(url, lineNumber, columnNumber, std::move(stackTrace), s criptId); 404 message->setLocation(url, lineNumber, columnNumber, std::move(stackTrace), s criptId);
395 message->m_exceptionId = exceptionId; 405 message->m_exceptionId = exceptionId;
396 if (contextId && !exception.IsEmpty()) { 406 if (contextId && !exception.IsEmpty()) {
397 message->m_contextId = contextId; 407 message->m_contextId = contextId;
398 message->m_arguments.push_back(wrapUnique(new v8::Global<v8::Value>(isol ate, exception))); 408 message->m_arguments.push_back(wrapUnique(new v8::Global<v8::Value>(isol ate, exception)));
399 } 409 }
400 return message; 410 return message;
401 } 411 }
402 412
403 // static 413 // static
404 std::unique_ptr<V8ConsoleMessage> V8ConsoleMessage::createForRevokedException(do uble timestamp, const String16& messageText, unsigned revokedExceptionId) 414 std::unique_ptr<V8ConsoleMessage> V8ConsoleMessage::createForRevokedException(do uble timestamp, const String16& messageText, unsigned revokedExceptionId)
405 { 415 {
406 std::unique_ptr<V8ConsoleMessage> message = wrapUnique(new V8ConsoleMessage( V8MessageOrigin::kRevokedException, timestamp, JSMessageSource, ErrorMessageLeve l, messageText)); 416 std::unique_ptr<V8ConsoleMessage> message = wrapUnique(new V8ConsoleMessage( V8MessageOrigin::kRevokedException, timestamp, JSMessageSource, ErrorMessageLeve l, messageText));
407 message->m_revokedExceptionId = revokedExceptionId; 417 message->m_revokedExceptionId = revokedExceptionId;
408 return message; 418 return message;
409 } 419 }
410 420
411 // static 421 // static
412 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) 422 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)
413 { 423 {
414 std::unique_ptr<V8ConsoleMessage> message = wrapUnique(new V8ConsoleMessage( V8MessageOrigin::kConsole, timestamp, source, level, messageText)); 424 std::unique_ptr<V8ConsoleMessage> message = wrapUnique(new V8ConsoleMessage( V8MessageOrigin::kExternalConsole, timestamp, source, level, messageText));
415 message->setLocation(url, lineNumber, columnNumber, std::move(stackTrace), s criptId); 425 message->setLocation(url, lineNumber, columnNumber, std::move(stackTrace), s criptId);
416 message->m_requestIdentifier = requestIdentifier; 426 message->m_requestIdentifier = requestIdentifier;
417 message->m_workerId = workerId; 427 message->m_workerId = workerId;
418 return message; 428 return message;
419 } 429 }
420 430
421 void V8ConsoleMessage::contextDestroyed(int contextId) 431 void V8ConsoleMessage::contextDestroyed(int contextId)
422 { 432 {
423 if (contextId != m_contextId) 433 if (contextId != m_contextId)
424 return; 434 return;
(...skipping 18 matching lines...) Expand all
443 clear(); 453 clear();
444 } 454 }
445 455
446 void V8ConsoleMessageStorage::addMessage(std::unique_ptr<V8ConsoleMessage> messa ge) 456 void V8ConsoleMessageStorage::addMessage(std::unique_ptr<V8ConsoleMessage> messa ge)
447 { 457 {
448 if (message->type() == ConsoleAPIType::kClear) 458 if (message->type() == ConsoleAPIType::kClear)
449 clear(); 459 clear();
450 460
451 V8InspectorSessionImpl* session = m_debugger->sessionForContextGroup(m_conte xtGroupId); 461 V8InspectorSessionImpl* session = m_debugger->sessionForContextGroup(m_conte xtGroupId);
452 if (session) { 462 if (session) {
453 if (message->origin() == V8MessageOrigin::kConsole) 463 if (message->origin() == V8MessageOrigin::kExternalConsole || message->o rigin() == V8MessageOrigin::kConsole)
454 session->consoleAgent()->messageAdded(message.get()); 464 session->consoleAgent()->messageAdded(message.get());
455 else 465 if (message->origin() != V8MessageOrigin::kExternalConsole)
456 session->runtimeAgent()->exceptionMessageAdded(message.get()); 466 session->runtimeAgent()->messageAdded(message.get());
457 } 467 }
458 468
459 DCHECK(m_messages.size() <= maxConsoleMessageCount); 469 DCHECK(m_messages.size() <= maxConsoleMessageCount);
460 if (m_messages.size() == maxConsoleMessageCount) { 470 if (m_messages.size() == maxConsoleMessageCount) {
461 ++m_expiredCount; 471 ++m_expiredCount;
462 m_messages.pop_front(); 472 m_messages.pop_front();
463 } 473 }
464 m_messages.push_back(std::move(message)); 474 m_messages.push_back(std::move(message));
465 } 475 }
466 476
467 void V8ConsoleMessageStorage::clear() 477 void V8ConsoleMessageStorage::clear()
468 { 478 {
469 m_messages.clear(); 479 m_messages.clear();
470 m_expiredCount = 0; 480 m_expiredCount = 0;
471 V8InspectorSessionImpl* session = m_debugger->sessionForContextGroup(m_conte xtGroupId); 481 V8InspectorSessionImpl* session = m_debugger->sessionForContextGroup(m_conte xtGroupId);
472 if (session) { 482 if (session) {
473 session->releaseObjectGroup("console"); 483 session->releaseObjectGroup("console");
474 session->client()->consoleCleared(); 484 session->client()->consoleCleared();
475 } 485 }
476 } 486 }
477 487
478 void V8ConsoleMessageStorage::contextDestroyed(int contextId) 488 void V8ConsoleMessageStorage::contextDestroyed(int contextId)
479 { 489 {
480 for (size_t i = 0; i < m_messages.size(); ++i) 490 for (size_t i = 0; i < m_messages.size(); ++i)
481 m_messages[i]->contextDestroyed(contextId); 491 m_messages[i]->contextDestroyed(contextId);
482 } 492 }
483 493
484 } // namespace blink 494 } // namespace blink
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698