These events are emitted for every navigation request which isn't really efficient. Also upstream has removed the observers that provide these details as part of network servification https://chromium-review.googlesource.com/c/chromium/src/+/805008 and https://chromium-review.googlesource.com/c/chromium/src/+/786320. We are removing it as a part of chromium 66 upgrade.

Proposed alternative: Users can use the [webRequest](https://github.com/electron/electron/blob/master/docs/api/web-request.md) module which provides similar navigation details on a subscription basis.
atom/browser/api/atom_api_web_contents.cc
const GURL& security_origin,
                                             content::MediaStreamType type) {
  return true;
}
void WebContents::RequestMediaAccessPermission(
    content::WebContents* web_contents,
    const content::MediaStreamRequest& request,
    const content::MediaResponseCallback& callback) {
  auto* permission_helper =
      WebContentsPermissionHelper::FromWebContents(web_contents);
  permission_helper->RequestMediaAccessPermission(request, callback);
}
void WebContents::RequestToLockMouse(content::WebContents* web_contents,
                                     bool user_gesture,
                                     bool last_unlocked_by_target) {
  auto* permission_helper =
      WebContentsPermissionHelper::FromWebContents(web_contents);
  permission_helper->RequestPointerLockPermission(user_gesture);
}
std::unique_ptr<content::BluetoothChooser> WebContents::RunBluetoothChooser(
    content::RenderFrameHost* frame,
    const content::BluetoothChooser::EventHandler& event_handler) {
  std::unique_ptr<BluetoothChooser> bluetooth_chooser(
      new BluetoothChooser(this, event_handler));
  return std::move(bluetooth_chooser);
}
content::JavaScriptDialogManager* WebContents::GetJavaScriptDialogManager(