* Electron version: 1.7.9
* Operating system: macOS 10.12.6

### Expected behavior

Often Electron apps want to get in front of `openExternal` calls to prevent them, or display a "are you sure you want to open" dialog for possibly unsafe url schemes like `ssh://`. At the moment, you can either blanket deny these or allow all for a give host via a `permissionRequestHandler`. It would be helpful for the permission handler to be given the url that the window is attempting to navigate to better determine the action it should take.


```
 $ git clone git@github.com:gerges/electron-quick-start.git -b  feat/set-permission-handler-openexternal-url
 $ npm install
 $ npm run start
```
atom/browser/atom_resource_dispatcher_host_delegate.cc
const content::ResourceRequestInfo::WebContentsGetter&
        web_contents_getter) {
  content::WebContents* web_contents = web_contents_getter.Run();
  if (!web_contents)
    return;
  if (!WebContentsPreferences::IsPluginsEnabled(web_contents)) {
    auto browser_context = web_contents->GetBrowserContext();
    auto download_manager =
        content::BrowserContext::GetDownloadManager(browser_context);
    download_manager->DownloadUrl(
        content::DownloadUrlParameters::CreateForWebContentsMainFrame(
            web_contents, original_url, NO_TRAFFIC_ANNOTATION_YET));
    return;
  }
  
  
  
  content::NavigationController::LoadURLParams params(GURL(base::StringPrintf(
      "%sindex.html?%s=%s", kPdfViewerUIOrigin, kPdfPluginSrc,
      net::EscapeUrlEncodedData(original_url.spec(), false).c_str())));
  content::RenderFrameHost* frame_host =
      content::RenderFrameHost::FromID(render_process_host_id, render_frame_id);
  if (!frame_host) {
    return;
  }
  params.frame_tree_node_id = frame_host->GetFrameTreeNodeId();
  web_contents->GetController().LoadURLWithParams(params);
}
}  
AtomResourceDispatcherHostDelegate::AtomResourceDispatcherHostDelegate() {}