OLD | NEW |
---|---|
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 Loading... | |
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::ConsoleAPICall::TypeEnu m::Log; |
43 case ConsoleAPIType::kClear: return protocol::Console::ConsoleMessage::TypeE num::Clear; | 43 case ConsoleAPIType::kDebug: return protocol::Runtime::ConsoleAPICall::TypeE num::Debug; |
44 case ConsoleAPIType::kDir: return protocol::Console::ConsoleMessage::TypeEnu m::Dir; | 44 case ConsoleAPIType::kInfo: return protocol::Runtime::ConsoleAPICall::TypeEn um::Info; |
45 case ConsoleAPIType::kDirXML: return protocol::Console::ConsoleMessage::Type Enum::Dirxml; | 45 case ConsoleAPIType::kError: return protocol::Runtime::ConsoleAPICall::TypeE num::Error; |
46 case ConsoleAPIType::kTable: return protocol::Console::ConsoleMessage::TypeE num::Table; | 46 case ConsoleAPIType::kWarning: return protocol::Runtime::ConsoleAPICall::Typ eEnum::Warning; |
47 case ConsoleAPIType::kTrace: return protocol::Console::ConsoleMessage::TypeE num::Trace; | 47 case ConsoleAPIType::kClear: return protocol::Runtime::ConsoleAPICall::TypeE num::Clear; |
48 case ConsoleAPIType::kStartGroup: return protocol::Console::ConsoleMessage:: TypeEnum::StartGroup; | 48 case ConsoleAPIType::kDir: return protocol::Runtime::ConsoleAPICall::TypeEnu m::Dir; |
49 case ConsoleAPIType::kStartGroupCollapsed: return protocol::Console::Console Message::TypeEnum::StartGroupCollapsed; | 49 case ConsoleAPIType::kDirXML: return protocol::Runtime::ConsoleAPICall::Type Enum::Dirxml; |
50 case ConsoleAPIType::kEndGroup: return protocol::Console::ConsoleMessage::Ty peEnum::EndGroup; | 50 case ConsoleAPIType::kTable: return protocol::Runtime::ConsoleAPICall::TypeE num::Table; |
51 case ConsoleAPIType::kAssert: return protocol::Console::ConsoleMessage::Type Enum::Assert; | 51 case ConsoleAPIType::kTrace: return protocol::Runtime::ConsoleAPICall::TypeE num::Trace; |
52 case ConsoleAPIType::kTimeEnd: return protocol::Console::ConsoleMessage::Typ eEnum::Log; | 52 case ConsoleAPIType::kStartGroup: return protocol::Runtime::ConsoleAPICall:: TypeEnum::StartGroup; |
53 case ConsoleAPIType::kCount: return protocol::Console::ConsoleMessage::TypeE num::Log; | 53 case ConsoleAPIType::kStartGroupCollapsed: return protocol::Runtime::Console APICall::TypeEnum::StartGroupCollapsed; |
54 case ConsoleAPIType::kEndGroup: return protocol::Runtime::ConsoleAPICall::Ty peEnum::EndGroup; | |
55 case ConsoleAPIType::kAssert: return protocol::Runtime::ConsoleAPICall::Type Enum::Assert; | |
56 case ConsoleAPIType::kTimeEnd: return protocol::Runtime::ConsoleAPICall::Typ eEnum::Debug; | |
57 case ConsoleAPIType::kCount: return protocol::Runtime::ConsoleAPICall::TypeE num::Debug; | |
54 } | 58 } |
55 return protocol::Console::ConsoleMessage::TypeEnum::Log; | 59 return protocol::Runtime::ConsoleAPICall::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 Loading... | |
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_EQ(V8MessageOrigin::kExternalConsole, m_origin); |
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)); | 246 result->setType(consoleAPITypeValue(m_type)); |
243 result->setLine(static_cast<int>(m_lineNumber)); | 247 result->setLine(static_cast<int>(m_lineNumber)); |
244 result->setColumn(static_cast<int>(m_columnNumber)); | 248 result->setColumn(static_cast<int>(m_columnNumber)); |
(...skipping 68 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
313 if (exception) | 317 if (exception) |
314 frontend->exceptionThrown(m_exceptionId, m_timestamp, std::move(deta ils), std::move(exception), m_contextId); | 318 frontend->exceptionThrown(m_exceptionId, m_timestamp, std::move(deta ils), std::move(exception), m_contextId); |
315 else | 319 else |
316 frontend->exceptionThrown(m_exceptionId, m_timestamp, std::move(deta ils)); | 320 frontend->exceptionThrown(m_exceptionId, m_timestamp, std::move(deta ils)); |
317 return; | 321 return; |
318 } | 322 } |
319 if (m_origin == V8MessageOrigin::kRevokedException) { | 323 if (m_origin == V8MessageOrigin::kRevokedException) { |
320 frontend->exceptionRevoked(m_timestamp, m_message, m_revokedExceptionId) ; | 324 frontend->exceptionRevoked(m_timestamp, m_message, m_revokedExceptionId) ; |
321 return; | 325 return; |
322 } | 326 } |
327 if (m_origin == V8MessageOrigin::kConsole) { | |
328 std::unique_ptr<protocol::Array<protocol::Runtime::RemoteObject>> argume nts = wrapArguments(session, generatePreview); | |
329 if (!arguments) { | |
330 arguments = protocol::Array<protocol::Runtime::RemoteObject>::create (); | |
331 if (!m_message.isEmpty()) { | |
332 std::unique_ptr<protocol::Runtime::RemoteObject> messageArg = pr otocol::Runtime::RemoteObject::create().setType(protocol::Runtime::RemoteObject: :TypeEnum::String).build(); | |
333 messageArg->setValue(protocol::StringValue::create(m_message)); | |
334 arguments->addItem(std::move(messageArg)); | |
335 } | |
336 } | |
337 if (m_stackTrace) | |
338 frontend->consoleAPICall(m_timestamp, consoleAPITypeValue(m_type), s td::move(arguments), m_contextId, m_stackTrace->buildInspectorObject()); | |
339 else | |
340 frontend->consoleAPICall(m_timestamp, consoleAPITypeValue(m_type), s td::move(arguments), m_contextId); | |
kozy
2016/07/13 18:26:39
Can we replace it with smthg like:
frontend->conso
dgozman
2016/07/13 21:08:07
Done.
| |
341 return; | |
342 } | |
323 NOTREACHED(); | 343 NOTREACHED(); |
324 } | 344 } |
325 | 345 |
326 std::unique_ptr<protocol::Runtime::RemoteObject> V8ConsoleMessage::wrapException (V8InspectorSessionImpl* session, bool generatePreview) const | 346 std::unique_ptr<protocol::Runtime::RemoteObject> V8ConsoleMessage::wrapException (V8InspectorSessionImpl* session, bool generatePreview) const |
327 { | 347 { |
328 if (!m_arguments.size() || !m_contextId) | 348 if (!m_arguments.size() || !m_contextId) |
329 return nullptr; | 349 return nullptr; |
330 DCHECK_EQ(1u, m_arguments.size()); | 350 DCHECK_EQ(1u, m_arguments.size()); |
331 InspectedContext* inspectedContext = session->debugger()->getContext(session ->contextGroupId(), m_contextId); | 351 InspectedContext* inspectedContext = session->debugger()->getContext(session ->contextGroupId(), m_contextId); |
332 if (!inspectedContext) | 352 if (!inspectedContext) |
(...skipping 14 matching lines...) Expand all Loading... | |
347 { | 367 { |
348 return m_arguments.size(); | 368 return m_arguments.size(); |
349 } | 369 } |
350 | 370 |
351 ConsoleAPIType V8ConsoleMessage::type() const | 371 ConsoleAPIType V8ConsoleMessage::type() const |
352 { | 372 { |
353 return m_type; | 373 return m_type; |
354 } | 374 } |
355 | 375 |
356 // static | 376 // 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) | 377 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 { | 378 { |
379 std::unique_ptr<V8ConsoleMessage> message = wrapUnique(new V8ConsoleMessage( V8MessageOrigin::kConsole, timestamp, ConsoleAPIMessageSource, LogMessageLevel, String16())); | |
380 message->m_stackTrace = std::move(stackTrace); | |
381 message->m_type = type; | |
382 message->m_contextId = context->contextId(); | |
383 for (size_t i = 0; i < arguments.size(); ++i) | |
384 message->m_arguments.push_back(wrapUnique(new v8::Global<v8::Value>(cont ext->isolate(), arguments.at(i)))); | |
385 if (arguments.size()) | |
386 message->m_message = V8ValueStringBuilder::toString(arguments[0], contex t->isolate()); | |
387 | |
388 MessageLevel level = LogMessageLevel; | |
389 if (type == ConsoleAPIType::kDebug || type == ConsoleAPIType::kCount || type == ConsoleAPIType::kTimeEnd) | |
390 level = DebugMessageLevel; | |
391 if (type == ConsoleAPIType::kError || type == ConsoleAPIType::kAssert) | |
392 level = ErrorMessageLevel; | |
393 if (type == ConsoleAPIType::kWarning) | |
394 level = WarningMessageLevel; | |
395 if (type == ConsoleAPIType::kInfo) | |
396 level = InfoMessageLevel; | |
359 String16 url; | 397 String16 url; |
360 unsigned lineNumber = 0; | 398 unsigned lineNumber = 0; |
361 unsigned columnNumber = 0; | 399 unsigned columnNumber = 0; |
362 if (stackTrace && !stackTrace->isEmpty()) { | 400 if (message->m_stackTrace && !message->m_stackTrace->isEmpty()) { |
363 url = stackTrace->topSourceURL(); | 401 url = message->m_stackTrace->topSourceURL(); |
364 lineNumber = stackTrace->topLineNumber(); | 402 lineNumber = message->m_stackTrace->topLineNumber(); |
365 columnNumber = stackTrace->topColumnNumber(); | 403 columnNumber = message->m_stackTrace->topColumnNumber(); |
366 } | 404 } |
405 context->debugger()->client()->consoleAPIMessage(context->contextGroupId(), level, message->m_message, url, lineNumber, columnNumber, message->m_stackTrace. get()); | |
367 | 406 |
368 String16 actualMessage = messageText; | |
369 | |
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; | 407 return message; |
388 } | 408 } |
389 | 409 |
390 // static | 410 // 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) | 411 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 { | 412 { |
393 std::unique_ptr<V8ConsoleMessage> message = wrapUnique(new V8ConsoleMessage( V8MessageOrigin::kException, timestamp, JSMessageSource, ErrorMessageLevel, mess ageText)); | 413 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); | 414 message->setLocation(url, lineNumber, columnNumber, std::move(stackTrace), s criptId); |
395 message->m_exceptionId = exceptionId; | 415 message->m_exceptionId = exceptionId; |
396 if (contextId && !exception.IsEmpty()) { | 416 if (contextId && !exception.IsEmpty()) { |
397 message->m_contextId = contextId; | 417 message->m_contextId = contextId; |
398 message->m_arguments.push_back(wrapUnique(new v8::Global<v8::Value>(isol ate, exception))); | 418 message->m_arguments.push_back(wrapUnique(new v8::Global<v8::Value>(isol ate, exception))); |
399 } | 419 } |
400 return message; | 420 return message; |
401 } | 421 } |
402 | 422 |
403 // static | 423 // static |
404 std::unique_ptr<V8ConsoleMessage> V8ConsoleMessage::createForRevokedException(do uble timestamp, const String16& messageText, unsigned revokedExceptionId) | 424 std::unique_ptr<V8ConsoleMessage> V8ConsoleMessage::createForRevokedException(do uble timestamp, const String16& messageText, unsigned revokedExceptionId) |
405 { | 425 { |
406 std::unique_ptr<V8ConsoleMessage> message = wrapUnique(new V8ConsoleMessage( V8MessageOrigin::kRevokedException, timestamp, JSMessageSource, ErrorMessageLeve l, messageText)); | 426 std::unique_ptr<V8ConsoleMessage> message = wrapUnique(new V8ConsoleMessage( V8MessageOrigin::kRevokedException, timestamp, JSMessageSource, ErrorMessageLeve l, messageText)); |
407 message->m_revokedExceptionId = revokedExceptionId; | 427 message->m_revokedExceptionId = revokedExceptionId; |
408 return message; | 428 return message; |
409 } | 429 } |
410 | 430 |
411 // static | 431 // 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) | 432 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 { | 433 { |
414 std::unique_ptr<V8ConsoleMessage> message = wrapUnique(new V8ConsoleMessage( V8MessageOrigin::kConsole, timestamp, source, level, messageText)); | 434 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); | 435 message->setLocation(url, lineNumber, columnNumber, std::move(stackTrace), s criptId); |
416 message->m_requestIdentifier = requestIdentifier; | 436 message->m_requestIdentifier = requestIdentifier; |
417 message->m_workerId = workerId; | 437 message->m_workerId = workerId; |
418 return message; | 438 return message; |
419 } | 439 } |
420 | 440 |
421 void V8ConsoleMessage::contextDestroyed(int contextId) | 441 void V8ConsoleMessage::contextDestroyed(int contextId) |
422 { | 442 { |
423 if (contextId != m_contextId) | 443 if (contextId != m_contextId) |
424 return; | 444 return; |
(...skipping 18 matching lines...) Expand all Loading... | |
443 clear(); | 463 clear(); |
444 } | 464 } |
445 | 465 |
446 void V8ConsoleMessageStorage::addMessage(std::unique_ptr<V8ConsoleMessage> messa ge) | 466 void V8ConsoleMessageStorage::addMessage(std::unique_ptr<V8ConsoleMessage> messa ge) |
447 { | 467 { |
448 if (message->type() == ConsoleAPIType::kClear) | 468 if (message->type() == ConsoleAPIType::kClear) |
449 clear(); | 469 clear(); |
450 | 470 |
451 V8InspectorSessionImpl* session = m_debugger->sessionForContextGroup(m_conte xtGroupId); | 471 V8InspectorSessionImpl* session = m_debugger->sessionForContextGroup(m_conte xtGroupId); |
452 if (session) { | 472 if (session) { |
453 if (message->origin() == V8MessageOrigin::kConsole) | 473 if (message->origin() == V8MessageOrigin::kExternalConsole) |
454 session->consoleAgent()->messageAdded(message.get()); | 474 session->consoleAgent()->messageAdded(message.get()); |
455 else | 475 else |
456 session->runtimeAgent()->exceptionMessageAdded(message.get()); | 476 session->runtimeAgent()->messageAdded(message.get()); |
457 } | 477 } |
458 | 478 |
459 DCHECK(m_messages.size() <= maxConsoleMessageCount); | 479 DCHECK(m_messages.size() <= maxConsoleMessageCount); |
460 if (m_messages.size() == maxConsoleMessageCount) { | 480 if (m_messages.size() == maxConsoleMessageCount) { |
461 ++m_expiredCount; | 481 ++m_expiredCount; |
462 m_messages.pop_front(); | 482 m_messages.pop_front(); |
463 } | 483 } |
464 m_messages.push_back(std::move(message)); | 484 m_messages.push_back(std::move(message)); |
465 } | 485 } |
466 | 486 |
467 void V8ConsoleMessageStorage::clear() | 487 void V8ConsoleMessageStorage::clear() |
468 { | 488 { |
469 m_messages.clear(); | 489 m_messages.clear(); |
470 m_expiredCount = 0; | 490 m_expiredCount = 0; |
471 V8InspectorSessionImpl* session = m_debugger->sessionForContextGroup(m_conte xtGroupId); | 491 V8InspectorSessionImpl* session = m_debugger->sessionForContextGroup(m_conte xtGroupId); |
472 if (session) { | 492 if (session) { |
473 session->consoleAgent()->reset(); | 493 session->consoleAgent()->reset(); |
474 session->releaseObjectGroup("console"); | 494 session->releaseObjectGroup("console"); |
475 session->client()->consoleCleared(); | 495 session->client()->consoleCleared(); |
476 } | 496 } |
477 } | 497 } |
478 | 498 |
479 void V8ConsoleMessageStorage::contextDestroyed(int contextId) | 499 void V8ConsoleMessageStorage::contextDestroyed(int contextId) |
480 { | 500 { |
481 for (size_t i = 0; i < m_messages.size(); ++i) | 501 for (size_t i = 0; i < m_messages.size(); ++i) |
482 m_messages[i]->contextDestroyed(contextId); | 502 m_messages[i]->contextDestroyed(contextId); |
483 } | 503 } |
484 | 504 |
485 } // namespace blink | 505 } // namespace blink |
OLD | NEW |