- Electron version: 1.2.1
- Operating system: Mac OS X

See also https://github.com/electron/electron/issues/5714

STR:
1. Start a webserver on localhost:port that serves a dummy index.html
2. Register a custom http protocol.
   
   ``` js
   electron.protocol.registerStandardSchemes(['foobar', 'http', 'https']);
   
   app.on('ready', function() {
     electron.protocol.registerHttpProtocol('foobar', (request, callback) => {
       const redirectPath = `http://localhost:port/index.html`;
       callback({ method: request.method, referrer: request.referrer, url: redirectPath });
     }, e => { if (e) { console.log(e); } });
   });
   ```
3. Either through devtools, or via some js in our index.html, have a single line that does `fetch('http://localhost:port/index.html')` or anything else from our server.

Results: as soon as `fetch` is called, the webview becomes black, and the devtools crash if they were open. No other visible error or stdout.

If devtools were open, they show this message: "Devtools was disconnected from the page.
Once page is reloaded, DevTools will automatically reconnect."

atom/browser/atom_browser_client.cc
const GURL& opener_url,
    const GURL& opener_top_level_frame_url,
    const GURL& source_origin,
    WindowContainerType container_type,
    const std::string& frame_name,
    const GURL& target_url,
    const content::Referrer& referrer,
    WindowOpenDisposition disposition,
    const blink::WebWindowFeatures& features,
    bool user_gesture,
    bool opener_suppressed,
    content::ResourceContext* context,
    int render_process_id,
    int opener_render_view_id,
    int opener_render_frame_id,
    bool* no_javascript_access) {
  DCHECK_CURRENTLY_ON(content::BrowserThread::IO);
  if (delegate_) {
    content::BrowserThread::PostTask(content::BrowserThread::UI, FROM_HERE,
        base::Bind(&api::App::OnCreateWindow,
                   base::Unretained(static_cast<api::App*>(delegate_)),
                                    target_url,
                                    frame_name,
                                    disposition,
                                    render_process_id,
                                    opener_render_frame_id));
  }
  return false;
}
brightray::BrowserMainParts* AtomBrowserClient::OverrideCreateBrowserMainParts(