Chromium Code Reviews| Index: src/inspector/v8-injected-script-host.cc | 
| diff --git a/src/inspector/v8-injected-script-host.cc b/src/inspector/v8-injected-script-host.cc | 
| index 80c256fcb30d611f22ad7339693226d60a079420..07c7740e38d2d7fe5202e420822e55a3a6616505 100644 | 
| --- a/src/inspector/v8-injected-script-host.cc | 
| +++ b/src/inspector/v8-injected-script-host.cc | 
| @@ -58,6 +58,8 @@ v8::Local<v8::Object> V8InjectedScriptHost::create( | 
| setFunctionProperty(context, injectedScriptHost, "nullifyPrototype", | 
| V8InjectedScriptHost::nullifyPrototypeCallback, | 
| debuggerExternal); | 
| + setFunctionProperty(context, injectedScriptHost, "get", | 
| + V8InjectedScriptHost::getCallback, debuggerExternal); | 
| setFunctionProperty(context, injectedScriptHost, "internalConstructorName", | 
| V8InjectedScriptHost::internalConstructorNameCallback, | 
| debuggerExternal); | 
| @@ -90,6 +92,24 @@ void V8InjectedScriptHost::nullifyPrototypeCallback( | 
| .ToChecked(); | 
| } | 
| +void V8InjectedScriptHost::getCallback( | 
| + const v8::FunctionCallbackInfo<v8::Value>& info) { | 
| + CHECK(info.Length() == 2 && info[1]->IsString()); | 
| + if (!info[0]->IsObject()) return; | 
| + v8::Isolate* isolate = info.GetIsolate(); | 
| + v8::Local<v8::Context> context = isolate->GetCurrentContext(); | 
| + v8::TryCatch tryCatch(isolate); | 
| + v8::Isolate::DisallowJavascriptExecutionScope throwJs( | 
| + isolate, v8::Isolate::DisallowJavascriptExecutionScope::THROW_ON_FAILURE); | 
| + v8::Local<v8::Value> property; | 
| + if (info[0] | 
| + .As<v8::Object>() | 
| + ->Get(context, v8::Local<v8::String>::Cast(info[1])) | 
| + .ToLocal(&property)) { | 
| + info.GetReturnValue().Set(property); | 
| 
 
dgozman
2017/03/23 21:10:20
So, do we return undefined in case of JS execution
 
kozy
2017/03/24 00:40:37
yes, we do, in current use cases it looks like exp
 
 | 
| + } | 
| +} | 
| + | 
| void V8InjectedScriptHost::internalConstructorNameCallback( | 
| const v8::FunctionCallbackInfo<v8::Value>& info) { | 
| if (info.Length() < 1 || !info[0]->IsObject()) return; |