| OLD | NEW |
| 1 // Copyright 2014 The Chromium Authors. All rights reserved. | 1 // Copyright 2014 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 "core/inspector/ConsoleMessage.h" | 5 #include "core/inspector/ConsoleMessage.h" |
| 6 | 6 |
| 7 #include "bindings/core/v8/ScriptValue.h" | |
| 8 #include "bindings/core/v8/SourceLocation.h" | 7 #include "bindings/core/v8/SourceLocation.h" |
| 9 #include "core/inspector/ScriptArguments.h" | |
| 10 #include "wtf/CurrentTime.h" | 8 #include "wtf/CurrentTime.h" |
| 11 #include <memory> | 9 #include <memory> |
| 12 | 10 |
| 13 namespace blink { | 11 namespace blink { |
| 14 | 12 |
| 15 unsigned nextMessageId() | |
| 16 { | |
| 17 struct MessageId { | |
| 18 MessageId() : value(0) { } | |
| 19 unsigned value; | |
| 20 }; | |
| 21 | |
| 22 DEFINE_THREAD_SAFE_STATIC_LOCAL(WTF::ThreadSpecific<MessageId>, messageId, n
ew WTF::ThreadSpecific<MessageId>); | |
| 23 return ++messageId->value; | |
| 24 } | |
| 25 | |
| 26 // static | 13 // static |
| 27 ConsoleMessage* ConsoleMessage::createForRequest(MessageSource source, MessageLe
vel level, const String& message, const String& url, unsigned long requestIdenti
fier) | 14 ConsoleMessage* ConsoleMessage::createForRequest(MessageSource source, MessageLe
vel level, const String& message, const String& url, unsigned long requestIdenti
fier) |
| 28 { | 15 { |
| 29 ConsoleMessage* consoleMessage = ConsoleMessage::create(source, level, messa
ge, SourceLocation::capture(url, 0, 0)); | 16 ConsoleMessage* consoleMessage = ConsoleMessage::create(source, level, messa
ge, SourceLocation::capture(url, 0, 0)); |
| 30 consoleMessage->m_requestIdentifier = requestIdentifier; | 17 consoleMessage->m_requestIdentifier = requestIdentifier; |
| 31 return consoleMessage; | 18 return consoleMessage; |
| 32 } | 19 } |
| 33 | 20 |
| 34 // static | 21 ConsoleMessage* ConsoleMessage::create(MessageSource source, MessageLevel level,
const String& message, std::unique_ptr<SourceLocation> location) |
| 35 ConsoleMessage* ConsoleMessage::createForConsoleAPI(MessageLevel level, MessageT
ype type, const String& message, ScriptArguments* arguments) | |
| 36 { | 22 { |
| 37 ConsoleMessage* consoleMessage = ConsoleMessage::create(ConsoleAPIMessageSou
rce, level, message, SourceLocation::capture(), arguments); | 23 return new ConsoleMessage(source, level, message, std::move(location)); |
| 38 consoleMessage->m_type = type; | |
| 39 return consoleMessage; | |
| 40 } | 24 } |
| 41 | 25 |
| 42 // static | 26 // static |
| 43 ConsoleMessage* ConsoleMessage::create(MessageSource source, MessageLevel level,
const String& message, std::unique_ptr<SourceLocation> location, ScriptArgument
s* arguments) | |
| 44 { | |
| 45 return new ConsoleMessage(source, level, message, std::move(location), argum
ents); | |
| 46 } | |
| 47 | |
| 48 // static | |
| 49 ConsoleMessage* ConsoleMessage::create(MessageSource source, MessageLevel level,
const String& message) | 27 ConsoleMessage* ConsoleMessage::create(MessageSource source, MessageLevel level,
const String& message) |
| 50 { | 28 { |
| 51 return ConsoleMessage::create(source, level, message, SourceLocation::captur
e()); | 29 return ConsoleMessage::create(source, level, message, SourceLocation::captur
e()); |
| 52 } | 30 } |
| 53 | 31 |
| 54 ConsoleMessage::ConsoleMessage(MessageSource source, | 32 ConsoleMessage::ConsoleMessage(MessageSource source, |
| 55 MessageLevel level, | 33 MessageLevel level, |
| 56 const String& message, | 34 const String& message, |
| 57 std::unique_ptr<SourceLocation> location, | 35 std::unique_ptr<SourceLocation> location) |
| 58 ScriptArguments* arguments) | |
| 59 : m_source(source) | 36 : m_source(source) |
| 60 , m_level(level) | 37 , m_level(level) |
| 61 , m_type(LogMessageType) | |
| 62 , m_message(message) | 38 , m_message(message) |
| 63 , m_location(std::move(location)) | 39 , m_location(std::move(location)) |
| 64 , m_scriptArguments(arguments) | |
| 65 , m_requestIdentifier(0) | 40 , m_requestIdentifier(0) |
| 66 , m_timestamp(WTF::currentTime()) | 41 , m_timestamp(WTF::currentTime()) |
| 67 , m_messageId(0) | |
| 68 , m_relatedMessageId(0) | |
| 69 { | 42 { |
| 70 } | 43 } |
| 71 | 44 |
| 72 ConsoleMessage::~ConsoleMessage() | 45 ConsoleMessage::~ConsoleMessage() |
| 73 { | 46 { |
| 74 } | 47 } |
| 75 | 48 |
| 76 MessageType ConsoleMessage::type() const | |
| 77 { | |
| 78 return m_type; | |
| 79 } | |
| 80 | |
| 81 SourceLocation* ConsoleMessage::location() const | 49 SourceLocation* ConsoleMessage::location() const |
| 82 { | 50 { |
| 83 return m_location.get(); | 51 return m_location.get(); |
| 84 } | 52 } |
| 85 | 53 |
| 86 ScriptArguments* ConsoleMessage::scriptArguments() const | |
| 87 { | |
| 88 return m_scriptArguments; | |
| 89 } | |
| 90 | |
| 91 unsigned long ConsoleMessage::requestIdentifier() const | 54 unsigned long ConsoleMessage::requestIdentifier() const |
| 92 { | 55 { |
| 93 return m_requestIdentifier; | 56 return m_requestIdentifier; |
| 94 } | 57 } |
| 95 | 58 |
| 96 double ConsoleMessage::timestamp() const | 59 double ConsoleMessage::timestamp() const |
| 97 { | 60 { |
| 98 return m_timestamp; | 61 return m_timestamp; |
| 99 } | 62 } |
| 100 | 63 |
| 101 unsigned ConsoleMessage::assignMessageId() | |
| 102 { | |
| 103 if (!m_messageId) | |
| 104 m_messageId = nextMessageId(); | |
| 105 return m_messageId; | |
| 106 } | |
| 107 | |
| 108 MessageSource ConsoleMessage::source() const | 64 MessageSource ConsoleMessage::source() const |
| 109 { | 65 { |
| 110 return m_source; | 66 return m_source; |
| 111 } | 67 } |
| 112 | 68 |
| 113 MessageLevel ConsoleMessage::level() const | 69 MessageLevel ConsoleMessage::level() const |
| 114 { | 70 { |
| 115 return m_level; | 71 return m_level; |
| 116 } | 72 } |
| 117 | 73 |
| 118 const String& ConsoleMessage::message() const | 74 const String& ConsoleMessage::message() const |
| 119 { | 75 { |
| 120 return m_message; | 76 return m_message; |
| 121 } | 77 } |
| 122 | 78 |
| 123 void ConsoleMessage::frameWindowDiscarded(LocalDOMWindow* window) | |
| 124 { | |
| 125 if (!m_scriptArguments) | |
| 126 return; | |
| 127 if (m_scriptArguments->getScriptState()->domWindow() != window) | |
| 128 return; | |
| 129 if (!m_message) | |
| 130 m_message = "<message collected>"; | |
| 131 m_scriptArguments.clear(); | |
| 132 } | |
| 133 | |
| 134 unsigned ConsoleMessage::argumentCount() | |
| 135 { | |
| 136 if (m_scriptArguments) | |
| 137 return m_scriptArguments->argumentCount(); | |
| 138 return 0; | |
| 139 } | |
| 140 | |
| 141 DEFINE_TRACE(ConsoleMessage) | 79 DEFINE_TRACE(ConsoleMessage) |
| 142 { | 80 { |
| 143 visitor->trace(m_scriptArguments); | |
| 144 } | 81 } |
| 145 | 82 |
| 146 } // namespace blink | 83 } // namespace blink |
| OLD | NEW |