- Electron version: 0.37.6
- Operating system: Windows 10

In VSCode, in order to support screen readers while editing text, we set the contents of a `<textarea>` to the contents of the line and lines surrounding the cursor and we mirror the editor selection in the `<textarea>` via `setSelectionRange`.

Chromium is not the fastest when it comes to setting large amounts of text :) (such as > 10,000 characters) and basically stalls all the time. Apparently, Electron already has some knowledge about when a screen reader is attached to the main process window (in C++ code). Is it possible to expose this as a getter + event when it first happens in the `electron` API.

We could then maintain this costly `<textarea>` sync only when really needed.

atom/browser/api/atom_api_app.cc
else if (name == "downloads")
    return chrome::DIR_DEFAULT_DOWNLOADS;
  else if (name == "music")
    return chrome::DIR_USER_MUSIC;
  else if (name == "pictures")
    return chrome::DIR_USER_PICTURES;
  else if (name == "videos")
    return chrome::DIR_USER_VIDEOS;
  else if (name == "pepperFlashSystemPlugin")
    return chrome::FILE_PEPPER_FLASH_SYSTEM_PLUGIN;
  else
    return -1;
}
bool NotificationCallbackWrapper(
    const ProcessSingleton::NotificationCallback& callback,
    const base::CommandLine::StringVector& cmd,
    const base::FilePath& cwd) {
  
  if (Browser::Get()->is_ready()) {
    callback.Run(cmd, cwd);
  } else {
    scoped_refptr<base::SingleThreadTaskRunner> task_runner(
        base::ThreadTaskRunnerHandle::Get());
    task_runner->PostTask(
        FROM_HERE, base::Bind(base::IgnoreResult(callback), cmd, cwd));
  }
  
  return !Browser::Get()->is_shutting_down();
}
void OnClientCertificateSelected(