summaryrefslogtreecommitdiff
path: root/deps/v8/src/inspector/v8-runtime-agent-impl.cc
diff options
context:
space:
mode:
Diffstat (limited to 'deps/v8/src/inspector/v8-runtime-agent-impl.cc')
-rw-r--r--deps/v8/src/inspector/v8-runtime-agent-impl.cc123
1 files changed, 53 insertions, 70 deletions
diff --git a/deps/v8/src/inspector/v8-runtime-agent-impl.cc b/deps/v8/src/inspector/v8-runtime-agent-impl.cc
index 9e3697cf9e..cedb637399 100644
--- a/deps/v8/src/inspector/v8-runtime-agent-impl.cc
+++ b/deps/v8/src/inspector/v8-runtime-agent-impl.cc
@@ -90,14 +90,14 @@ template <typename ProtocolCallback>
bool wrapEvaluateResultAsync(InjectedScript* injectedScript,
v8::MaybeLocal<v8::Value> maybeResultValue,
const v8::TryCatch& tryCatch,
- const String16& objectGroup, bool returnByValue,
- bool generatePreview, ProtocolCallback* callback) {
+ const String16& objectGroup, WrapMode wrapMode,
+ ProtocolCallback* callback) {
std::unique_ptr<RemoteObject> result;
Maybe<protocol::Runtime::ExceptionDetails> exceptionDetails;
Response response = injectedScript->wrapEvaluateResult(
- maybeResultValue, tryCatch, objectGroup, returnByValue, generatePreview,
- &result, &exceptionDetails);
+ maybeResultValue, tryCatch, objectGroup, wrapMode, &result,
+ &exceptionDetails);
if (response.isSuccess()) {
callback->sendSuccess(std::move(result), std::move(exceptionDetails));
return true;
@@ -110,8 +110,8 @@ void innerCallFunctionOn(
V8InspectorSessionImpl* session, InjectedScript::Scope& scope,
v8::Local<v8::Value> recv, const String16& expression,
Maybe<protocol::Array<protocol::Runtime::CallArgument>> optionalArguments,
- bool silent, bool returnByValue, bool generatePreview, bool userGesture,
- bool awaitPromise, const String16& objectGroup,
+ bool silent, WrapMode wrapMode, bool userGesture, bool awaitPromise,
+ const String16& objectGroup,
std::unique_ptr<V8RuntimeAgentImpl::CallFunctionOnCallback> callback) {
V8InspectorImpl* inspector = session->inspector();
@@ -159,7 +159,7 @@ void innerCallFunctionOn(
if (scope.tryCatch().HasCaught()) {
wrapEvaluateResultAsync(scope.injectedScript(), maybeFunctionValue,
- scope.tryCatch(), objectGroup, false, false,
+ scope.tryCatch(), objectGroup, WrapMode::kNoPreview,
callback.get());
return;
}
@@ -189,13 +189,13 @@ void innerCallFunctionOn(
if (!awaitPromise || scope.tryCatch().HasCaught()) {
wrapEvaluateResultAsync(scope.injectedScript(), maybeResultValue,
- scope.tryCatch(), objectGroup, returnByValue,
- generatePreview, callback.get());
+ scope.tryCatch(), objectGroup, wrapMode,
+ callback.get());
return;
}
scope.injectedScript()->addPromiseCallback(
- session, maybeResultValue, objectGroup, returnByValue, generatePreview,
+ session, maybeResultValue, objectGroup, wrapMode,
EvaluateCallbackWrapper<V8RuntimeAgentImpl::CallFunctionOnCallback>::wrap(
std::move(callback)));
}
@@ -261,7 +261,7 @@ void V8RuntimeAgentImpl::evaluate(
scope.allowCodeGenerationFromStrings();
v8::MaybeLocal<v8::Value> maybeResultValue;
{
- V8InspectorImpl::EvaluateScope evaluateScope(m_inspector->isolate());
+ V8InspectorImpl::EvaluateScope evaluateScope(scope);
if (timeout.isJust()) {
response = evaluateScope.setTimeout(timeout.fromJust() / 1000.0);
if (!response.isSuccess()) {
@@ -284,16 +284,17 @@ void V8RuntimeAgentImpl::evaluate(
return;
}
+ WrapMode mode = generatePreview.fromMaybe(false) ? WrapMode::kWithPreview
+ : WrapMode::kNoPreview;
+ if (returnByValue.fromMaybe(false)) mode = WrapMode::kForceValue;
if (!awaitPromise.fromMaybe(false) || scope.tryCatch().HasCaught()) {
wrapEvaluateResultAsync(scope.injectedScript(), maybeResultValue,
- scope.tryCatch(), objectGroup.fromMaybe(""),
- returnByValue.fromMaybe(false),
- generatePreview.fromMaybe(false), callback.get());
+ scope.tryCatch(), objectGroup.fromMaybe(""), mode,
+ callback.get());
return;
}
scope.injectedScript()->addPromiseCallback(
- m_session, maybeResultValue, objectGroup.fromMaybe(""),
- returnByValue.fromMaybe(false), generatePreview.fromMaybe(false),
+ m_session, maybeResultValue, objectGroup.fromMaybe(""), mode,
EvaluateCallbackWrapper<EvaluateCallback>::wrap(std::move(callback)));
}
@@ -312,9 +313,11 @@ void V8RuntimeAgentImpl::awaitPromise(
Response::Error("Could not find promise with given id"));
return;
}
+ WrapMode mode = generatePreview.fromMaybe(false) ? WrapMode::kWithPreview
+ : WrapMode::kNoPreview;
+ if (returnByValue.fromMaybe(false)) mode = WrapMode::kForceValue;
scope.injectedScript()->addPromiseCallback(
- m_session, scope.object(), scope.objectGroupName(),
- returnByValue.fromMaybe(false), generatePreview.fromMaybe(false),
+ m_session, scope.object(), scope.objectGroupName(), mode,
EvaluateCallbackWrapper<AwaitPromiseCallback>::wrap(std::move(callback)));
}
@@ -335,6 +338,9 @@ void V8RuntimeAgentImpl::callFunctionOn(
"Either ObjectId or executionContextId must be specified"));
return;
}
+ WrapMode mode = generatePreview.fromMaybe(false) ? WrapMode::kWithPreview
+ : WrapMode::kNoPreview;
+ if (returnByValue.fromMaybe(false)) mode = WrapMode::kForceValue;
if (objectId.isJust()) {
InjectedScript::ObjectScope scope(m_session, objectId.fromJust());
Response response = scope.initialize();
@@ -342,14 +348,13 @@ void V8RuntimeAgentImpl::callFunctionOn(
callback->sendFailure(response);
return;
}
- innerCallFunctionOn(
- m_session, scope, scope.object(), expression,
- std::move(optionalArguments), silent.fromMaybe(false),
- returnByValue.fromMaybe(false), generatePreview.fromMaybe(false),
- userGesture.fromMaybe(false), awaitPromise.fromMaybe(false),
- objectGroup.isJust() ? objectGroup.fromMaybe(String16())
- : scope.objectGroupName(),
- std::move(callback));
+ innerCallFunctionOn(m_session, scope, scope.object(), expression,
+ std::move(optionalArguments), silent.fromMaybe(false),
+ mode, userGesture.fromMaybe(false),
+ awaitPromise.fromMaybe(false),
+ objectGroup.isJust() ? objectGroup.fromMaybe(String16())
+ : scope.objectGroupName(),
+ std::move(callback));
} else {
int contextId = 0;
Response response =
@@ -365,12 +370,11 @@ void V8RuntimeAgentImpl::callFunctionOn(
callback->sendFailure(response);
return;
}
- innerCallFunctionOn(
- m_session, scope, scope.context()->Global(), expression,
- std::move(optionalArguments), silent.fromMaybe(false),
- returnByValue.fromMaybe(false), generatePreview.fromMaybe(false),
- userGesture.fromMaybe(false), awaitPromise.fromMaybe(false),
- objectGroup.fromMaybe(""), std::move(callback));
+ innerCallFunctionOn(m_session, scope, scope.context()->Global(), expression,
+ std::move(optionalArguments), silent.fromMaybe(false),
+ mode, userGesture.fromMaybe(false),
+ awaitPromise.fromMaybe(false),
+ objectGroup.fromMaybe(""), std::move(callback));
}
}
@@ -397,40 +401,18 @@ Response V8RuntimeAgentImpl::getProperties(
v8::Local<v8::Object> object = scope.object().As<v8::Object>();
response = scope.injectedScript()->getProperties(
object, scope.objectGroupName(), ownProperties.fromMaybe(false),
- accessorPropertiesOnly.fromMaybe(false), generatePreview.fromMaybe(false),
+ accessorPropertiesOnly.fromMaybe(false),
+ generatePreview.fromMaybe(false) ? WrapMode::kWithPreview
+ : WrapMode::kNoPreview,
result, exceptionDetails);
if (!response.isSuccess()) return response;
if (exceptionDetails->isJust() || accessorPropertiesOnly.fromMaybe(false))
return Response::OK();
- v8::Local<v8::Array> propertiesArray;
- if (!m_inspector->debugger()
- ->internalProperties(scope.context(), scope.object())
- .ToLocal(&propertiesArray)) {
- return Response::InternalError();
- }
std::unique_ptr<protocol::Array<InternalPropertyDescriptor>>
- propertiesProtocolArray =
- protocol::Array<InternalPropertyDescriptor>::create();
- for (uint32_t i = 0; i < propertiesArray->Length(); i += 2) {
- v8::Local<v8::Value> name;
- if (!propertiesArray->Get(scope.context(), i).ToLocal(&name) ||
- !name->IsString()) {
- return Response::InternalError();
- }
- v8::Local<v8::Value> value;
- if (!propertiesArray->Get(scope.context(), i + 1).ToLocal(&value))
- return Response::InternalError();
- std::unique_ptr<RemoteObject> wrappedValue;
- protocol::Response response = scope.injectedScript()->wrapObject(
- value, scope.objectGroupName(), false, false, &wrappedValue);
- if (!response.isSuccess()) return response;
- propertiesProtocolArray->addItem(
- InternalPropertyDescriptor::create()
- .setName(
- toProtocolString(m_inspector->isolate(), name.As<v8::String>()))
- .setValue(std::move(wrappedValue))
- .build());
- }
+ propertiesProtocolArray;
+ response = scope.injectedScript()->getInternalProperties(
+ object, scope.objectGroupName(), &propertiesProtocolArray);
+ if (!response.isSuccess()) return response;
if (propertiesProtocolArray->length())
*internalProperties = std::move(propertiesProtocolArray);
return Response::OK();
@@ -499,7 +481,7 @@ Response V8RuntimeAgentImpl::compileScript(
if (!isOk) {
if (scope.tryCatch().HasCaught()) {
response = scope.injectedScript()->createExceptionDetails(
- scope.tryCatch(), String16(), false, exceptionDetails);
+ scope.tryCatch(), String16(), WrapMode::kNoPreview, exceptionDetails);
if (!response.isSuccess()) return response;
return Response::OK();
} else {
@@ -577,17 +559,18 @@ void V8RuntimeAgentImpl::runScript(
return;
}
+ WrapMode mode = generatePreview.fromMaybe(false) ? WrapMode::kWithPreview
+ : WrapMode::kNoPreview;
+ if (returnByValue.fromMaybe(false)) mode = WrapMode::kForceValue;
if (!awaitPromise.fromMaybe(false) || scope.tryCatch().HasCaught()) {
wrapEvaluateResultAsync(scope.injectedScript(), maybeResultValue,
- scope.tryCatch(), objectGroup.fromMaybe(""),
- returnByValue.fromMaybe(false),
- generatePreview.fromMaybe(false), callback.get());
+ scope.tryCatch(), objectGroup.fromMaybe(""), mode,
+ callback.get());
return;
}
scope.injectedScript()->addPromiseCallback(
- m_session, maybeResultValue.ToLocalChecked(),
- objectGroup.fromMaybe(""), returnByValue.fromMaybe(false),
- generatePreview.fromMaybe(false),
+ m_session, maybeResultValue.ToLocalChecked(), objectGroup.fromMaybe(""),
+ mode,
EvaluateCallbackWrapper<RunScriptCallback>::wrap(std::move(callback)));
}
@@ -603,8 +586,8 @@ Response V8RuntimeAgentImpl::queryObjects(
v8::Local<v8::Array> resultArray = m_inspector->debugger()->queryObjects(
scope.context(), v8::Local<v8::Object>::Cast(scope.object()));
return scope.injectedScript()->wrapObject(
- resultArray, objectGroup.fromMaybe(scope.objectGroupName()), false, false,
- objects);
+ resultArray, objectGroup.fromMaybe(scope.objectGroupName()),
+ WrapMode::kNoPreview, objects);
}
Response V8RuntimeAgentImpl::globalLexicalScopeNames(