Hello Services Dev,
We'd like to move Accessibility logic from the browser process to a sandboxed Accessibility service on all platforms, starting with Chrome OS. There are many reasons for this, including:
* Allows Chrome OS accessibility features (like ChromeVox) to be ported from component extensions, removing dependency on extension system
* Allows Fuschia to re-use Chrome OS's accessibility features
* Moves accessibility logic out of browser process on other desktop platforms, improving performance and decreasing crashes
* Improves security on Windows where screen readers inject themselves into the browser process to access a11y (now they'd inject into the new service)
A high-level design doc with more background reasoning for the service is at go/chrome-atp, and a design doc with more details specifically about the service and its mojom interface only is at go/chromeos-atp-service-process.
I propose
creating //services/accessibility because I think Accessibility is a core system service.
I have a
very rough prototype of the service for Chrome OS (with quite a bit of unsubmittable code where I explored V8 bindings). I haven't tried making a sandbox type specific to this service because I don't know how that works yet, but AFAIK we just need specific file reading and v8 execution. I can clean this up if it helps!
Please let me know if it makes sense to create this in //services/accessibility, somewhere else, or if you have any questions!