* 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_permission_manager.h
public:
  AtomPermissionManager();
  ~AtomPermissionManager() override;
  using StatusCallback =
      base::Callback<void(blink::mojom::PermissionStatus)>;
  using StatusesCallback =
      base::Callback<void(const std::vector<blink::mojom::PermissionStatus>&)>;
  using RequestHandler =
      base::Callback<void(content::WebContents*,
                          content::PermissionType,
                          const StatusCallback&)>;
  
  void SetPermissionRequestHandler(const RequestHandler& handler);
  
  int RequestPermission(
      content::PermissionType permission,
      content::RenderFrameHost* render_frame_host,
      const GURL& requesting_origin,
      bool user_gesture,
      const base::Callback<void(blink::mojom::PermissionStatus)>& callback)
      override;
  int RequestPermissions(
      const std::vector<content::PermissionType>& permissions,
      content::RenderFrameHost* render_frame_host,
      const GURL& requesting_origin,
      bool user_gesture,
      const base::Callback<void(
          const std::vector<blink::mojom::PermissionStatus>&)>& callback)
      override;