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

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

Issue 2143483004: [DevTools] Fix v8_inspector compilation with node (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: 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 String messageSourceValue(MessageSource source) 20 String16 messageSourceValue(MessageSource source)
21 { 21 {
22 switch (source) { 22 switch (source) {
23 case XMLMessageSource: return protocol::Console::ConsoleMessage::SourceEnum: :Xml; 23 case XMLMessageSource: return protocol::Console::ConsoleMessage::SourceEnum: :Xml;
24 case JSMessageSource: return protocol::Console::ConsoleMessage::SourceEnum:: Javascript; 24 case JSMessageSource: return protocol::Console::ConsoleMessage::SourceEnum:: Javascript;
25 case NetworkMessageSource: return protocol::Console::ConsoleMessage::SourceE num::Network; 25 case NetworkMessageSource: return protocol::Console::ConsoleMessage::SourceE num::Network;
26 case ConsoleAPIMessageSource: return protocol::Console::ConsoleMessage::Sour ceEnum::ConsoleApi; 26 case ConsoleAPIMessageSource: return protocol::Console::ConsoleMessage::Sour ceEnum::ConsoleApi;
27 case StorageMessageSource: return protocol::Console::ConsoleMessage::SourceE num::Storage; 27 case StorageMessageSource: return protocol::Console::ConsoleMessage::SourceE num::Storage;
28 case AppCacheMessageSource: return protocol::Console::ConsoleMessage::Source Enum::Appcache; 28 case AppCacheMessageSource: return protocol::Console::ConsoleMessage::Source Enum::Appcache;
29 case RenderingMessageSource: return protocol::Console::ConsoleMessage::Sourc eEnum::Rendering; 29 case RenderingMessageSource: return protocol::Console::ConsoleMessage::Sourc eEnum::Rendering;
30 case SecurityMessageSource: return protocol::Console::ConsoleMessage::Source Enum::Security; 30 case SecurityMessageSource: return protocol::Console::ConsoleMessage::Source Enum::Security;
31 case OtherMessageSource: return protocol::Console::ConsoleMessage::SourceEnu m::Other; 31 case OtherMessageSource: return protocol::Console::ConsoleMessage::SourceEnu m::Other;
32 case DeprecationMessageSource: return protocol::Console::ConsoleMessage::Sou rceEnum::Deprecation; 32 case DeprecationMessageSource: return protocol::Console::ConsoleMessage::Sou rceEnum::Deprecation;
33 } 33 }
34 return protocol::Console::ConsoleMessage::SourceEnum::Other; 34 return protocol::Console::ConsoleMessage::SourceEnum::Other;
35 } 35 }
36 36
37 37
38 String messageTypeValue(MessageType type) 38 String16 messageTypeValue(MessageType type)
39 { 39 {
40 switch (type) { 40 switch (type) {
41 case LogMessageType: return protocol::Console::ConsoleMessage::TypeEnum::Log ; 41 case LogMessageType: return protocol::Console::ConsoleMessage::TypeEnum::Log ;
42 case ClearMessageType: return protocol::Console::ConsoleMessage::TypeEnum::C lear; 42 case ClearMessageType: return protocol::Console::ConsoleMessage::TypeEnum::C lear;
43 case DirMessageType: return protocol::Console::ConsoleMessage::TypeEnum::Dir ; 43 case DirMessageType: return protocol::Console::ConsoleMessage::TypeEnum::Dir ;
44 case DirXMLMessageType: return protocol::Console::ConsoleMessage::TypeEnum:: Dirxml; 44 case DirXMLMessageType: return protocol::Console::ConsoleMessage::TypeEnum:: Dirxml;
45 case TableMessageType: return protocol::Console::ConsoleMessage::TypeEnum::T able; 45 case TableMessageType: return protocol::Console::ConsoleMessage::TypeEnum::T able;
46 case TraceMessageType: return protocol::Console::ConsoleMessage::TypeEnum::T race; 46 case TraceMessageType: return protocol::Console::ConsoleMessage::TypeEnum::T race;
47 case StartGroupMessageType: return protocol::Console::ConsoleMessage::TypeEn um::StartGroup; 47 case StartGroupMessageType: return protocol::Console::ConsoleMessage::TypeEn um::StartGroup;
48 case StartGroupCollapsedMessageType: return protocol::Console::ConsoleMessag e::TypeEnum::StartGroupCollapsed; 48 case StartGroupCollapsedMessageType: return protocol::Console::ConsoleMessag e::TypeEnum::StartGroupCollapsed;
49 case EndGroupMessageType: return protocol::Console::ConsoleMessage::TypeEnum ::EndGroup; 49 case EndGroupMessageType: return protocol::Console::ConsoleMessage::TypeEnum ::EndGroup;
50 case AssertMessageType: return protocol::Console::ConsoleMessage::TypeEnum:: Assert; 50 case AssertMessageType: return protocol::Console::ConsoleMessage::TypeEnum:: Assert;
51 case TimeEndMessageType: return protocol::Console::ConsoleMessage::TypeEnum: :Log; 51 case TimeEndMessageType: return protocol::Console::ConsoleMessage::TypeEnum: :Log;
52 case CountMessageType: return protocol::Console::ConsoleMessage::TypeEnum::L og; 52 case CountMessageType: return protocol::Console::ConsoleMessage::TypeEnum::L og;
53 } 53 }
54 return protocol::Console::ConsoleMessage::TypeEnum::Log; 54 return protocol::Console::ConsoleMessage::TypeEnum::Log;
55 } 55 }
56 56
57 String messageLevelValue(MessageLevel level) 57 String16 messageLevelValue(MessageLevel level)
58 { 58 {
59 switch (level) { 59 switch (level) {
60 case DebugMessageLevel: return protocol::Console::ConsoleMessage::LevelEnum: :Debug; 60 case DebugMessageLevel: return protocol::Console::ConsoleMessage::LevelEnum: :Debug;
61 case LogMessageLevel: return protocol::Console::ConsoleMessage::LevelEnum::L og; 61 case LogMessageLevel: return protocol::Console::ConsoleMessage::LevelEnum::L og;
62 case WarningMessageLevel: return protocol::Console::ConsoleMessage::LevelEnu m::Warning; 62 case WarningMessageLevel: return protocol::Console::ConsoleMessage::LevelEnu m::Warning;
63 case ErrorMessageLevel: return protocol::Console::ConsoleMessage::LevelEnum: :Error; 63 case ErrorMessageLevel: return protocol::Console::ConsoleMessage::LevelEnum: :Error;
64 case InfoMessageLevel: return protocol::Console::ConsoleMessage::LevelEnum:: Info; 64 case InfoMessageLevel: return protocol::Console::ConsoleMessage::LevelEnum:: Info;
65 } 65 }
66 return protocol::Console::ConsoleMessage::LevelEnum::Log; 66 return protocol::Console::ConsoleMessage::LevelEnum::Log;
67 } 67 }
(...skipping 66 matching lines...) Expand 10 before | Expand all | Expand 10 after
134 return append(stringValue); 134 return append(stringValue);
135 } 135 }
136 v8::Local<v8::String> stringValue; 136 v8::Local<v8::String> stringValue;
137 if (!value->ToString(m_isolate->GetCurrentContext()).ToLocal(&stringValu e)) 137 if (!value->ToString(m_isolate->GetCurrentContext()).ToLocal(&stringValu e))
138 return false; 138 return false;
139 return append(stringValue); 139 return append(stringValue);
140 } 140 }
141 141
142 bool append(v8::Local<v8::Array> array) 142 bool append(v8::Local<v8::Array> array)
143 { 143 {
144 if (m_visitedArrays.contains(array)) 144 for (const auto& it : m_visitedArrays) {
145 return true; 145 if (it == array)
146 return true;
147 }
146 uint32_t length = array->Length(); 148 uint32_t length = array->Length();
147 if (length > m_arrayLimit) 149 if (length > m_arrayLimit)
148 return false; 150 return false;
149 if (m_visitedArrays.size() > maxStackDepthLimit) 151 if (m_visitedArrays.size() > maxStackDepthLimit)
150 return false; 152 return false;
151 153
152 bool result = true; 154 bool result = true;
153 m_arrayLimit -= length; 155 m_arrayLimit -= length;
154 m_visitedArrays.append(array); 156 m_visitedArrays.push_back(array);
155 for (uint32_t i = 0; i < length; ++i) { 157 for (uint32_t i = 0; i < length; ++i) {
156 if (i) 158 if (i)
157 m_builder.append(','); 159 m_builder.append(',');
158 if (!append(array->Get(i), IgnoreNull | IgnoreUndefined)) { 160 if (!append(array->Get(i), IgnoreNull | IgnoreUndefined)) {
159 result = false; 161 result = false;
160 break; 162 break;
161 } 163 }
162 } 164 }
163 m_visitedArrays.removeLast(); 165 m_visitedArrays.pop_back();
164 return result; 166 return result;
165 } 167 }
166 168
167 bool append(v8::Local<v8::Symbol> symbol) 169 bool append(v8::Local<v8::Symbol> symbol)
168 { 170 {
169 m_builder.append("Symbol("); 171 m_builder.append("Symbol(");
170 bool result = append(symbol->Name(), IgnoreUndefined); 172 bool result = append(symbol->Name(), IgnoreUndefined);
171 m_builder.append(')'); 173 m_builder.append(')');
172 return result; 174 return result;
173 } 175 }
(...skipping 10 matching lines...) Expand all
184 String16 toString() 186 String16 toString()
185 { 187 {
186 if (m_tryCatch.HasCaught()) 188 if (m_tryCatch.HasCaught())
187 return String16(); 189 return String16();
188 return m_builder.toString(); 190 return m_builder.toString();
189 } 191 }
190 192
191 uint32_t m_arrayLimit; 193 uint32_t m_arrayLimit;
192 v8::Isolate* m_isolate; 194 v8::Isolate* m_isolate;
193 String16Builder m_builder; 195 String16Builder m_builder;
194 Vector<v8::Local<v8::Array>> m_visitedArrays; 196 std::vector<v8::Local<v8::Array>> m_visitedArrays;
195 v8::TryCatch m_tryCatch; 197 v8::TryCatch m_tryCatch;
196 }; 198 };
197 199
198 } // namespace 200 } // namespace
199 201
200 V8ConsoleMessage::V8ConsoleMessage( 202 V8ConsoleMessage::V8ConsoleMessage(
201 double timestamp, 203 double timestamp,
202 MessageSource source, 204 MessageSource source,
203 MessageLevel level, 205 MessageLevel level,
204 const String16& message, 206 const String16& message,
(...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after
237 protocol::Console::ConsoleMessage::create() 239 protocol::Console::ConsoleMessage::create()
238 .setSource(messageSourceValue(m_source)) 240 .setSource(messageSourceValue(m_source))
239 .setLevel(messageLevelValue(m_level)) 241 .setLevel(messageLevelValue(m_level))
240 .setText(m_message) 242 .setText(m_message)
241 .setTimestamp(m_timestamp / 1000) // TODO(dgozman): migrate this to mill iseconds. 243 .setTimestamp(m_timestamp / 1000) // TODO(dgozman): migrate this to mill iseconds.
242 .build(); 244 .build();
243 result->setType(messageTypeValue(m_type)); 245 result->setType(messageTypeValue(m_type));
244 result->setLine(static_cast<int>(m_lineNumber)); 246 result->setLine(static_cast<int>(m_lineNumber));
245 result->setColumn(static_cast<int>(m_columnNumber)); 247 result->setColumn(static_cast<int>(m_columnNumber));
246 if (m_scriptId) 248 if (m_scriptId)
247 result->setScriptId(String::number(m_scriptId)); 249 result->setScriptId(String16::number(m_scriptId));
248 result->setUrl(m_url); 250 result->setUrl(m_url);
249 if (m_source == NetworkMessageSource && !m_requestIdentifier.isEmpty()) 251 if (m_source == NetworkMessageSource && !m_requestIdentifier.isEmpty())
250 result->setNetworkRequestId(m_requestIdentifier); 252 result->setNetworkRequestId(m_requestIdentifier);
251 if (m_contextId) 253 if (m_contextId)
252 result->setExecutionContextId(m_contextId); 254 result->setExecutionContextId(m_contextId);
253 std::unique_ptr<protocol::Array<protocol::Runtime::RemoteObject>> args = wra pArguments(session, generatePreview); 255 std::unique_ptr<protocol::Array<protocol::Runtime::RemoteObject>> args = wra pArguments(session, generatePreview);
254 if (args) 256 if (args)
255 result->setParameters(std::move(args)); 257 result->setParameters(std::move(args));
256 if (m_stackTrace) 258 if (m_stackTrace)
257 result->setStack(m_stackTrace->buildInspectorObject()); 259 result->setStack(m_stackTrace->buildInspectorObject());
(...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after
296 { 298 {
297 if (m_origin == V8MessageOrigin::kException) { 299 if (m_origin == V8MessageOrigin::kException) {
298 // TODO(dgozman): unify with InjectedScript::createExceptionDetails. 300 // TODO(dgozman): unify with InjectedScript::createExceptionDetails.
299 std::unique_ptr<protocol::Runtime::ExceptionDetails> details = protocol: :Runtime::ExceptionDetails::create().setText(m_message).build(); 301 std::unique_ptr<protocol::Runtime::ExceptionDetails> details = protocol: :Runtime::ExceptionDetails::create().setText(m_message).build();
300 details->setUrl(m_url); 302 details->setUrl(m_url);
301 if (m_lineNumber) 303 if (m_lineNumber)
302 details->setLineNumber(static_cast<int>(m_lineNumber) - 1); 304 details->setLineNumber(static_cast<int>(m_lineNumber) - 1);
303 if (m_columnNumber) 305 if (m_columnNumber)
304 details->setColumnNumber(static_cast<int>(m_columnNumber) - 1); 306 details->setColumnNumber(static_cast<int>(m_columnNumber) - 1);
305 if (m_scriptId) 307 if (m_scriptId)
306 details->setScriptId(String::number(m_scriptId)); 308 details->setScriptId(String16::number(m_scriptId));
307 if (m_stackTrace) 309 if (m_stackTrace)
308 details->setStack(m_stackTrace->buildInspectorObject()); 310 details->setStack(m_stackTrace->buildInspectorObject());
309 311
310 std::unique_ptr<protocol::Runtime::RemoteObject> exception = wrapExcepti on(session, generatePreview); 312 std::unique_ptr<protocol::Runtime::RemoteObject> exception = wrapExcepti on(session, generatePreview);
311 313
312 if (exception) 314 if (exception)
313 frontend->exceptionThrown(m_exceptionId, m_timestamp, std::move(deta ils), std::move(exception), m_contextId); 315 frontend->exceptionThrown(m_exceptionId, m_timestamp, std::move(deta ils), std::move(exception), m_contextId);
314 else 316 else
315 frontend->exceptionThrown(m_exceptionId, m_timestamp, std::move(deta ils)); 317 frontend->exceptionThrown(m_exceptionId, m_timestamp, std::move(deta ils));
316 return; 318 return;
(...skipping 148 matching lines...) Expand 10 before | Expand all | Expand 10 after
465 } 467 }
466 } 468 }
467 469
468 void V8ConsoleMessageStorage::contextDestroyed(int contextId) 470 void V8ConsoleMessageStorage::contextDestroyed(int contextId)
469 { 471 {
470 for (size_t i = 0; i < m_messages.size(); ++i) 472 for (size_t i = 0; i < m_messages.size(); ++i)
471 m_messages[i]->contextDestroyed(contextId); 473 m_messages[i]->contextDestroyed(contextId);
472 } 474 }
473 475
474 } // namespace blink 476 } // namespace blink
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698