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

Unified Diff: third_party/WebKit/Source/platform/v8_inspector/InjectedScript.cpp

Issue 1888813003: [DevTools] Move InjectedScript.lastResult to native (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 4 years, 8 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 side-by-side diff with in-line comments
Download patch
Index: third_party/WebKit/Source/platform/v8_inspector/InjectedScript.cpp
diff --git a/third_party/WebKit/Source/platform/v8_inspector/InjectedScript.cpp b/third_party/WebKit/Source/platform/v8_inspector/InjectedScript.cpp
index 395c11b7e68d8ffabcc7365858668178fcd498b8..ad9b95bda32d49c4319257da68ac2b4fc734c6ad 100644
--- a/third_party/WebKit/Source/platform/v8_inspector/InjectedScript.cpp
+++ b/third_party/WebKit/Source/platform/v8_inspector/InjectedScript.cpp
@@ -266,14 +266,9 @@ String16 InjectedScript::objectGroupName(const RemoteObjectId& objectId) const
void InjectedScript::releaseObjectGroup(const String16& objectGroup)
{
- v8::HandleScope handles(m_context->isolate());
m_native->releaseObjectGroup(objectGroup);
- if (objectGroup == "console") {
- V8FunctionCall function(m_context->debugger(), m_context->context(), v8Value(), "clearLastEvaluationResult");
- bool hadException = false;
- function.call(hadException);
- ASSERT(!hadException);
- }
+ if (objectGroup == "console")
+ m_lastEvaluationResult.Reset();
}
void InjectedScript::setCustomObjectFormatterEnabled(bool enabled)
@@ -299,13 +294,11 @@ v8::Local<v8::Value> InjectedScript::v8Value() const
return m_value.Get(m_context->isolate());
}
-bool InjectedScript::setLastEvaluationResult(ErrorString* errorString, v8::Local<v8::Value> value)
+v8::Local<v8::Value> InjectedScript::lastEvaluationResult() const
{
- V8FunctionCall function(m_context->debugger(), m_context->context(), v8Value(), "setLastEvaluationResult");
- function.appendArgument(value);
- bool hadException = false;
- function.call(hadException, false);
- return !hasInternalError(errorString, hadException);
+ if (m_lastEvaluationResult.IsEmpty())
+ return v8::Undefined(m_context->isolate());
+ return m_lastEvaluationResult.Get(m_context->isolate());
}
v8::MaybeLocal<v8::Value> InjectedScript::resolveCallArgument(ErrorString* errorString, protocol::Runtime::CallArgument* callArgument)
@@ -365,8 +358,8 @@ void InjectedScript::wrapEvaluateResult(ErrorString* errorString, v8::MaybeLocal
OwnPtr<RemoteObject> remoteObject = wrapObject(errorString, resultValue, objectGroup, returnByValue, generatePreview);
if (!remoteObject)
return;
- if (objectGroup == "console" && !setLastEvaluationResult(errorString, resultValue))
- return;
+ if (objectGroup == "console")
+ m_lastEvaluationResult.Reset(m_context->isolate(), resultValue);
*result = remoteObject.release();
if (wasThrown)
*wasThrown = false;
@@ -416,7 +409,10 @@ bool InjectedScript::Scope::installCommandLineAPI()
{
ASSERT(m_injectedScript && !m_context.IsEmpty());
V8FunctionCall function(m_debugger, m_context, m_injectedScript->v8Value(), "commandLineAPI");
- return installGlobalObjectExtension(function);
+ v8::Local<v8::Object> extensionObject;
+ if (!installGlobalObjectExtension(function).ToLocal(&extensionObject))
+ return false;
+ return extensionObject->Set(m_context, toV8StringInternalized(m_context->GetIsolate(), "$_"), m_injectedScript->lastEvaluationResult()).FromMaybe(false);
}
bool InjectedScript::Scope::installRemoteObjectAPI(const String16& objectGroupName)
@@ -424,16 +420,17 @@ bool InjectedScript::Scope::installRemoteObjectAPI(const String16& objectGroupNa
ASSERT(m_injectedScript && !m_context.IsEmpty());
V8FunctionCall function(m_debugger, m_context, m_injectedScript->v8Value(), "remoteObjectAPI");
function.appendArgument(objectGroupName);
- return installGlobalObjectExtension(function);
+ v8::Local<v8::Object> extensionObject;
+ return installGlobalObjectExtension(function).ToLocal(&extensionObject);
}
-bool InjectedScript::Scope::installGlobalObjectExtension(V8FunctionCall& function)
+v8::MaybeLocal<v8::Object> InjectedScript::Scope::installGlobalObjectExtension(V8FunctionCall& function)
{
bool hadException = false;
v8::Local<v8::Value> extension = function.call(hadException, false);
- if (hadException || extension.IsEmpty()) {
+ if (hadException || extension.IsEmpty() || !extension->IsObject()) {
*m_errorString = "Internal error";
- return false;
+ return v8::MaybeLocal<v8::Object>();
}
ASSERT(m_global.IsEmpty());
@@ -441,11 +438,11 @@ bool InjectedScript::Scope::installGlobalObjectExtension(V8FunctionCall& functio
v8::Local<v8::Object> global = m_context->Global();
if (!global->Set(m_context, m_extensionSymbol, extension).FromMaybe(false)) {
*m_errorString = "Internal error";
- return false;
+ return v8::MaybeLocal<v8::Object>();
}
m_global = global;
- return true;
+ return extension.As<v8::Object>();
}
void InjectedScript::Scope::ignoreExceptionsAndMuteConsole()

Powered by Google App Engine
This is Rietveld 408576698