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; |