Index: third_party/WebKit/Source/core/inspector/v8/V8DebuggerAgentImpl.cpp |
diff --git a/third_party/WebKit/Source/core/inspector/v8/V8DebuggerAgentImpl.cpp b/third_party/WebKit/Source/core/inspector/v8/V8DebuggerAgentImpl.cpp |
index 6da8a4c5b0902a97c092e0907f4115b7de061cf1..cb9d29f0faa20a1c255bebefdf5ae84918255af4 100644 |
--- a/third_party/WebKit/Source/core/inspector/v8/V8DebuggerAgentImpl.cpp |
+++ b/third_party/WebKit/Source/core/inspector/v8/V8DebuggerAgentImpl.cpp |
@@ -1035,22 +1035,19 @@ void V8DebuggerAgentImpl::runScript(ErrorString* errorString, const ScriptId& sc |
} |
v8::TryCatch tryCatch(m_isolate); |
v8::Local<v8::Value> value; |
- ScriptValue scriptValue; |
- if (v8Call(V8ScriptRunner::runCompiledScript(m_isolate, script, scriptState->executionContext()), value, tryCatch)) { |
- scriptValue = ScriptValue(scriptState, value); |
- } else { |
- scriptValue = ScriptValue(scriptState, tryCatch.Exception()); |
+ if (!v8Call(V8ScriptRunner::runCompiledScript(m_isolate, script, scriptState->executionContext()), value, tryCatch)) { |
+ value = tryCatch.Exception(); |
v8::Local<v8::Message> message = tryCatch.Message(); |
if (!message.IsEmpty()) |
exceptionDetails = createExceptionDetails(m_isolate, message); |
} |
- if (scriptValue.isEmpty()) { |
+ if (value.IsEmpty()) { |
*errorString = "Script execution failed"; |
return; |
} |
- result = injectedScript->wrapObject(scriptValue, objectGroup ? *objectGroup : ""); |
+ result = injectedScript->wrapObject(value, objectGroup ? *objectGroup : ""); |
} |
void V8DebuggerAgentImpl::setVariableValue(ErrorString* errorString, int scopeNumber, const String& variableName, const RefPtr<JSONObject>& newValue, const String* callFrameId, const String* functionObjectId) |
@@ -1153,8 +1150,9 @@ void V8DebuggerAgentImpl::getPromiseById(ErrorString* errorString, int promiseId |
*errorString = "Promise with specified ID not found."; |
return; |
} |
- InjectedScript* injectedScript = m_injectedScriptManager->injectedScriptFor(value.scriptState()); |
- promise = injectedScript->wrapObject(value, objectGroup ? *objectGroup : ""); |
+ ScriptState::Scope scope(value.scriptState()); |
+ InjectedScript* injectedScript = m_injectedScriptManager->injectedScriptFor(value.context()); |
+ promise = injectedScript->wrapObject(value.v8Value(), objectGroup ? *objectGroup : ""); |
} |
void V8DebuggerAgentImpl::didUpdatePromise(InspectorFrontend::Debugger::EventType::Enum eventType, PassRefPtr<TypeBuilder::Debugger::PromiseDetails> promise) |
@@ -1434,13 +1432,13 @@ PassRefPtr<Array<CallFrame>> V8DebuggerAgentImpl::currentCallFrames() |
{ |
if (!m_pausedScriptState || m_currentCallStack.IsEmpty()) |
return Array<CallFrame>::create(); |
- InjectedScript* injectedScript = m_injectedScriptManager->injectedScriptFor(m_pausedScriptState.get()); |
+ v8::HandleScope handles(m_isolate); |
+ InjectedScript* injectedScript = m_injectedScriptManager->injectedScriptFor(m_pausedScriptState->context()); |
if (!injectedScript) { |
ASSERT_NOT_REACHED(); |
return Array<CallFrame>::create(); |
} |
- v8::HandleScope scope(m_isolate); |
v8::Local<v8::Object> currentCallStack = m_currentCallStack.Get(m_isolate); |
return injectedScript->wrapCallFrames(currentCallStack, 0); |
} |
@@ -1461,7 +1459,7 @@ PassRefPtr<StackTrace> V8DebuggerAgentImpl::currentAsyncStackTrace() |
v8::HandleScope scope(m_isolate); |
v8::Local<v8::Object> callFrames = (*it)->callFrames(m_isolate); |
ScriptState* scriptState = ScriptState::from(callFrames->CreationContext()); |
- InjectedScript* injectedScript = scriptState ? m_injectedScriptManager->injectedScriptFor(scriptState) : nullptr; |
+ InjectedScript* injectedScript = scriptState ? m_injectedScriptManager->injectedScriptFor(scriptState->context()) : nullptr; |
if (!injectedScript) { |
result.clear(); |
continue; |
@@ -1560,7 +1558,7 @@ void V8DebuggerAgentImpl::didParseSource(const V8DebuggerParsedScript& parsedScr |
} |
} |
-V8DebuggerAgentImpl::SkipPauseRequest V8DebuggerAgentImpl::didPause(v8::Local<v8::Context> context, v8::Local<v8::Object> callFrames, v8::Local<v8::Value> v8exception, const Vector<String>& hitBreakpoints, bool isPromiseRejection) |
+V8DebuggerAgentImpl::SkipPauseRequest V8DebuggerAgentImpl::didPause(v8::Local<v8::Context> context, v8::Local<v8::Object> callFrames, v8::Local<v8::Value> exception, const Vector<String>& hitBreakpoints, bool isPromiseRejection) |
{ |
ScriptState* scriptState = ScriptState::from(context); |
if (!scriptState->contextIsValid()) |
@@ -1569,14 +1567,12 @@ V8DebuggerAgentImpl::SkipPauseRequest V8DebuggerAgentImpl::didPause(v8::Local<v8 |
if (isMuteBreakpointInstalled()) |
return RequestContinue; |
- ScriptValue exception(scriptState, v8exception); |
- |
V8DebuggerAgentImpl::SkipPauseRequest result; |
if (m_skipAllPauses) |
result = RequestContinue; |
else if (!hitBreakpoints.isEmpty()) |
result = RequestNoSkip; // Don't skip explicit breakpoints even if set in frameworks. |
- else if (!exception.isEmpty()) |
+ else if (!exception.IsEmpty()) |
result = shouldSkipExceptionPause(); |
else if (m_scheduledDebuggerStep != NoStep || m_javaScriptPauseScheduled || m_pausingOnNativeEvent) |
result = shouldSkipStepPause(); |
@@ -1595,9 +1591,10 @@ V8DebuggerAgentImpl::SkipPauseRequest V8DebuggerAgentImpl::didPause(v8::Local<v8 |
ASSERT(!m_pausedScriptState); |
m_pausedScriptState = scriptState; |
m_currentCallStack.Reset(m_isolate, callFrames); |
+ v8::HandleScope handles(m_isolate); |
- if (!exception.isEmpty()) { |
- InjectedScript* injectedScript = m_injectedScriptManager->injectedScriptFor(scriptState); |
+ if (!exception.IsEmpty()) { |
+ InjectedScript* injectedScript = m_injectedScriptManager->injectedScriptFor(scriptState->context()); |
if (injectedScript) { |
m_breakReason = isPromiseRejection ? InspectorFrontend::Debugger::Reason::PromiseRejection : InspectorFrontend::Debugger::Reason::Exception; |
m_breakAuxData = injectedScript->wrapObject(exception, V8DebuggerAgentImpl::backtraceObjectGroup)->openAccessors(); |