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

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

Issue 2151273003: [DevTools] Move browser logging from Console domain to Log domain. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@internals-method
Patch Set: protocol improvements 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"
11 #include "platform/v8_inspector/V8RuntimeAgentImpl.h" 11 #include "platform/v8_inspector/V8RuntimeAgentImpl.h"
12 #include "platform/v8_inspector/V8StackTraceImpl.h" 12 #include "platform/v8_inspector/V8StackTraceImpl.h"
13 #include "platform/v8_inspector/V8StringUtil.h" 13 #include "platform/v8_inspector/V8StringUtil.h"
14 #include "platform/v8_inspector/public/V8DebuggerClient.h" 14 #include "platform/v8_inspector/public/V8DebuggerClient.h"
15 15
16 namespace blink { 16 namespace blink {
17 17
18 namespace { 18 namespace {
19 19
20 String16 messageSourceValue(MessageSource source)
21 {
22 switch (source) {
23 case XMLMessageSource: return protocol::Console::ConsoleMessage::SourceEnum: :Xml;
24 case JSMessageSource: return protocol::Console::ConsoleMessage::SourceEnum:: Javascript;
25 case NetworkMessageSource: return protocol::Console::ConsoleMessage::SourceE num::Network;
26 case ConsoleAPIMessageSource: return protocol::Console::ConsoleMessage::Sour ceEnum::ConsoleApi;
27 case StorageMessageSource: return protocol::Console::ConsoleMessage::SourceE num::Storage;
28 case AppCacheMessageSource: return protocol::Console::ConsoleMessage::Source Enum::Appcache;
29 case RenderingMessageSource: return protocol::Console::ConsoleMessage::Sourc eEnum::Rendering;
30 case SecurityMessageSource: return protocol::Console::ConsoleMessage::Source Enum::Security;
31 case OtherMessageSource: return protocol::Console::ConsoleMessage::SourceEnu m::Other;
32 case DeprecationMessageSource: return protocol::Console::ConsoleMessage::Sou rceEnum::Deprecation;
33 case WorkerMessageSource: return protocol::Console::ConsoleMessage::SourceEn um::Worker;
34 }
35 return protocol::Console::ConsoleMessage::SourceEnum::Other;
36 }
37
38
39 String16 consoleAPITypeValue(ConsoleAPIType type) 20 String16 consoleAPITypeValue(ConsoleAPIType type)
40 { 21 {
41 switch (type) { 22 switch (type) {
42 case ConsoleAPIType::kLog: return protocol::Runtime::ConsoleAPICalled::TypeE num::Log; 23 case ConsoleAPIType::kLog: return protocol::Runtime::ConsoleAPICalled::TypeE num::Log;
43 case ConsoleAPIType::kDebug: return protocol::Runtime::ConsoleAPICalled::Typ eEnum::Debug; 24 case ConsoleAPIType::kDebug: return protocol::Runtime::ConsoleAPICalled::Typ eEnum::Debug;
44 case ConsoleAPIType::kInfo: return protocol::Runtime::ConsoleAPICalled::Type Enum::Info; 25 case ConsoleAPIType::kInfo: return protocol::Runtime::ConsoleAPICalled::Type Enum::Info;
45 case ConsoleAPIType::kError: return protocol::Runtime::ConsoleAPICalled::Typ eEnum::Error; 26 case ConsoleAPIType::kError: return protocol::Runtime::ConsoleAPICalled::Typ eEnum::Error;
46 case ConsoleAPIType::kWarning: return protocol::Runtime::ConsoleAPICalled::T ypeEnum::Warning; 27 case ConsoleAPIType::kWarning: return protocol::Runtime::ConsoleAPICalled::T ypeEnum::Warning;
47 case ConsoleAPIType::kClear: return protocol::Runtime::ConsoleAPICalled::Typ eEnum::Clear; 28 case ConsoleAPIType::kClear: return protocol::Runtime::ConsoleAPICalled::Typ eEnum::Clear;
48 case ConsoleAPIType::kDir: return protocol::Runtime::ConsoleAPICalled::TypeE num::Dir; 29 case ConsoleAPIType::kDir: return protocol::Runtime::ConsoleAPICalled::TypeE num::Dir;
49 case ConsoleAPIType::kDirXML: return protocol::Runtime::ConsoleAPICalled::Ty peEnum::Dirxml; 30 case ConsoleAPIType::kDirXML: return protocol::Runtime::ConsoleAPICalled::Ty peEnum::Dirxml;
50 case ConsoleAPIType::kTable: return protocol::Runtime::ConsoleAPICalled::Typ eEnum::Table; 31 case ConsoleAPIType::kTable: return protocol::Runtime::ConsoleAPICalled::Typ eEnum::Table;
51 case ConsoleAPIType::kTrace: return protocol::Runtime::ConsoleAPICalled::Typ eEnum::Trace; 32 case ConsoleAPIType::kTrace: return protocol::Runtime::ConsoleAPICalled::Typ eEnum::Trace;
52 case ConsoleAPIType::kStartGroup: return protocol::Runtime::ConsoleAPICalled ::TypeEnum::StartGroup; 33 case ConsoleAPIType::kStartGroup: return protocol::Runtime::ConsoleAPICalled ::TypeEnum::StartGroup;
53 case ConsoleAPIType::kStartGroupCollapsed: return protocol::Runtime::Console APICalled::TypeEnum::StartGroupCollapsed; 34 case ConsoleAPIType::kStartGroupCollapsed: return protocol::Runtime::Console APICalled::TypeEnum::StartGroupCollapsed;
54 case ConsoleAPIType::kEndGroup: return protocol::Runtime::ConsoleAPICalled:: TypeEnum::EndGroup; 35 case ConsoleAPIType::kEndGroup: return protocol::Runtime::ConsoleAPICalled:: TypeEnum::EndGroup;
55 case ConsoleAPIType::kAssert: return protocol::Runtime::ConsoleAPICalled::Ty peEnum::Assert; 36 case ConsoleAPIType::kAssert: return protocol::Runtime::ConsoleAPICalled::Ty peEnum::Assert;
56 case ConsoleAPIType::kTimeEnd: return protocol::Runtime::ConsoleAPICalled::T ypeEnum::Debug; 37 case ConsoleAPIType::kTimeEnd: return protocol::Runtime::ConsoleAPICalled::T ypeEnum::Debug;
57 case ConsoleAPIType::kCount: return protocol::Runtime::ConsoleAPICalled::Typ eEnum::Debug; 38 case ConsoleAPIType::kCount: return protocol::Runtime::ConsoleAPICalled::Typ eEnum::Debug;
58 } 39 }
59 return protocol::Runtime::ConsoleAPICalled::TypeEnum::Log; 40 return protocol::Runtime::ConsoleAPICalled::TypeEnum::Log;
60 } 41 }
61 42
62 String16 messageLevelValue(MessageLevel level)
63 {
64 switch (level) {
65 case DebugMessageLevel: return protocol::Console::ConsoleMessage::LevelEnum: :Debug;
66 case LogMessageLevel: return protocol::Console::ConsoleMessage::LevelEnum::L og;
67 case WarningMessageLevel: return protocol::Console::ConsoleMessage::LevelEnu m::Warning;
68 case ErrorMessageLevel: return protocol::Console::ConsoleMessage::LevelEnum: :Error;
69 case InfoMessageLevel: return protocol::Console::ConsoleMessage::LevelEnum:: Info;
70 }
71 return protocol::Console::ConsoleMessage::LevelEnum::Log;
72 }
73
74 const unsigned maxConsoleMessageCount = 1000; 43 const unsigned maxConsoleMessageCount = 1000;
75 const unsigned maxArrayItemsLimit = 10000; 44 const unsigned maxArrayItemsLimit = 10000;
76 const unsigned maxStackDepthLimit = 32; 45 const unsigned maxStackDepthLimit = 32;
77 46
78 class V8ValueStringBuilder { 47 class V8ValueStringBuilder {
79 public: 48 public:
80 static String16 toString(v8::Local<v8::Value> value, v8::Isolate* isolate) 49 static String16 toString(v8::Local<v8::Value> value, v8::Isolate* isolate)
81 { 50 {
82 V8ValueStringBuilder builder(isolate); 51 V8ValueStringBuilder builder(isolate);
83 if (!builder.append(value)) 52 if (!builder.append(value))
(...skipping 113 matching lines...) Expand 10 before | Expand all | Expand 10 after
197 166
198 uint32_t m_arrayLimit; 167 uint32_t m_arrayLimit;
199 v8::Isolate* m_isolate; 168 v8::Isolate* m_isolate;
200 String16Builder m_builder; 169 String16Builder m_builder;
201 std::vector<v8::Local<v8::Array>> m_visitedArrays; 170 std::vector<v8::Local<v8::Array>> m_visitedArrays;
202 v8::TryCatch m_tryCatch; 171 v8::TryCatch m_tryCatch;
203 }; 172 };
204 173
205 } // namespace 174 } // namespace
206 175
207 V8ConsoleMessage::V8ConsoleMessage(V8MessageOrigin origin, double timestamp, Mes sageSource source, MessageLevel level, const String16& message) 176 V8ConsoleMessage::V8ConsoleMessage(V8MessageOrigin origin, double timestamp, con st String16& message)
208 : m_origin(origin) 177 : m_origin(origin)
209 , m_timestamp(timestamp) 178 , m_timestamp(timestamp)
210 , m_source(source)
211 , m_level(level)
212 , m_message(message) 179 , m_message(message)
213 , m_lineNumber(0) 180 , m_lineNumber(0)
214 , m_columnNumber(0) 181 , m_columnNumber(0)
215 , m_scriptId(0) 182 , m_scriptId(0)
216 , m_contextId(0) 183 , m_contextId(0)
217 , m_type(ConsoleAPIType::kLog) 184 , m_type(ConsoleAPIType::kLog)
218 , m_exceptionId(0) 185 , m_exceptionId(0)
219 , m_revokedExceptionId(0) 186 , m_revokedExceptionId(0)
220 { 187 {
221 } 188 }
222 189
223 V8ConsoleMessage::~V8ConsoleMessage() 190 V8ConsoleMessage::~V8ConsoleMessage()
224 { 191 {
225 } 192 }
226 193
227 void V8ConsoleMessage::setLocation(const String16& url, unsigned lineNumber, uns igned columnNumber, std::unique_ptr<V8StackTrace> stackTrace, int scriptId) 194 void V8ConsoleMessage::setLocation(const String16& url, unsigned lineNumber, uns igned columnNumber, std::unique_ptr<V8StackTrace> stackTrace, int scriptId)
228 { 195 {
229 m_url = url; 196 m_url = url;
230 m_lineNumber = lineNumber; 197 m_lineNumber = lineNumber;
231 m_columnNumber = columnNumber; 198 m_columnNumber = columnNumber;
232 m_stackTrace = std::move(stackTrace); 199 m_stackTrace = std::move(stackTrace);
233 m_scriptId = scriptId; 200 m_scriptId = scriptId;
234 } 201 }
235 202
236 void V8ConsoleMessage::reportToFrontend(protocol::Console::Frontend* frontend, V 8InspectorSessionImpl* session, bool generatePreview) const 203 void V8ConsoleMessage::reportToFrontend(protocol::Console::Frontend* frontend) c onst
237 { 204 {
238 DCHECK(m_origin == V8MessageOrigin::kExternalConsole || m_origin == V8Messag eOrigin::kConsole); 205 DCHECK(m_origin == V8MessageOrigin::kConsole);
239 std::unique_ptr<protocol::Console::ConsoleMessage> result = 206 std::unique_ptr<protocol::Console::ConsoleMessage> result =
240 protocol::Console::ConsoleMessage::create() 207 protocol::Console::ConsoleMessage::create()
241 .setSource(messageSourceValue(m_source)) 208 .setSource(protocol::Console::ConsoleMessage::SourceEnum::ConsoleApi)
242 .setLevel(messageLevelValue(m_level)) 209 .setLevel(protocol::Console::ConsoleMessage::LevelEnum::Log)
243 .setText(m_message) 210 .setText(m_message)
244 .setTimestamp(m_timestamp)
245 .build(); 211 .build();
246 result->setLine(static_cast<int>(m_lineNumber)); 212 result->setLine(static_cast<int>(m_lineNumber));
247 result->setColumn(static_cast<int>(m_columnNumber)); 213 result->setColumn(static_cast<int>(m_columnNumber));
248 if (m_scriptId)
249 result->setScriptId(String16::fromInteger(m_scriptId));
250 result->setUrl(m_url); 214 result->setUrl(m_url);
251 if (m_source == NetworkMessageSource && !m_requestIdentifier.isEmpty())
252 result->setNetworkRequestId(m_requestIdentifier);
253 if (m_contextId)
254 result->setExecutionContextId(m_contextId);
255 if (m_stackTrace)
256 result->setStack(m_stackTrace->buildInspectorObject());
257 if (m_source == WorkerMessageSource && !m_workerId.isEmpty())
258 result->setWorkerId(m_workerId);
259 frontend->messageAdded(std::move(result)); 215 frontend->messageAdded(std::move(result));
260 } 216 }
261 217
262 std::unique_ptr<protocol::Array<protocol::Runtime::RemoteObject>> V8ConsoleMessa ge::wrapArguments(V8InspectorSessionImpl* session, bool generatePreview) const 218 std::unique_ptr<protocol::Array<protocol::Runtime::RemoteObject>> V8ConsoleMessa ge::wrapArguments(V8InspectorSessionImpl* session, bool generatePreview) const
263 { 219 {
264 if (!m_arguments.size() || !m_contextId) 220 if (!m_arguments.size() || !m_contextId)
265 return nullptr; 221 return nullptr;
266 InspectedContext* inspectedContext = session->debugger()->getContext(session ->contextGroupId(), m_contextId); 222 InspectedContext* inspectedContext = session->debugger()->getContext(session ->contextGroupId(), m_contextId);
267 if (!inspectedContext) 223 if (!inspectedContext)
268 return nullptr; 224 return nullptr;
(...skipping 88 matching lines...) Expand 10 before | Expand all | Expand 10 after
357 } 313 }
358 314
359 ConsoleAPIType V8ConsoleMessage::type() const 315 ConsoleAPIType V8ConsoleMessage::type() const
360 { 316 {
361 return m_type; 317 return m_type;
362 } 318 }
363 319
364 // static 320 // static
365 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) 321 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)
366 { 322 {
367 std::unique_ptr<V8ConsoleMessage> message = wrapUnique(new V8ConsoleMessage( V8MessageOrigin::kConsole, timestamp, ConsoleAPIMessageSource, LogMessageLevel, String16())); 323 std::unique_ptr<V8ConsoleMessage> message = wrapUnique(new V8ConsoleMessage( V8MessageOrigin::kConsole, timestamp, String16()));
368 if (stackTrace && !stackTrace->isEmpty()) { 324 if (stackTrace && !stackTrace->isEmpty()) {
369 message->m_url = stackTrace->topSourceURL(); 325 message->m_url = stackTrace->topSourceURL();
370 message->m_lineNumber = stackTrace->topLineNumber(); 326 message->m_lineNumber = stackTrace->topLineNumber();
371 message->m_columnNumber = stackTrace->topColumnNumber(); 327 message->m_columnNumber = stackTrace->topColumnNumber();
372 } 328 }
373 message->m_stackTrace = std::move(stackTrace); 329 message->m_stackTrace = std::move(stackTrace);
374 message->m_type = type; 330 message->m_type = type;
375 message->m_contextId = context->contextId(); 331 message->m_contextId = context->contextId();
376 for (size_t i = 0; i < arguments.size(); ++i) 332 for (size_t i = 0; i < arguments.size(); ++i)
377 message->m_arguments.push_back(wrapUnique(new v8::Global<v8::Value>(cont ext->isolate(), arguments.at(i)))); 333 message->m_arguments.push_back(wrapUnique(new v8::Global<v8::Value>(cont ext->isolate(), arguments.at(i))));
(...skipping 10 matching lines...) Expand all
388 if (type == ConsoleAPIType::kInfo) 344 if (type == ConsoleAPIType::kInfo)
389 level = InfoMessageLevel; 345 level = InfoMessageLevel;
390 context->debugger()->client()->consoleAPIMessage(context->contextGroupId(), level, message->m_message, message->m_url, message->m_lineNumber, message->m_col umnNumber, message->m_stackTrace.get()); 346 context->debugger()->client()->consoleAPIMessage(context->contextGroupId(), level, message->m_message, message->m_url, message->m_lineNumber, message->m_col umnNumber, message->m_stackTrace.get());
391 347
392 return message; 348 return message;
393 } 349 }
394 350
395 // static 351 // static
396 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) 352 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)
397 { 353 {
398 std::unique_ptr<V8ConsoleMessage> message = wrapUnique(new V8ConsoleMessage( V8MessageOrigin::kException, timestamp, JSMessageSource, ErrorMessageLevel, mess ageText)); 354 std::unique_ptr<V8ConsoleMessage> message = wrapUnique(new V8ConsoleMessage( V8MessageOrigin::kException, timestamp, messageText));
399 message->setLocation(url, lineNumber, columnNumber, std::move(stackTrace), s criptId); 355 message->setLocation(url, lineNumber, columnNumber, std::move(stackTrace), s criptId);
400 message->m_exceptionId = exceptionId; 356 message->m_exceptionId = exceptionId;
401 if (contextId && !exception.IsEmpty()) { 357 if (contextId && !exception.IsEmpty()) {
402 message->m_contextId = contextId; 358 message->m_contextId = contextId;
403 message->m_arguments.push_back(wrapUnique(new v8::Global<v8::Value>(isol ate, exception))); 359 message->m_arguments.push_back(wrapUnique(new v8::Global<v8::Value>(isol ate, exception)));
404 } 360 }
405 return message; 361 return message;
406 } 362 }
407 363
408 // static 364 // static
409 std::unique_ptr<V8ConsoleMessage> V8ConsoleMessage::createForRevokedException(do uble timestamp, const String16& messageText, unsigned revokedExceptionId) 365 std::unique_ptr<V8ConsoleMessage> V8ConsoleMessage::createForRevokedException(do uble timestamp, const String16& messageText, unsigned revokedExceptionId)
410 { 366 {
411 std::unique_ptr<V8ConsoleMessage> message = wrapUnique(new V8ConsoleMessage( V8MessageOrigin::kRevokedException, timestamp, JSMessageSource, ErrorMessageLeve l, messageText)); 367 std::unique_ptr<V8ConsoleMessage> message = wrapUnique(new V8ConsoleMessage( V8MessageOrigin::kRevokedException, timestamp, messageText));
412 message->m_revokedExceptionId = revokedExceptionId; 368 message->m_revokedExceptionId = revokedExceptionId;
413 return message; 369 return message;
414 } 370 }
415 371
416 // static
417 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)
418 {
419 std::unique_ptr<V8ConsoleMessage> message = wrapUnique(new V8ConsoleMessage( V8MessageOrigin::kExternalConsole, timestamp, source, level, messageText));
420 message->setLocation(url, lineNumber, columnNumber, std::move(stackTrace), s criptId);
421 message->m_requestIdentifier = requestIdentifier;
422 message->m_workerId = workerId;
423 return message;
424 }
425
426 void V8ConsoleMessage::contextDestroyed(int contextId) 372 void V8ConsoleMessage::contextDestroyed(int contextId)
427 { 373 {
428 if (contextId != m_contextId) 374 if (contextId != m_contextId)
429 return; 375 return;
430 m_contextId = 0; 376 m_contextId = 0;
431 if (m_message.isEmpty()) 377 if (m_message.isEmpty())
432 m_message = "<message collected>"; 378 m_message = "<message collected>";
433 Arguments empty; 379 Arguments empty;
434 m_arguments.swap(empty); 380 m_arguments.swap(empty);
435 } 381 }
436 382
437 // ------------------------ V8ConsoleMessageStorage ---------------------------- 383 // ------------------------ V8ConsoleMessageStorage ----------------------------
438 384
439 V8ConsoleMessageStorage::V8ConsoleMessageStorage(V8DebuggerImpl* debugger, int c ontextGroupId) 385 V8ConsoleMessageStorage::V8ConsoleMessageStorage(V8DebuggerImpl* debugger, int c ontextGroupId)
440 : m_debugger(debugger) 386 : m_debugger(debugger)
441 , m_contextGroupId(contextGroupId) 387 , m_contextGroupId(contextGroupId)
442 , m_expiredCount(0) 388 , m_expiredCount(0)
443 { 389 {
444 } 390 }
445 391
446 V8ConsoleMessageStorage::~V8ConsoleMessageStorage() 392 V8ConsoleMessageStorage::~V8ConsoleMessageStorage()
447 { 393 {
448 clear(); 394 clear();
395 notifyClear();
449 } 396 }
450 397
451 void V8ConsoleMessageStorage::addMessage(std::unique_ptr<V8ConsoleMessage> messa ge) 398 void V8ConsoleMessageStorage::addMessage(std::unique_ptr<V8ConsoleMessage> messa ge)
452 { 399 {
453 if (message->type() == ConsoleAPIType::kClear) 400 if (message->type() == ConsoleAPIType::kClear) {
454 clear(); 401 clear();
402 notifyClear();
403 }
455 404
456 V8InspectorSessionImpl* session = m_debugger->sessionForContextGroup(m_conte xtGroupId); 405 V8InspectorSessionImpl* session = m_debugger->sessionForContextGroup(m_conte xtGroupId);
457 if (session) { 406 if (session) {
458 if (message->origin() == V8MessageOrigin::kExternalConsole || message->o rigin() == V8MessageOrigin::kConsole) 407 if (message->origin() == V8MessageOrigin::kConsole)
459 session->consoleAgent()->messageAdded(message.get()); 408 session->consoleAgent()->messageAdded(message.get());
460 if (message->origin() != V8MessageOrigin::kExternalConsole) 409 session->runtimeAgent()->messageAdded(message.get());
461 session->runtimeAgent()->messageAdded(message.get());
462 } 410 }
463 411
464 DCHECK(m_messages.size() <= maxConsoleMessageCount); 412 DCHECK(m_messages.size() <= maxConsoleMessageCount);
465 if (m_messages.size() == maxConsoleMessageCount) { 413 if (m_messages.size() == maxConsoleMessageCount) {
466 ++m_expiredCount; 414 ++m_expiredCount;
467 m_messages.pop_front(); 415 m_messages.pop_front();
468 } 416 }
469 m_messages.push_back(std::move(message)); 417 m_messages.push_back(std::move(message));
470 } 418 }
471 419
472 void V8ConsoleMessageStorage::clear() 420 void V8ConsoleMessageStorage::clear()
473 { 421 {
474 m_messages.clear(); 422 m_messages.clear();
475 m_expiredCount = 0; 423 m_expiredCount = 0;
476 V8InspectorSessionImpl* session = m_debugger->sessionForContextGroup(m_conte xtGroupId); 424 if (V8InspectorSessionImpl* session = m_debugger->sessionForContextGroup(m_c ontextGroupId))
477 if (session) {
478 session->releaseObjectGroup("console"); 425 session->releaseObjectGroup("console");
479 session->client()->consoleCleared();
480 }
481 } 426 }
482 427
483 void V8ConsoleMessageStorage::contextDestroyed(int contextId) 428 void V8ConsoleMessageStorage::contextDestroyed(int contextId)
484 { 429 {
485 for (size_t i = 0; i < m_messages.size(); ++i) 430 for (size_t i = 0; i < m_messages.size(); ++i)
486 m_messages[i]->contextDestroyed(contextId); 431 m_messages[i]->contextDestroyed(contextId);
487 } 432 }
488 433
434 void V8ConsoleMessageStorage::notifyClear()
435 {
436 if (V8InspectorSessionImpl* session = m_debugger->sessionForContextGroup(m_c ontextGroupId))
437 session->client()->consoleCleared();
438 }
439
489 } // namespace blink 440 } // namespace blink
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698