* Output of `node_modules/.bin/electron --version`:
* Operating System (Platform and Version):
* Output of `node_modules/.bin/electron --version` on last known working Electron version (if applicable): 3.0.4

**Expected Behavior**
devtools extension's page (`manifest.json`'s `devtools_page`) have electron's global `chrome.*` extension api context constructed.

**Actual behavior**
`devtools_page` doesn't have context, any calls to `chrome.*` will fail

**To Reproduce**
```
const {app, BrowserWindow} = require('electron')

//enable mixed sandbox asap
app.enableMixedSandbox();

let mainWindow

function createWindow () {
  mainWindow = new BrowserWindow({width: 1024, height: 768})

 mainWindow.loadURL('https://reactjs.org')
  
  //other devtools extension can be used instead as long as `devtools_page` access chrome.* api
  require('devtron').install();
  mainWindow.webContents.openDevTools()

  mainWindow.on('closed', function () {
    mainWindow = null
  })
}

app.on('ready', createWindow)

app.on('window-all-closed', function () {
  if (process.platform !== 'darwin') {
    app.quit()
  }
})

app.on('activate', function () {
  if (mainWindow === null) {
    createWindow()
  }
})
```

devtron is used for simplified repro, but any other devtools (i.e react devtools) will have same symptoms.
launch electron, then open devtools will emit console logs like
```
[10800:1104/011325.639:ERROR:CONSOLE(7)] "Uncaught ReferenceError: chrome is not defined", source: chrome-extension://devtron/static/devtron.html (7)
```

**Screenshots**
If applicable, add screenshots to help explain your problem.

**Additional Information**
Add any other context about the problem here.

atom/renderer/atom_sandboxed_renderer_client.cc
v8::Local<v8::String> key,
                                mate::Arguments* margs) {
  v8::Local<v8::Object> exports;
  std::string module_key = mate::V8ToString(key);
  mate::Dictionary cache(isolate, GetModuleCache(isolate));
  if (cache.Get(module_key.c_str(), &exports)) {
    return exports;
  }
  auto* mod = node::get_builtin_module(module_key.c_str());
  if (!mod) {
    char errmsg[1024];
    snprintf(errmsg, sizeof(errmsg), "No such module: %s", module_key.c_str());
    margs->ThrowError(errmsg);
    return exports;
  }
  exports = v8::Object::New(isolate);
  DCHECK_EQ(mod->nm_register_func, nullptr);
  DCHECK_NE(mod->nm_context_register_func, nullptr);
  mod->nm_context_register_func(exports, v8::Null(isolate),
                                isolate->GetCurrentContext(), mod->nm_priv);
  cache.Set(module_key.c_str(), exports);
  return exports;
}
v8::Local<v8::Value> CreatePreloadScript(v8::Isolate* isolate,
                                         v8::Local<v8::String> preloadSrc) {
  auto script = v8::Script::Compile(preloadSrc);
  auto func = script->Run();
  return func;
}
class AtomSandboxedRenderFrameObserver : public AtomRenderFrameObserver {