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/ScriptCallStack.h" | |
8 #include "bindings/core/v8/ScriptValue.h" | 7 #include "bindings/core/v8/ScriptValue.h" |
9 #include "bindings/core/v8/SourceLocation.h" | 8 #include "bindings/core/v8/SourceLocation.h" |
10 #include "core/inspector/ScriptArguments.h" | 9 #include "core/inspector/ScriptArguments.h" |
11 #include "wtf/CurrentTime.h" | 10 #include "wtf/CurrentTime.h" |
12 #include "wtf/PassOwnPtr.h" | 11 #include "wtf/PassOwnPtr.h" |
13 | 12 |
14 namespace blink { | 13 namespace blink { |
15 | 14 |
16 unsigned nextMessageId() | 15 unsigned nextMessageId() |
17 { | 16 { |
18 struct MessageId { | 17 struct MessageId { |
19 MessageId() : value(0) { } | 18 MessageId() : value(0) { } |
20 unsigned value; | 19 unsigned value; |
21 }; | 20 }; |
22 | 21 |
23 DEFINE_THREAD_SAFE_STATIC_LOCAL(WTF::ThreadSpecific<MessageId>, messageId, n
ew WTF::ThreadSpecific<MessageId>); | 22 DEFINE_THREAD_SAFE_STATIC_LOCAL(WTF::ThreadSpecific<MessageId>, messageId, n
ew WTF::ThreadSpecific<MessageId>); |
24 return ++messageId->value; | 23 return ++messageId->value; |
25 } | 24 } |
26 | 25 |
27 // static | 26 // static |
28 ConsoleMessage* ConsoleMessage::create(MessageSource source, MessageLevel level,
const String& message, const String& url, unsigned lineNumber, unsigned columnN
umber, PassRefPtr<ScriptCallStack> passCallStack, int scriptId, ScriptArguments*
arguments) | |
29 { | |
30 RefPtr<ScriptCallStack> callStack = passCallStack; | |
31 if (callStack && !callStack->isEmpty() && (!scriptId || !lineNumber)) | |
32 return new ConsoleMessage(source, level, message, callStack->topSourceUR
L(), callStack->topLineNumber(), callStack->topColumnNumber(), callStack->copySt
ackTrace(), 0, arguments); | |
33 return new ConsoleMessage(source, level, message, url, lineNumber, columnNum
ber, callStack ? callStack->copyStackTrace() : nullptr, scriptId, arguments); | |
34 } | |
35 | |
36 // static | |
37 ConsoleMessage* ConsoleMessage::create(MessageSource source, MessageLevel level,
const String& message, const String& url, unsigned lineNumber, unsigned columnN
umber) | |
38 { | |
39 return ConsoleMessage::create(source, level, message, url, lineNumber, colum
nNumber, nullptr, 0); | |
40 } | |
41 | |
42 // static | |
43 ConsoleMessage* ConsoleMessage::createWithCallStack(MessageSource source, Messag
eLevel level, const String& message, const String& url, unsigned lineNumber, uns
igned columnNumber) | |
44 { | |
45 return ConsoleMessage::create(source, level, message, url, lineNumber, colum
nNumber, ScriptCallStack::captureForConsole(), 0); | |
46 } | |
47 | |
48 // static | |
49 ConsoleMessage* ConsoleMessage::create(MessageSource source, MessageLevel level,
const String& message) | |
50 { | |
51 return ConsoleMessage::createWithCallStack(source, level, message, String(),
0, 0); | |
52 } | |
53 | |
54 // static | |
55 ConsoleMessage* ConsoleMessage::createForRequest(MessageSource source, MessageLe
vel level, const String& message, const String& url, unsigned long requestIdenti
fier) | 27 ConsoleMessage* ConsoleMessage::createForRequest(MessageSource source, MessageLe
vel level, const String& message, const String& url, unsigned long requestIdenti
fier) |
56 { | 28 { |
57 ConsoleMessage* consoleMessage = ConsoleMessage::createWithCallStack(source,
level, message, url, 0, 0); | 29 ConsoleMessage* consoleMessage = ConsoleMessage::create(source, level, messa
ge, SourceLocation::capture(url, 0, 0)); |
58 consoleMessage->m_requestIdentifier = requestIdentifier; | 30 consoleMessage->m_requestIdentifier = requestIdentifier; |
59 return consoleMessage; | 31 return consoleMessage; |
60 } | 32 } |
61 | 33 |
62 // static | 34 // static |
63 ConsoleMessage* ConsoleMessage::createForConsoleAPI(MessageLevel level, MessageT
ype type, const String& message, ScriptArguments* arguments) | 35 ConsoleMessage* ConsoleMessage::createForConsoleAPI(MessageLevel level, MessageT
ype type, const String& message, ScriptArguments* arguments) |
64 { | 36 { |
65 ConsoleMessage* consoleMessage = ConsoleMessage::create(ConsoleAPIMessageSou
rce, level, message, String(), 0, 0, ScriptCallStack::captureForConsole(), 0, ar
guments); | 37 ConsoleMessage* consoleMessage = ConsoleMessage::create(ConsoleAPIMessageSou
rce, level, message, SourceLocation::capture(), arguments); |
66 consoleMessage->m_type = type; | 38 consoleMessage->m_type = type; |
67 return consoleMessage; | 39 return consoleMessage; |
68 } | 40 } |
69 | 41 |
70 // static | 42 // static |
71 ConsoleMessage* ConsoleMessage::create(MessageSource source, MessageLevel level,
const String& message, PassOwnPtr<SourceLocation> location, ScriptArguments* ar
guments) | 43 ConsoleMessage* ConsoleMessage::create(MessageSource source, MessageLevel level,
const String& message, PassOwnPtr<SourceLocation> location, ScriptArguments* ar
guments) |
72 { | 44 { |
73 if (!location) | 45 return new ConsoleMessage(source, level, message, std::move(location), argum
ents); |
74 return new ConsoleMessage(source, level, message, String(), 0, 0, nullpt
r, 0, arguments); | |
75 return new ConsoleMessage(source, level, message, location->url(), location-
>lineNumber(), location->columnNumber(), location->takeStackTrace(), location->s
criptId(), arguments); | |
76 } | 46 } |
77 | 47 |
78 // static | 48 // static |
79 ConsoleMessage* ConsoleMessage::create(MessageSource source, MessageLevel level,
const String& message, const String& url, unsigned lineNumber, unsigned columnN
umber, std::unique_ptr<V8StackTrace> stackTrace, int scriptId, ScriptArguments*
arguments) | 49 ConsoleMessage* ConsoleMessage::create(MessageSource source, MessageLevel level,
const String& message) |
80 { | 50 { |
81 return new ConsoleMessage(source, level, message, url, lineNumber, columnNum
ber, std::move(stackTrace), scriptId, arguments); | 51 return ConsoleMessage::create(source, level, message, SourceLocation::captur
e()); |
82 } | 52 } |
83 | 53 |
84 ConsoleMessage::ConsoleMessage(MessageSource source, | 54 ConsoleMessage::ConsoleMessage(MessageSource source, |
85 MessageLevel level, | 55 MessageLevel level, |
86 const String& message, | 56 const String& message, |
87 const String& url, | 57 PassOwnPtr<SourceLocation> location, |
88 unsigned lineNumber, | |
89 unsigned columnNumber, | |
90 std::unique_ptr<V8StackTrace> stackTrace, | |
91 int scriptId, | |
92 ScriptArguments* arguments) | 58 ScriptArguments* arguments) |
93 : m_source(source) | 59 : m_source(source) |
94 , m_level(level) | 60 , m_level(level) |
95 , m_type(LogMessageType) | 61 , m_type(LogMessageType) |
96 , m_message(message) | 62 , m_message(message) |
97 , m_scriptId(scriptId) | 63 , m_location(std::move(location)) |
98 , m_url(url) | |
99 , m_lineNumber(lineNumber) | |
100 , m_columnNumber(columnNumber) | |
101 , m_stackTrace(std::move(stackTrace)) | |
102 , m_scriptArguments(arguments) | 64 , m_scriptArguments(arguments) |
103 , m_requestIdentifier(0) | 65 , m_requestIdentifier(0) |
104 , m_timestamp(WTF::currentTime()) | 66 , m_timestamp(WTF::currentTime()) |
105 , m_messageId(0) | 67 , m_messageId(0) |
106 , m_relatedMessageId(0) | 68 , m_relatedMessageId(0) |
107 { | 69 { |
108 } | 70 } |
109 | 71 |
110 ConsoleMessage::~ConsoleMessage() | 72 ConsoleMessage::~ConsoleMessage() |
111 { | 73 { |
112 } | 74 } |
113 | 75 |
114 MessageType ConsoleMessage::type() const | 76 MessageType ConsoleMessage::type() const |
115 { | 77 { |
116 return m_type; | 78 return m_type; |
117 } | 79 } |
118 | 80 |
119 int ConsoleMessage::scriptId() const | 81 SourceLocation* ConsoleMessage::location() const |
120 { | 82 { |
121 return m_scriptId; | 83 return m_location.get(); |
122 } | |
123 | |
124 const String& ConsoleMessage::url() const | |
125 { | |
126 return m_url; | |
127 } | |
128 | |
129 unsigned ConsoleMessage::lineNumber() const | |
130 { | |
131 return m_lineNumber; | |
132 } | |
133 | |
134 unsigned ConsoleMessage::columnNumber() const | |
135 { | |
136 return m_columnNumber; | |
137 } | |
138 | |
139 V8StackTrace* ConsoleMessage::stackTrace() const | |
140 { | |
141 return m_stackTrace.get(); | |
142 } | 84 } |
143 | 85 |
144 ScriptArguments* ConsoleMessage::scriptArguments() const | 86 ScriptArguments* ConsoleMessage::scriptArguments() const |
145 { | 87 { |
146 return m_scriptArguments; | 88 return m_scriptArguments; |
147 } | 89 } |
148 | 90 |
149 unsigned long ConsoleMessage::requestIdentifier() const | 91 unsigned long ConsoleMessage::requestIdentifier() const |
150 { | 92 { |
151 return m_requestIdentifier; | 93 return m_requestIdentifier; |
(...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
195 return m_scriptArguments->argumentCount(); | 137 return m_scriptArguments->argumentCount(); |
196 return 0; | 138 return 0; |
197 } | 139 } |
198 | 140 |
199 DEFINE_TRACE(ConsoleMessage) | 141 DEFINE_TRACE(ConsoleMessage) |
200 { | 142 { |
201 visitor->trace(m_scriptArguments); | 143 visitor->trace(m_scriptArguments); |
202 } | 144 } |
203 | 145 |
204 } // namespace blink | 146 } // namespace blink |
OLD | NEW |