DevTools Frontend

References

Overview

DevTools Frontend serves static assets at chrome-devtools-frontend.appspot.com for three primary reasons:

  1. Remote debugging. A user remote-debugging Chrome on Android needs to use a version of DevTools that is compatible with the Chrome version they are debugging. (Canary DevTools isn’t necessarily compatible with Stable Chrome, and vice versa). In this situation, all the files for the DevTools UI are loaded from GAE.
  2. DevTools remote modules. Some components of DevTools are considered too large to ship by default (and increase Chrome’s binary size). These “remote modules” (such as device images, the 3rd party lookup database) are fetched from this service on demand.
  3. Localisation files. Most localisation files are excluded from DevTools and only loaded on demand.

For incoming http requests, the app (1) matches the requested revision to the first chrome version which includes the revision, (2) downloads the archive from Google's internal chrome-signed bucket to this app, (3) extracts the requested file, and (4) returns it to the user. The file – requested once – will be stored on a local bucket to improve performance of subsequent requests.

Files until Chrome version M99 are served from the local bucket directly without archive retrieval and extraction.

Testing

From command line, run: vpython3 -m pytest

Code Cleanup

While currently not enforced, you can run pytype . && isort -m GRID --gitignore . && yapf -irp --exclude '*.pyi' . && docformatter -ir . within this directory to type check (pytype) and format (yapf) the code, sort dependencies (isort), and format docstrings (docformatter).

Third-party libraries

Third-party libraries need to be added to .vpython3 for CI jobs. A requirements.txt is required for deployment, and this project uses hash-checking mode to protect against remote tampering. This file (including the hashes) is checked in, but automatically generated by running ./tools/generate_requirements_txt.py (pip-tools is a requirement).