commit | 322b5eefc97a2c719b41d919a401e09c5d208337 | [log] [tgz] |
---|---|---|
author | Tim van der Lippe <[email protected]> | Mon Jun 01 15:56:03 2020 |
committer | Commit Bot <[email protected]> | Tue Jun 02 10:29:30 2020 |
tree | 7e97ecc958ab3445666197d15eb8c7fd133de75a | |
parent | d76dbd1fe38b3251a6a84c317d5a61c02ec7aca7 [diff] |
Cleanup hosted_mode proxy logic This logic is unused now, so we can remove it. This will allow us to remove the require on `utils`, in preparation for the e2e-test changes. [email protected],[email protected] Bug: 1088463 Change-Id: Ie2271f4e0dc17f08b8b11860f0fddb1b8b697066 Reviewed-on: https://chromium-review.googlesource.com/c/devtools/devtools-frontend/+/2224806 Reviewed-by: Jack Franklin <[email protected]> Reviewed-by: Paul Lewis <[email protected]> Commit-Queue: Tim van der Lippe <[email protected]>
The client-side of the Chrome DevTools, including all JS & CSS to run the DevTools webapp.
The frontend is available on chromium.googlesource.com.
Please be aware that DevTools follows additional development guidelines.
The issue triage guidelines can be found here.
In order to make changes to DevTools frontend, build, run, test, and submit changes, several workflows exist. Having depot_tools set up is a common prerequisite.
This workflow will ensure that your local setup is equivalent to how Chromium infrastructure tests your change. It also allows you to develop DevTools independently of the version in your Chromium checkout. This means that you don't need to update Chromium often, in order to work on DevTools.
In chromium/src
, run gclient sync
to make sure you have installed all required submodules.
gclient sync
Then, disable gclient sync
for DevTools frontend inside of Chromium by editing .gclient
config. From chromium/src/
, simply run
vim $(gclient root)/.gclient
In the custom_deps
section, insert this line:
"src/third_party/devtools-frontend/src": None,
Then run
gclient sync -D
This removes the DevTools frontend dependency. We now create a symlink to refer to the standalone checkout (execute in chromium/src
and make sure that third_party/devtools-frontend
exists):
(Note that the folder names do NOT include the trailing slash)
Now, There are 2 approaches to integrating your workflows: The first approach is to have separate gclient projects, one for each repository, and manually symlink between the two
Running gclient sync
in chromium/src/
will update dependencies for the Chromium checkout. Running gclient sync
in chromium/src/third_party/devtools-frontend/src
will update dependencies for the standalone checkout.
The second approach is to have a single gclient project that automatically gclient sync's all dependencies for both repositories
solutions = [ { # Chromium src project "url": "https://chromium.googlesource.com/chromium/src.git", "managed": False, "name": "src", "custom_deps": { "src/third_party/devtools-frontend/src": None, }, "custom_vars": {}, }, { # devtools-frontend project "name": "devtools-frontend", "url": "https://chromium.googlesource.com/devtools/devtools-frontend", "custom_deps": {} } ]
Run gclient sync
once in chromium/src/
to get the new devtools frontend checkout.
Running gclient sync
anywhere within chromium/src/
or chromium/src/third_party/devtools-frontend/src
will update dependencies for both checkouts.
To automatically symlink between the devtools-frontend and chromium/src, you can add the following hook to your .gclient file that manages your chromium/src repository after your list of solutions
hooks = [ { # Ensure devtools is symlinked in the correct location on every gclient sync 'name': 'Symlink Depot Tools', 'pattern': '.', 'action': [ 'python', '<path>/<to>/devtools-frontend/scripts/deps/ensure_symlink.py', '<path>/<to>/chromium/src', '<path>/<to>/devtools-frontend' ], } ]
Now, running gclient sync -D
will no longer remove your symlink.
As a standalone project, Chrome DevTools frontend can be checked out and built independently from Chromium. The main advantage is not having to check out and build Chromium. However, there is also no way to run layout tests in this workflow.
To check out the source for DevTools frontend only, follow these steps:
mkdir devtools cd devtools fetch devtools-frontend
To build, follow these steps:
cd devtools-frontend gn gen out/Default autoninja -C out/Default
The resulting build artifacts can be found in out/Default/resources/inspector
.
To update to latest tip of tree version:
git fetch origin git checkout origin/master gclient sync
These steps work with Chromium 79 or later. To run the production build, use
(Requires brew install coreutils
on Mac.)
<path-to-chrome>/chrome --custom-devtools-frontend=file://$(realpath out/Default/resources/inspector)
To run the debug build (directly symlinked to the original unminified source files), build both Chromium and DevTools frontend with the GN flag debug_devtools=true
, and use
<path-to-chrome>/chrome --custom-devtools-frontend=file://$(realpath out/Default/resources/inspector/debug)
You can inspect DevTools with DevTools by undocking DevTools and then open the developers tools (F12 on Windows/Linux, Cmd+Option+I on Mac).
Before the introduction of --custom-devtools-frontend
, you could also set a GN flag on your Chromium build called debug_devtools
. This flag is replaced by --custom-devtools-frontend
and you are strongly recommended to use the new runtime binary flag, in favor of the Chromium GN flag. debug_devtools
is only used when debugging layout tests living in Chromium and will be removed once that is no longer required.
Test are available by running scripts in scripts/test/
.
Usual steps for creating a change work out of the box.
Note that this will only work with the above two workflows
scripts/deps/roll_deps.py && npm run generate-protocol-resources
.The following scripts run as AutoRollers, but can be manually invoked if desired:
scripts/deps/roll_to_chromium.py
.roll-dep
.DevTools frontend can also be developed as part of the full Chromium checkout. This workflow can be used to make small patches to DevTools as a Chromium engineer. However, it is different to our infrastructure setup and how to execute general maintenance work.
Follow instructions to check out Chromium. DevTools frontend can be found under third_party/devtools-frontend/src/
.
Refer to instructions to build Chromium. To only build DevTools frontend, use devtools_frontend_resources
as build target. The resulting build artifacts for DevTools frontend can be found in out/Default/resources/inspector
.
Consider building with the GN flag debug_devtools=true
to symlink to the original unminified source.
Run Chrome with DevTools frontend bundled:
out/Default/chrome
Test are available by running scripts in third_party/devtools-frontend/src/scripts/test/
. After building content shell, we can also run layout tests that are relevant for DevTools frontend:
autoninja -C out/Default content_shell third_party/blink/tools/run_web_tests.py http/tests/devtools
Usual steps for creating a change work out of the box, when executed in third_party/devtools-frontend/src/
.
Please refer to the overview document. The current test status can be seen at the test waterfall.
Merge request/approval is handled by Chromium Release Managers. DevTools follows The Zen of Merge Requests. In exceptional cases please get in touch with [email protected].
Step-by-step guide on how to merge:
git cl format --js
Formats all code using clang-format.
npm run check
Runs all static analysis checks on DevTools code.
DevTools frontend repository is mirrored on GitHub.
DevTools frontend is also available on NPM as the chrome-devtools-frontend package. It's not currently available via CJS or ES2015 modules, so consuming this package in other tools may require some effort.
The version number of the npm package (e.g. 1.0.373466
) refers to the Chromium commit position of latest frontend git commit. It's incremented with every Chromium commit, however the package is updated roughly daily.
All devtools commits: View the log or follow @DevToolsCommits on Twitter
All open DevTools tickets on crbug.com
File a new DevTools ticket: new.crbug.com
Code reviews mailing list: [email protected]
@ChromeDevTools on Twitter
Chrome DevTools mailing list: groups.google.com/forum/google-chrome-developer-tools