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

**Expected Behavior**
When we open the file picker using the html input file tag, we expect to see a modal or a dialog that is always on top unless closed (like in Chrome).

**Actual behavior**
In the 3.x & 4.x versions of Electron, the dialog that appears for file picking using html input file tag is a dialog that behaves more like a regular window. Problem with this is that if the window is put to the background and we focus on our main app window, then try file selection again, the existing window file picker window doesn't come to the foreground either or a new dialog is created. This is very confusing for a user who assumes that the file picking html button is not working.

Please see video below to understand better.

**To Reproduce**

```sh
$ git clone $https://github.com/VishwasShashidhar/electron-quick-start -b file-picker
$ npm install
$ npm start || electron .
```
**Screenshots**
![screenrecording20190107at1](https://user-images.githubusercontent.com/5968790/50769579-67fec180-12aa-11e9-87d4-94413c14835c.gif)

**Additional Information**
This seems to be a behavioural change from https://github.com/electron/electron/commit/c50a460ce68d4b1e938e898c1b6a4d0db31164b9#diff-68a7264c657f5cfda99d3cdd12649277

I've also tested by reversing the above change and things work as expected.
atom/browser/common_web_contents_delegate.cc
const base::FilePath& path) {
  auto* isolated_context = storage::IsolatedContext::GetInstance();
  std::string root_name(kRootName);
  std::string file_system_id = isolated_context->RegisterFileSystemForPath(
      storage::kFileSystemTypeNativeLocal, std::string(), path, &root_name);
  content::ChildProcessSecurityPolicy* policy =
      content::ChildProcessSecurityPolicy::GetInstance();
  content::RenderViewHost* render_view_host = web_contents->GetRenderViewHost();
  int renderer_id = render_view_host->GetProcess()->GetID();
  policy->GrantReadFileSystem(renderer_id, file_system_id);
  policy->GrantWriteFileSystem(renderer_id, file_system_id);
  policy->GrantCreateFileForFileSystem(renderer_id, file_system_id);
  policy->GrantDeleteFromFileSystem(renderer_id, file_system_id);
  if (!policy->CanReadFile(renderer_id, path))
    policy->GrantReadFile(renderer_id, path);
  return file_system_id;
}
FileSystem CreateFileSystemStruct(content::WebContents* web_contents,
                                  const std::string& file_system_id,
                                  const std::string& file_system_path,
                                  const std::string& type) {
  const GURL origin = web_contents->GetURL().GetOrigin();
  std::string file_system_name =
      storage::GetIsolatedFileSystemName(origin, file_system_id);
  std::string root_url = storage::GetIsolatedFileSystemRootURIString(
      origin, file_system_id, kRootName);
  return FileSystem(type, file_system_name, root_url, file_system_path);
}
std::unique_ptr<base::DictionaryValue> CreateFileSystemValue(