Chromium Code Reviews| Index: third_party/WebKit/Source/platform/v8_inspector/V8InjectedScriptHost.cpp |
| diff --git a/third_party/WebKit/Source/platform/v8_inspector/V8InjectedScriptHost.cpp b/third_party/WebKit/Source/platform/v8_inspector/V8InjectedScriptHost.cpp |
| index 816633be0bfd9cf62a4952fcc6334bb51fed076b..52997d0e824ff4d9b3dd4d1f9bc60b57ea5bc6dd 100644 |
| --- a/third_party/WebKit/Source/platform/v8_inspector/V8InjectedScriptHost.cpp |
| +++ b/third_party/WebKit/Source/platform/v8_inspector/V8InjectedScriptHost.cpp |
| @@ -288,11 +288,11 @@ void V8InjectedScriptHost::evalCallback(const v8::FunctionCallbackInfo<v8::Value |
| ASSERT(isolate->InContext()); |
| v8::TryCatch tryCatch(isolate); |
| - v8::Local<v8::Value> result; |
| InjectedScriptHost* host = V8InjectedScriptHost::unwrap(isolate->GetCurrentContext(), info.Holder()); |
| if (!host->debugger()) |
| return; |
| - if (!host->debugger()->client()->compileAndRunInternalScript(expression).ToLocal(&result)) { |
| + v8::Local<v8::Value> result = host->debugger()->compileAndRunInternalScript(isolate->GetCurrentContext(), expression); |
| + if (result.IsEmpty()) { |
| v8SetReturnValue(info, tryCatch.ReThrow()); |
| return; |
| } |
| @@ -332,6 +332,10 @@ void V8InjectedScriptHost::evaluateWithExceptionDetailsCallback(const v8::Functi |
| if (!host->debugger()) |
| return; |
| + // TODO(dgozman): get rid of this check. |
| + if (!host->debugger()->client()->isExecutionAllowed()) |
| + return; |
| + |
| v8::Local<v8::Script> script = host->debugger()->compileInternalScript(context, expression, String()); |
| if (script.IsEmpty()) { |
| setExceptionAsReturnValue(info, wrappedResult, tryCatch); |
| @@ -345,7 +349,11 @@ void V8InjectedScriptHost::evaluateWithExceptionDetailsCallback(const v8::Functi |
| global->Set(commandLineAPISymbolValue, commandLineAPI); |
| } |
| - v8::MaybeLocal<v8::Value> result = host->debugger()->client()->runCompiledScript(context, script); |
| + v8::MicrotasksScope microtasksScope(isolate, v8::MicrotasksScope::kRunMicrotasks); |
| + int cookie = host->debugger()->willExecuteScript(context, script->GetUnboundScript()->GetId()); |
| + v8::MaybeLocal<v8::Value> result = script->Run(context); |
|
pfeldman
2016/03/08 01:44:21
ditto
dgozman
2016/03/08 02:23:00
Done.
|
| + host->debugger()->didExecuteScript(cookie); |
| + |
| if (result.IsEmpty()) { |
| global->Delete(context, commandLineAPISymbolValue); |
| setExceptionAsReturnValue(info, wrappedResult, tryCatch); |
| @@ -598,9 +606,9 @@ v8::Local<v8::FunctionTemplate> V8InjectedScriptHost::createWrapperTemplate(v8:: |
| return InjectedScriptHostWrapper::createWrapperTemplate(isolate, methods, attributes); |
| } |
| -v8::Local<v8::Object> V8InjectedScriptHost::wrap(V8DebuggerClient* client, v8::Local<v8::FunctionTemplate> constructorTemplate, v8::Local<v8::Context> context, InjectedScriptHost* host) |
| +v8::Local<v8::Object> V8InjectedScriptHost::wrap(v8::Local<v8::FunctionTemplate> constructorTemplate, v8::Local<v8::Context> context, InjectedScriptHost* host) |
| { |
| - return InjectedScriptHostWrapper::wrap(client, constructorTemplate, context, host); |
| + return InjectedScriptHostWrapper::wrap(constructorTemplate, context, host); |
| } |
| InjectedScriptHost* V8InjectedScriptHost::unwrap(v8::Local<v8::Context> context, v8::Local<v8::Object> object) |