OLD | NEW |
1 /* | 1 /* |
2 * Copyright (C) 2011 Google Inc. All rights reserved. | 2 * Copyright (C) 2011 Google Inc. All rights reserved. |
3 * | 3 * |
4 * Redistribution and use in source and binary forms, with or without | 4 * Redistribution and use in source and binary forms, with or without |
5 * modification, are permitted provided that the following conditions are | 5 * modification, are permitted provided that the following conditions are |
6 * met: | 6 * met: |
7 * | 7 * |
8 * * Redistributions of source code must retain the above copyright | 8 * * Redistributions of source code must retain the above copyright |
9 * notice, this list of conditions and the following disclaimer. | 9 * notice, this list of conditions and the following disclaimer. |
10 * * Redistributions in binary form must reproduce the above | 10 * * Redistributions in binary form must reproduce the above |
(...skipping 17 matching lines...) Expand all Loading... |
28 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | 28 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
29 */ | 29 */ |
30 | 30 |
31 #include "platform/v8_inspector/V8RuntimeAgentImpl.h" | 31 #include "platform/v8_inspector/V8RuntimeAgentImpl.h" |
32 | 32 |
33 #include "platform/inspector_protocol/Values.h" | 33 #include "platform/inspector_protocol/Values.h" |
34 #include "platform/v8_inspector/InjectedScript.h" | 34 #include "platform/v8_inspector/InjectedScript.h" |
35 #include "platform/v8_inspector/InspectedContext.h" | 35 #include "platform/v8_inspector/InspectedContext.h" |
36 #include "platform/v8_inspector/RemoteObjectId.h" | 36 #include "platform/v8_inspector/RemoteObjectId.h" |
37 #include "platform/v8_inspector/V8ConsoleMessage.h" | 37 #include "platform/v8_inspector/V8ConsoleMessage.h" |
| 38 #include "platform/v8_inspector/V8Debugger.h" |
38 #include "platform/v8_inspector/V8InspectorImpl.h" | 39 #include "platform/v8_inspector/V8InspectorImpl.h" |
39 #include "platform/v8_inspector/V8InspectorSessionImpl.h" | 40 #include "platform/v8_inspector/V8InspectorSessionImpl.h" |
40 #include "platform/v8_inspector/V8StackTraceImpl.h" | 41 #include "platform/v8_inspector/V8StackTraceImpl.h" |
41 #include "platform/v8_inspector/V8StringUtil.h" | 42 #include "platform/v8_inspector/V8StringUtil.h" |
42 #include "platform/v8_inspector/public/V8InspectorClient.h" | 43 #include "platform/v8_inspector/public/V8InspectorClient.h" |
43 | 44 |
44 namespace blink { | 45 namespace blink { |
45 | 46 |
46 namespace V8RuntimeAgentImplState { | 47 namespace V8RuntimeAgentImplState { |
47 static const char customObjectFormatterEnabled[] = "customObjectFormatterEnabled
"; | 48 static const char customObjectFormatterEnabled[] = "customObjectFormatterEnabled
"; |
(...skipping 54 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
102 handler->m_callback->sendSuccess(handler->wrapObject(value), Maybe<bool>
(), Maybe<protocol::Runtime::ExceptionDetails>()); | 103 handler->m_callback->sendSuccess(handler->wrapObject(value), Maybe<bool>
(), Maybe<protocol::Runtime::ExceptionDetails>()); |
103 } | 104 } |
104 | 105 |
105 static void catchCallback(const v8::FunctionCallbackInfo<v8::Value>& info) | 106 static void catchCallback(const v8::FunctionCallbackInfo<v8::Value>& info) |
106 { | 107 { |
107 ProtocolPromiseHandler<Callback>* handler = static_cast<ProtocolPromiseH
andler<Callback>*>(info.Data().As<v8::External>()->Value()); | 108 ProtocolPromiseHandler<Callback>* handler = static_cast<ProtocolPromiseH
andler<Callback>*>(info.Data().As<v8::External>()->Value()); |
108 DCHECK(handler); | 109 DCHECK(handler); |
109 v8::Local<v8::Value> value = info.Length() > 0 ? info[0] : v8::Local<v8:
:Value>::Cast(v8::Undefined(info.GetIsolate())); | 110 v8::Local<v8::Value> value = info.Length() > 0 ? info[0] : v8::Local<v8:
:Value>::Cast(v8::Undefined(info.GetIsolate())); |
110 | 111 |
111 std::unique_ptr<protocol::Runtime::ExceptionDetails> exceptionDetails; | 112 std::unique_ptr<protocol::Runtime::ExceptionDetails> exceptionDetails; |
112 std::unique_ptr<V8StackTraceImpl> stack = handler->m_inspector->captureS
tackTraceImpl(true); | 113 std::unique_ptr<V8StackTraceImpl> stack = handler->m_inspector->debugger
()->captureStackTrace(true); |
113 if (stack) { | 114 if (stack) { |
114 exceptionDetails = protocol::Runtime::ExceptionDetails::create() | 115 exceptionDetails = protocol::Runtime::ExceptionDetails::create() |
115 .setText("Promise was rejected") | 116 .setText("Promise was rejected") |
116 .setLineNumber(!stack->isEmpty() ? stack->topLineNumber() : 0) | 117 .setLineNumber(!stack->isEmpty() ? stack->topLineNumber() : 0) |
117 .setColumnNumber(!stack->isEmpty() ? stack->topColumnNumber() :
0) | 118 .setColumnNumber(!stack->isEmpty() ? stack->topColumnNumber() :
0) |
118 .setScriptId(!stack->isEmpty() ? stack->topScriptId() : String16
()) | 119 .setScriptId(!stack->isEmpty() ? stack->topScriptId() : String16
()) |
119 .setStackTrace(stack->buildInspectorObjectImpl()) | 120 .setStackTrace(stack->buildInspectorObjectImpl()) |
120 .build(); | 121 .build(); |
121 } | 122 } |
122 handler->m_callback->sendSuccess(handler->wrapObject(value), true, std::
move(exceptionDetails)); | 123 handler->m_callback->sendSuccess(handler->wrapObject(value), true, std::
move(exceptionDetails)); |
(...skipping 78 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
201 int contextId; | 202 int contextId; |
202 if (executionContextId.isJust()) { | 203 if (executionContextId.isJust()) { |
203 contextId = executionContextId.fromJust(); | 204 contextId = executionContextId.fromJust(); |
204 } else { | 205 } else { |
205 v8::HandleScope handles(m_inspector->isolate()); | 206 v8::HandleScope handles(m_inspector->isolate()); |
206 v8::Local<v8::Context> defaultContext = m_inspector->client()->ensureDef
aultContextInGroup(m_session->contextGroupId()); | 207 v8::Local<v8::Context> defaultContext = m_inspector->client()->ensureDef
aultContextInGroup(m_session->contextGroupId()); |
207 if (defaultContext.IsEmpty()) { | 208 if (defaultContext.IsEmpty()) { |
208 callback->sendFailure("Cannot find default execution context"); | 209 callback->sendFailure("Cannot find default execution context"); |
209 return; | 210 return; |
210 } | 211 } |
211 contextId = V8InspectorImpl::contextId(defaultContext); | 212 contextId = V8Debugger::contextId(defaultContext); |
212 } | 213 } |
213 | 214 |
214 InjectedScript::ContextScope scope(errorString, m_inspector, m_session->cont
extGroupId(), contextId); | 215 InjectedScript::ContextScope scope(errorString, m_inspector, m_session->cont
extGroupId(), contextId); |
215 if (!scope.initialize()) { | 216 if (!scope.initialize()) { |
216 callback->sendFailure(*errorString); | 217 callback->sendFailure(*errorString); |
217 return; | 218 return; |
218 } | 219 } |
219 | 220 |
220 if (doNotPauseOnExceptionsAndMuteConsole.fromMaybe(false)) | 221 if (doNotPauseOnExceptionsAndMuteConsole.fromMaybe(false)) |
221 scope.ignoreExceptionsAndMuteConsole(); | 222 scope.ignoreExceptionsAndMuteConsole(); |
(...skipping 147 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
369 if (!scope.object()->IsObject()) { | 370 if (!scope.object()->IsObject()) { |
370 *errorString = "Value with given id is not an object"; | 371 *errorString = "Value with given id is not an object"; |
371 return; | 372 return; |
372 } | 373 } |
373 | 374 |
374 v8::Local<v8::Object> object = scope.object().As<v8::Object>(); | 375 v8::Local<v8::Object> object = scope.object().As<v8::Object>(); |
375 scope.injectedScript()->getProperties(errorString, object, scope.objectGroup
Name(), ownProperties.fromMaybe(false), accessorPropertiesOnly.fromMaybe(false),
generatePreview.fromMaybe(false), result, exceptionDetails); | 376 scope.injectedScript()->getProperties(errorString, object, scope.objectGroup
Name(), ownProperties.fromMaybe(false), accessorPropertiesOnly.fromMaybe(false),
generatePreview.fromMaybe(false), result, exceptionDetails); |
376 if (!errorString->isEmpty() || exceptionDetails->isJust() || accessorPropert
iesOnly.fromMaybe(false)) | 377 if (!errorString->isEmpty() || exceptionDetails->isJust() || accessorPropert
iesOnly.fromMaybe(false)) |
377 return; | 378 return; |
378 v8::Local<v8::Array> propertiesArray; | 379 v8::Local<v8::Array> propertiesArray; |
379 if (hasInternalError(errorString, !m_inspector->internalProperties(scope.con
text(), scope.object()).ToLocal(&propertiesArray))) | 380 if (hasInternalError(errorString, !m_inspector->debugger()->internalProperti
es(scope.context(), scope.object()).ToLocal(&propertiesArray))) |
380 return; | 381 return; |
381 std::unique_ptr<protocol::Array<InternalPropertyDescriptor>> propertiesProto
colArray = protocol::Array<InternalPropertyDescriptor>::create(); | 382 std::unique_ptr<protocol::Array<InternalPropertyDescriptor>> propertiesProto
colArray = protocol::Array<InternalPropertyDescriptor>::create(); |
382 for (uint32_t i = 0; i < propertiesArray->Length(); i += 2) { | 383 for (uint32_t i = 0; i < propertiesArray->Length(); i += 2) { |
383 v8::Local<v8::Value> name; | 384 v8::Local<v8::Value> name; |
384 if (hasInternalError(errorString, !propertiesArray->Get(scope.context(),
i).ToLocal(&name)) || !name->IsString()) | 385 if (hasInternalError(errorString, !propertiesArray->Get(scope.context(),
i).ToLocal(&name)) || !name->IsString()) |
385 return; | 386 return; |
386 v8::Local<v8::Value> value; | 387 v8::Local<v8::Value> value; |
387 if (hasInternalError(errorString, !propertiesArray->Get(scope.context(),
i + 1).ToLocal(&value))) | 388 if (hasInternalError(errorString, !propertiesArray->Get(scope.context(),
i + 1).ToLocal(&value))) |
388 return; | 389 return; |
389 std::unique_ptr<RemoteObject> wrappedValue = scope.injectedScript()->wra
pObject(errorString, value, scope.objectGroupName()); | 390 std::unique_ptr<RemoteObject> wrappedValue = scope.injectedScript()->wra
pObject(errorString, value, scope.objectGroupName()); |
(...skipping 202 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
592 reportMessage(message, true); | 593 reportMessage(message, true); |
593 } | 594 } |
594 | 595 |
595 void V8RuntimeAgentImpl::reportMessage(V8ConsoleMessage* message, bool generateP
review) | 596 void V8RuntimeAgentImpl::reportMessage(V8ConsoleMessage* message, bool generateP
review) |
596 { | 597 { |
597 message->reportToFrontend(&m_frontend, m_session, generatePreview); | 598 message->reportToFrontend(&m_frontend, m_session, generatePreview); |
598 m_frontend.flush(); | 599 m_frontend.flush(); |
599 } | 600 } |
600 | 601 |
601 } // namespace blink | 602 } // namespace blink |
OLD | NEW |