* Electron version: 1.8.2
* Operating system: MacOS, Windows10

### Expected behavior

ipc messages from the main process should be sent to the renderer process when both `sandbox` and `contextIsolation` are set.

### Actual behavior

ipc messages sent in listeners to webview events are not visible in the renderer process.

### How to reproduce

```
$ git clone https://gist.github.com/4f6c4450cff194838e746ce23e60116d.git
$ cd 4f6c4450cff194838e746ce23e60116d/
$ electron main.js 
```

The devtools will open and the console will log one message.  But the second message on the ipc `ping` channel is not observed.

Toggling either `sandbox` or `contextIsolation` to false allows the `ping` to travel to the renderer process.  In the 1.7.X branch setting both values to true still allows the message to pass through successfully.
atom/renderer/atom_sandboxed_renderer_client.cc
v8::Handle<v8::Context> context,
    const std::string& callback_name,
    std::vector<v8::Handle<v8::Value>> args) {
  auto* isolate = context->GetIsolate();
  auto binding_key = mate::ConvertToV8(isolate, kIpcKey)->ToString(isolate);
  auto private_binding_key = v8::Private::ForApi(isolate, binding_key);
  auto global_object = context->Global();
  v8::Local<v8::Value> value;
  if (!global_object->GetPrivate(context, private_binding_key).ToLocal(&value))
    return;
  if (value.IsEmpty() || !value->IsObject())
    return;
  auto binding = value->ToObject(isolate);
  auto callback_key =
      mate::ConvertToV8(isolate, callback_name)->ToString(isolate);
  auto callback_value = binding->Get(callback_key);
  DCHECK(callback_value->IsFunction());  
  auto callback = v8::Handle<v8::Function>::Cast(callback_value);
  ignore_result(callback->Call(context, binding, args.size(), args.data()));
}
}