blob: e72c2f330e929717144948da470ab0e1dc35b74f [file] [log] [blame] [view]
# ChromeVox (for developers)
ChromeVox is the built-in screen reader on Chrome OS. It was originally
developed as a separate extension but now the code lives inside of the Chromium
tree and it's built as part of Chrome OS.
NOTE: ChromeVox ships also as an extension on the Chrome webstore. This version
of ChromeVox is known as ChromeVox Classic and is loosely related to ChromeVox
(on Chrome OS). All references to ChromeVox relate only to ChromeVox on Chrome
OS.
To start or stop ChromeVox, press Ctrl+Alt+Z at any time.
## Developer Info
Code location: ```chrome/browser/resources/chromeos/chromevox```
Ninja target: it's built as part of "chrome", but you can build and run
chromevox_tests to test it (Chrome OS target only - you must have target_os =
"chromeos" in your GN args first).
## Developing On Linux
ChromeVox for Chrome OS development is done on Linux.
See [ChromeVox on Desktop Linux](chromevox_on_desktop_linux.md)
for more information.
## Debugging ChromeVox
There are options available that may assist in debugging ChromeVox. Here are a
few use cases.
### Feature development
When developing a new feature, it may be helpful to save time by not having to
go through a compile cycle. This can be achieved by setting
```chromevox_compress_js``` to 0 in
chrome/browser/resources/chromeos/chromevox/BUILD.gn, or by using a debug build.
In a debug build or with chromevox_compress_js off, the unflattened files in the
Chrome out directory (e.g. out/Release/resources/chromeos/chromevox/). Now you
can hack directly on the copy of ChromeVox in out/ and toggle ChromeVox to pick
up your changes (via Ctrl+Alt+Z).
### Fixing bugs
The easiest way to debug ChromeVox is from an external browser. Start Chrome
with this command-line flag:
```out/Release/chrome --remote-debugging-port=9222```
Now open http://localhost:9222 in a separate instance of the browser, and debug the ChromeVox extension background page from there.
Another option is to use emacs indium (available through M-x
package-list-packages).
It also talks to localhost:9222 but integrates more tightly into emacs instead.
Another option is to use the built-in developer console. Go to the
ChromeVox options page with Search+Shift+o, o; then, substitute the
options.html path with background.html”, and then open up the
inspector.
### Running tests
Build the chromevox_tests target. To run
lots of tests in parallel, run it like this:
```out/Release/chromevox_tests --test-launcher-jobs=20```
Use a test filter if you only want to run some of the tests from a
particular test suite - for example, most of the ChromeVox Next tests
have "E2E" in them (for "end-to-end"), so to only run those:
```out/Release/chromevox_tests --test-launcher-jobs=20 --gtest_filter="*E2E*"```