blob: dcdb74271622153cf48f2d5ae1a17b29c2a87d22 [file] [log] [blame] [view]
nodir469b2a12015-09-14 16:20:211# Chromium docs
2
Ming-Ying Chungd8eebd2c2022-07-19 08:02:233This directory contains [chromium project](https://www.chromium.org/Home/)
4documentation in [Gitiles-flavored Markdown]. It is automatically
5[rendered by Gitiles].
Vincent Scheibde853a02017-07-13 23:31:186
7[Gitiles-flavored Markdown]: https://gerrit.googlesource.com/gitiles/+/master/Documentation/markdown.md
John Palmer046f9872021-05-24 01:24:568[rendered by Gitiles]: https://chromium.googlesource.com/chromium/src/+/main/docs/
nodir469b2a12015-09-14 16:20:219
Ming-Ying Chungd8eebd2c2022-07-19 08:02:2310**If you add new documents, please also add a link to them in the Document Index
11below.**
justincarlson90a1c8c2017-04-14 00:34:2512
13[TOC]
14
Vincent Scheib394b907a2017-07-14 22:30:0615## Creating Documentation
nodir469b2a12015-09-14 16:20:2116
Ming-Ying Chungd8eebd2c2022-07-19 08:02:2317### Guidelines
nodir469b2a12015-09-14 16:20:2118
Qi Xiao4a80b1e2022-07-27 10:08:2919* See the [Chromium Documentation Guidelines](documentation_guidelines.md)
Ming-Ying Chungd8eebd2c2022-07-19 08:02:2320 and the
Qi Xiao4a80b1e2022-07-27 10:08:2921 [Chromium Documentation Best Practices](documentation_best_practices.md).
Ming-Ying Chungd8eebd2c2022-07-19 08:02:2322* Markdown documents must follow the
Ming-Ying Chung99ebfd72023-03-03 01:01:4823 [Markdown Style
24 Guide](https://chromium.googlesource.com/chromium/src/+/HEAD/styleguide/markdown/markdown.md).
Ming-Ying Chungd8eebd2c2022-07-19 08:02:2325
26### Previewing changes
27
28#### Locally using [md_browser](../tools/md_browser/)
nodir6efa4992015-12-20 00:54:3329
30```bash
31# in chromium checkout
agabled40b9542016-05-11 01:15:0632./tools/md_browser/md_browser.py
nodir6efa4992015-12-20 00:54:3333```
34
Vincent Scheib394b907a2017-07-14 22:30:0635This is only an estimate. The **gitiles** view may differ.
nodir6efa4992015-12-20 00:54:3336
Ming-Ying Chungd8eebd2c2022-07-19 08:02:2337#### Online with Gerrit's links to gitiles
Vincent Scheib394b907a2017-07-14 22:30:0638
Mathieu Perreault339625382017-07-29 00:32:58391. Upload a patch to gerrit, or receive a review request.
Roland Bockfdc88ec2022-01-05 08:32:5440 e.g. https://chromium-review.googlesource.com/c/3362532
Mathieu Perreault339625382017-07-29 00:32:58412. View a specific .md file.
Roland Bockfdc88ec2022-01-05 08:32:5442 e.g. https://chromium-review.googlesource.com/c/3362532/2/docs/README.md
433. You will see something like <br>
44 Base
Qi Xiao4a80b1e2022-07-27 10:08:2945 [preview](https://chromium.googlesource.com/chromium/src/+/ad44f6081ccc6b92479b12f1eb7e9482f474859d/docs/README.md)
Roland Bockfdc88ec2022-01-05 08:32:5446 -> Patchset 3
Qi Xiao4a80b1e2022-07-27 10:08:2947 [preview](https://chromium.googlesource.com/chromium/src/+/refs/changes/32/3362532/3/docs/README.md)
Roland Bockfdc88ec2022-01-05 08:32:5448 | DOWNLOAD <br>
Ming-Ying Chungd8eebd2c2022-07-19 08:02:2349 at the top left of the page. Click on the second
Qi Xiao4a80b1e2022-07-27 10:08:2950 "[preview](https://chromium.googlesource.com/chromium/src/+/refs/changes/32/3362532/3/docs/README.md)"
Roland Bockfdc88ec2022-01-05 08:32:5451 link to open the preview for the current patch set.
Vincent Scheib394b907a2017-07-14 22:30:0652
53This **gitiles** view is the authoritative view, exactly the same as will be
54used when committed.
nodir6efa4992015-12-20 00:54:3355
justincarlson90a1c8c2017-04-14 00:34:2556## Document Index
57
Carlos Knippschilde084bd22024-09-19 18:50:5458**Note**: this is not an exhaustive list of all documents.
59
justincarlson90a1c8c2017-04-14 00:34:2560### Checking Out and Building
Tom Anderson93e49e492019-12-23 19:55:3761* [Linux Build Instructions](linux/build_instructions.md) - Linux
justincarlson90a1c8c2017-04-14 00:34:2562* [Mac Build Instructions](mac_build_instructions.md) - MacOS
63* [Windows Build Instructions](windows_build_instructions.md) - Windows
64* [Android Build Instructions](android_build_instructions.md) - Android target
65 (on a Linux host)
Tom Anderson93e49e492019-12-23 19:55:3766* [Cast Build Instructions](linux/cast_build_instructions.md) - Cast target
justincarlson90a1c8c2017-04-14 00:34:2567 (on a Linux host)
68* [Cast for Android Build Instructions](android_cast_build_instructions.md) -
69 Cast for Android (on a Linux host)
Chong Gu4749ec12021-02-17 01:41:0670* [Fuchsia Build Instructions](fuchsia/build_instructions.md) -
71 Fuchsia target (on a Linux host)
justincarlson90a1c8c2017-04-14 00:34:2572* [iOS Build Instructions](ios/build_instructions.md) - iOS target (on a MacOS
73 host)
Allen Li8bc2e1a2025-03-25 22:46:3374* [Gerrit Guide](gerrit_guide.md) - Setup Gerrit access
Euisang Lim1f253912018-04-30 01:46:3275* [Chrome OS Build Instructions](chromeos_build_instructions.md) - Chrome OS
Tom Anderson93e49e492019-12-23 19:55:3776* [Linux Chromium ARM Recipes](linux/chromium_arm.md) - Recipes for building
justincarlson90a1c8c2017-04-14 00:34:2577 Chromium for ARM on Linux.
justincarlson90a1c8c2017-04-14 00:34:2578* [Chrome Component Build](component_build.md) - Faster builds using more
79 libraries
80* [Using the BuildRunner](using_build_runner.md) - Scripts that extract build
81 stops from builders and runs them locally on a slave
82* [Cr User Manual](cr_user_manual.md) - Manual for `cr`, a tool that tries to
83 hide some of the tools used for working on Chromium behind an abstraction
84 layer
85
justincarlsonad589ce2017-04-20 17:26:0786### Design Docs
87* See [design/README.md](design/README.md)
88
justincarlson90a1c8c2017-04-14 00:34:2589### Integrated Development Environment (IDE) Set Up Guides
90* [Android Studio](android_studio.md) - Android Studio for Android builds
manukh080b47e2019-12-19 22:06:1991* [Atom](atom.md) - Atom multi-platform code editor
92* [CLion](clion.md) - CLion IDE, supports GUI debugging.
justincarlson90a1c8c2017-04-14 00:34:2593* [Eclipse for Android](eclipse.md) - Eclipse for Android
Vincent Scheib196c7b42019-12-21 00:29:1994* [Eclipse for Linux](linux/eclipse_dev.md) - Eclipse for other platforms
justincarlson90a1c8c2017-04-14 00:34:2595 (This guide was written for Linux, but is probably usable on Windows/MacOS
96 as well)
justincarlson90a1c8c2017-04-14 00:34:2597* [EMACS Notes](emacs.md) - EMACS commands/styles/tool integrations
manukh080b47e2019-12-19 22:06:1998* [Qt Creator](qtcreator.md) - Using Qt Creator as an IDE or GUI debugger
99* [Visual Studio Code](vscode.md) - Visual Studio Code
justincarlson90a1c8c2017-04-14 00:34:25100
101### Git
102* [Git Cookbook](git_cookbook.md) - A collection of git recipes for common
103 tasks
104* [Git Tips](git_tips.md) - More git tips
Josip Sokcevic79a4a542023-08-15 00:35:08105* [Git submodules](git_submodules.md) - Git submodule (tips, FAQ)
justincarlson90a1c8c2017-04-14 00:34:25106
107### Clang
108* [Clang Compiler](clang.md) - General information on the clang compiler, used
109 by default on Mac and Linux
110* [Clang Tool Refactoring](clang_tool_refactoring.md) - Leveraging clang tools
111 to perform refactorings that are AST-aware
112* [The Clang Static Analyzer](clang_static_analyzer.md) - How to enable static
113 analysis at build time
Yuke Liaobb571bd62018-10-31 21:51:52114* [Clang Code Coverage Wrapper](clang_code_coverage_wrapper.md) - Enable Clang
115 code coverage instrumentation for a subset of source files.
justincarlson90a1c8c2017-04-14 00:34:25116* [Writing Clang Plugins](writing_clang_plugins.md) - Don't write a clang
117 plugin, but if you do, read this
118* [Updating Clang](updating_clang.md) - Updating the version of Clang used to
119 build
120* [Using clang-format on Chromium C++ Code](clang_format.md) - Various ways to
121 invoke clang-format on C++ code
122* [Clang Tidy](clang_tidy.md) - Support for the `clang-tidy` tool in Chromium
123* [Updating Clang Format Binaries](updating_clang_format_binaries.md) - How up
124 update the clang-format binaries that come with a checkout of Chromium
125
126### General Development
Toby Huang5105f812019-08-08 23:47:57127* [Contributing to Chromium](contributing.md) - Reference workflow process for
128 contributing to the Chromium code base.
129* [Commit Checklist](commit_checklist.md) - Streamlined checklist to go
130 through before uploading CLs on Gerrit.
justincarlson90a1c8c2017-04-14 00:34:25131* [Code Reviews](code_reviews.md) - Code review requirements and guidelines
Josip Sokcevic5dd003b2023-08-10 01:06:19132* [Dependency management](dependencies.md) - Managing dependencies (DEPS, git submodules)
Mathieu Perreault339625382017-07-29 00:32:58133* [Respectful Code Reviews](cr_respect.md) - A guide for code reviewers
134* [Respectful Changes](cl_respect.md) - A guide for code authors
Yulan Lin55ae6a32020-07-31 17:58:29135* [Mandatory Code-Review Rollout](code_review_owners.md) - Upcoming policy changes related to code review and OWNERS
Eric Foo6ea4fbd2018-01-17 04:04:50136* [LUCI Migration FAQ](luci_migration_faq.md) - FAQ on Buildbot-to-LUCI
137 builder migration for Chromium
Eric Fooff7b4982017-12-19 01:59:15138* [Tour of Continuous Integration UI](tour_of_luci_ui.md) - A tour of our
Eric Foo6ea4fbd2018-01-17 04:04:50139 the user interface for LUCI, our continuous integration system
erikchenb83e010a2018-10-08 21:34:01140* [Parsing Test Results](parsing_test_results.md) - An introduction for how to
141 understand the results emitted by polygerrit and CI builds.
justincarlson90a1c8c2017-04-14 00:34:25142* [Closure Compilation](closure_compilation.md) - The _Closure_ JavaScript
143 compiler
fdoraybacba4a22017-05-10 21:10:00144* [Threading and Tasks in Chrome](threading_and_tasks.md) - How to run tasks
145 and handle thread safety in Chrome.
justincarlson90a1c8c2017-04-14 00:34:25146* [Callback<> and Bind()](callback.md) - All about Callbacks, Closures, and
147 Bind().
Trevor Perrier2c143892020-12-10 21:40:42148* [Chromium Views UI](ui/index.md) - Working with the desktop UI framework.
justincarlson90a1c8c2017-04-14 00:34:25149* [Views Platform Styling](ui/views/platform_style.md) - How views are styled
150 to fit in different native platforms
151* [Tab Helpers](tab_helpers.md) - Using WebContents/WebContentsObserver to add
152 features to browser tabs.
153* [Adding third_party Libraries](adding_to_third_party.md) - How to get code
154 into third_party/
155* [Graphical Debugging Aid for Chromium Views](graphical_debugging_aid_chromium_views.md) -
156 Visualizing view trees during debugging
157* [Bitmap Pipeline](bitmap_pipeline.md) - How bitmaps are moved from the
158 renderer to the screen.
John Abd-El-Malekda0e8cd2022-09-16 23:42:05159* [Flag Guarding Guidelines](flag_guarding_guidelines.md) - When to use
160 server controlled kill switches and A/B experiments to safely roll out
161 changes.
justincarlson90a1c8c2017-04-14 00:34:25162* [Using the Origin Trials Framework](origin_trials_integration.md) - A
163 framework for conditionally enabling experimental APIs for testing.
Victor Hugo Vianna Silvad1b14e1d2022-01-27 14:36:52164* [Chrome Sync](https://source.chromium.org/chromium/chromium/src/+/main:docs/website/site/developers/design-documents/sync) -
165 Docs for the subsystem that allows one to sync data across devices.
justincarlson90a1c8c2017-04-14 00:34:25166* [Ozone Overview](ozone_overview.md) - Ozone is an abstraction layer between
167 the window system and low level input and graphics.
Carlos Knippschilde084bd22024-09-19 18:50:54168* [Guidelines for considering branch dates in project planning](release_branch_guidance.md) -
Dimitri Glazkov2070775d2017-10-24 17:47:02169 What to do (and not to do) around branch dates when scheduling your project
170 work.
Dominik Röttschesd113bfa2019-07-10 08:56:24171* [Watchlists](infra/watchlists.md) - Use watchlists to get notified of CLs
172 you are interested in.
Francois Doray7c0e54432020-08-25 15:27:28173* [Shutdown](shutdown.md) - Explains the steps of Chrome shutdown, to make it
174 easier to determine where to add a new shutdown operation.
Ben Henry95c0220f2021-05-10 15:59:20175* [API Keys](api_keys.md) - When you need access to Google APIs for a custom
176 build, fork, integration of stock Chromium, or are building ChromiumOS (for
177 login).
Mickey Burkseb4fa272022-11-03 23:16:01178* [User Education](../components/user_education/README.md) - Create
179 in-product help (IPH) and tutorials to call out Chromium features
justincarlson90a1c8c2017-04-14 00:34:25180
181### Testing
Kent Tamura59ffb022018-11-27 05:30:56182* [Running and Debugging Web Tests](testing/web_tests.md)
ZHANGHAOc94db1732021-05-07 12:04:19183* [On disabling tests](testing/on_disabling_tests.md)
Kent Tamura59ffb022018-11-27 05:30:56184* [Writing Web Tests](testing/writing_web_tests.md) - Web Tests using
justincarlson90a1c8c2017-04-14 00:34:25185 `content_shell`
Kent Tamura59ffb022018-11-27 05:30:56186* [Web Test Expectations and Baselines](testing/web_test_expectations.md) -
187 Setting expected results of web tests.
188* [Web Tests Tips](testing/web_tests_tips.md) - Best practices for web tests
Darwin Huanga8cd38182019-01-10 11:05:10189* [Web Tests with Manual Fallback](testing/web_tests_with_manual_fallback.md) -
justincarlson90a1c8c2017-04-14 00:34:25190 Writing tests that simulate manual interventions
Kent Tamura59ffb022018-11-27 05:30:56191* [Extending the Web Test Framework](how_to_extend_web_test_framework.md)
192* [Fixing Web Test Flakiness](testing/identifying_tests_that_depend_on_order.md) -
193 Diagnosing and fixing web test flakiness due to ordering dependencies.
194* [Running Web Tests using `content_shell`](testing/web_tests_in_content_shell.md) -
195 Running web tests by hand.
justincarlson90a1c8c2017-04-14 00:34:25196* [Web Platform Tests](testing/web_platform_tests.md) - Shared tests across
197 browser vendors
Joshua Peraza6f96b9d2019-02-12 16:55:14198* [Using Crashpad with `content_shell`](testing/using_crashpad_with_content_shell.md) -
justincarlson90a1c8c2017-04-14 00:34:25199 Capture stack traces on layout test crashes without an attached debugger
Lei Lei8aa9db622019-05-01 21:08:01200* [Test Descriptions](testing/test_descriptions.md) - Unit test targets that can be
Quinten Yearsley317532d2021-10-20 17:10:31201 built, with associated descriptions.
Xiaohan Wang203c7412019-10-09 23:34:59202* [Fuzz Testing](../testing/libfuzzer/README.md) - Fuzz testing in Chromium.
Lei Lei8aa9db622019-05-01 21:08:01203* [IPC Fuzzer](testing/ipc_fuzzer.md) - Fuzz testing of Chromium IPC interfaces.
204* [Running Chrome tests with AddressSanitizer (asan) and LeakSanitizer (lsan)](testing/linux_running_asan_tests.md) -
205 Run Chrome tests with ASAN and LSAN builds to detect addressability issues and memory leaks.
Yuke Liao43bbbcd52019-06-21 19:34:50206* [Code Coverage](testing/code_coverage.md) - Code coverage for Chromium.
207* [Code Coverage in Gerrit](testing/code_coverage_in_gerrit.md) - Per-CL code
208 coverage in Gerrit to assist code reviews.
justincarlson90a1c8c2017-04-14 00:34:25209
Ming-Ying Chungc23505d62022-09-22 10:07:33210### Configuration Docs
211
212* [Configuration: Prefs, Settings, Features, Switches & Flags](configuration.md) - Explains different ways to gate a new feature.
213* [Adding a new feature flag in chrome://flags](how_to_add_your_feature_flag.md) - Quick guide to add a new feature flag to experiment your feature.
214* [Runtime Enabled Features](https://chromium.googlesource.com/chromium/src/+/main/third_party/blink/renderer/platform/RuntimeEnabledFeatures.md)
215* [Initialization of Blink runtime features in content layer](initialize_blink_features.md)
216* [Integrating a feature with the origin trials framework](origin_trials_integration.md)
217
Kenneth Russell9618adde2018-05-03 03:16:05218### GPU-related docs
219* [GPU Pixel Wrangling](gpu/pixel_wrangling.md) - Instructions for GPU
220 pixel wrangling (the GPU sheriffing rotation).
221* [Debugging GPU related code](gpu/debugging_gpu_related_code.md) - Hints for
222 debugging GPU- and graphics-related code.
223* [GPU Testing](gpu/gpu_testing.md) - Description of Chromium's GPU testing
224 infrastructure.
225* [GPU Bot Details](gpu/gpu_testing_bot_details.md) - In-depth description of
226 how the bots are maintained.
227
justincarlson90a1c8c2017-04-14 00:34:25228### Misc Linux-Specific Docs
Tom Anderson93e49e492019-12-23 19:55:37229* [Linux Proxy Config](linux/proxy_config.md) - Network proxy sources on Linux
230* [Debugging SSL on Linux](linux/debugging_ssl.md) - Tips on debugging SSL
justincarlson90a1c8c2017-04-14 00:34:25231 code in Linux
Quinten Yearsley317532d2021-10-20 17:10:31232* [Linux Cert Management](linux/cert_management.md) - Managing X.509
justincarlson90a1c8c2017-04-14 00:34:25233 Certificates in Linux
Tom Anderson93e49e492019-12-23 19:55:37234* [Tips for Debugging on Linux](linux/debugging.md)
235* [Linux GTK Theme Integration](linux/gtk_theme_integration.md) - Having
justincarlson90a1c8c2017-04-14 00:34:25236 Chrome match the GTK+ theme.
Tom Anderson93e49e492019-12-23 19:55:37237* [Browser Plugins on Linux](linux/plugins.md) - A collection of links to
justincarlson90a1c8c2017-04-14 00:34:25238 information on how browser plugins work on Linux
Tom Anderson93e49e492019-12-23 19:55:37239* [Linux Crash Dumping](linux/crash_dumping.md) - How Breakpad uploads crash
justincarlson90a1c8c2017-04-14 00:34:25240 reports to Google crash servers.
Tom Anderson93e49e492019-12-23 19:55:37241* [Linux Minidump to Core](linux/minidump_to_core.md) - How to convert a
justincarlson90a1c8c2017-04-14 00:34:25242 Breakpad-generated minidump files to a core file readable by most debuggersx
Tom Anderson93e49e492019-12-23 19:55:37243* [Linux Sandbox IPC](linux/sandbox_ipc.md) - The lower level UPC system used
justincarlson90a1c8c2017-04-14 00:34:25244 to route requests from the bottom of the call stack up into the browser.
Tom Anderson93e49e492019-12-23 19:55:37245* [Linux Dev Build as Default Browser](linux/dev_build_as_default_browser.md) -
justincarlson90a1c8c2017-04-14 00:34:25246 How to configure a Dev build of Chrome as the default browser in Linux.
Tom Anderson93e49e492019-12-23 19:55:37247* [Linux Chromium Packages](linux/chromium_packages.md) - Packages of Chromium
justincarlson90a1c8c2017-04-14 00:34:25248 browser (not Chrome) provided by some Linux distributions.
249* [`seccomp` Sandbox Crash Dumping](seccomp_sandbox_crash_dumping.md) - Notes
250 on crash dumping a process running in a seccomp sandbox.
Tom Anderson93e49e492019-12-23 19:55:37251* [Linux Password Storage](linux/password_storage.md) - Keychain integrations
justincarlson90a1c8c2017-04-14 00:34:25252 between Chromium and Linux.
Ivan Sandrkfe73ee82018-03-23 11:54:16253* [Linux Sublime Development](sublime_ide.md) - Using Sublime as an IDE
justincarlson90a1c8c2017-04-14 00:34:25254 for Chromium development on Linux.
Tom Anderson93e49e492019-12-23 19:55:37255* [Building and Debugging GTK](linux/building_debug_gtk.md) - Building
justincarlson90a1c8c2017-04-14 00:34:25256 Chromium against GTK using lower optimization levels and/or more debugging
257 symbols.
Tom Anderson93e49e492019-12-23 19:55:37258* [Debugging GTK](linux/debugging_gtk.md) - Using the GTK Debug packages and
justincarlson90a1c8c2017-04-14 00:34:25259 related tools.
Tom Anderson93e49e492019-12-23 19:55:37260* [Chroot Notes](linux/using_a_chroot.md) - Setting up a chroot to work around
justincarlson90a1c8c2017-04-14 00:34:25261 libfreetype differences in some versions of Linux.
yoon6aae838e2025-05-05 21:43:44262* [Linux Sandboxing](../sandbox/linux/README.md) - The Linux multi-process model to
justincarlson90a1c8c2017-04-14 00:34:25263 isolate browser components with different privileges.
Tom Anderson93e49e492019-12-23 19:55:37264* [Zygote Process](linux/zygote.md) - How the Linux Zygote process, used to
justincarlson90a1c8c2017-04-14 00:34:25265 spawn new processes, works.
Lei Lei8aa9db622019-05-01 21:08:01266* [Running Web Tests on Linux](testing/web_tests_linux.md) - Linux-specific
Kent Tamura59ffb022018-11-27 05:30:56267 instructions for running web tests.
Tom Anderson93e49e492019-12-23 19:55:37268* [Linux Sysroot Images](linux/sysroot.md) - How builds use libraries on Linux
269* [Linux Hardware Video Decoding](linux/hw_video_decode.md) - Enabling
justincarlson90a1c8c2017-04-14 00:34:25270 hardware video decode codepaths on Linux
271
272### Misc MacOS-Specific Docs
Robert Sesek176a7c42021-04-30 20:34:17273* [Mac Debugging Tips](mac/debugging.md) - An introduction to debugging on
274 Mac, as well as a collection of useful tips.
justincarlson90a1c8c2017-04-14 00:34:25275* [Using CCache on Mac](ccache_mac.md) - Speed up builds on Mac using ccache
276 with clang/ninja
277* [Cocoa tips and tricks](cocoa_tips_and_tricks.md) - A collection of idioms
278 used when writing Cocoa views and controllers
justincarlson90a1c8c2017-04-14 00:34:25279
280### Misc Windows-Specific Docs
281* [Handling cygwin rebaseall failures](cygwin_dll_remapping_failure.md)
282* [Hacking on ANGLE in Chromium](angle_in_chromium.md) - OpenGL ES 2.0 built
283 on top of DirectX
justincarlson90a1c8c2017-04-14 00:34:25284* [Windows Split DLLs](windows_split_dll.md) - Splitting `chrome.dll` into
285 multiple dlls to work around toolchain limitations on Windows.
David Bienvenucc6d2ec02020-10-05 23:11:59286* [Windows Native Window Occlusion Tracking](windows_native_window_occlusion_tracking.md)
Trevor Perrier2c143892020-12-10 21:40:42287* [Windows PWA Integration](windows_pwa_integration.md) - Integration with
David Bienvenucc6d2ec02020-10-05 23:11:59288 Progressive Web Apps on Windows
289* [Windows Shortcut and Taskbar Handling](windows_shortcut_and_taskbar_handling.md)
290* [Windows Virtual Desktop Integration](windows_virtual_desktop_handling.md)
justincarlson90a1c8c2017-04-14 00:34:25291
292### Misc Android-Specific Docs
293* [Google Play Services in Chrome for Android](google_play_services.md)
294* [Accessing C++ Enums in Java](android_accessing_cpp_enums_in_java.md) - How
295 to use C++-defined enums in Java code
296* [Profiling Content Shell on Android](profiling_content_shell_on_android.md) -
297 Setting up profiling for `content_shell` on Android
298* [Working Remotely with Android](working_remotely_with_android.md) - Building
299 on a remote machine for an Android device connected to your local machine
Lei Lei8aa9db622019-05-01 21:08:01300* [Android Test Instructions](testing/android_test_instructions.md) - Running a build
justincarlson90a1c8c2017-04-14 00:34:25301 on an Android device or emulator.
302* [Android Debugging](android_debugging_instructions.md) - Tools and tips for
303 how to debug Java and/or C/C++ code running on Android.
304* [Android Logging](android_logging.md) - How Chrome's logging API works with
305 `android.util.Log` on Android, and usage guidelines.
David 'Digit' Turner40560ef72018-03-07 09:44:28306* [Android Java Static Analysis](../build/android/docs/lint.md) - Catching
307 Java related issues at compile time with the 'lint' tool.
308* [Java Code Coverage](../build/android/docs/coverage.md) - Collecting code
309 coverage data with the EMMA tool.
Andrew Grieve7e777abf2021-08-17 19:43:59310* [Dynamic Feature Modules (DFMs)](android_dynamic_feature_modules.md) - What
311 are they and how to create new ones.
임채린ad4c8e62025-05-15 14:27:30312* [Other build-related Android docs](../build/android/docs/README.md)
Theresa Wellingtonb0767a72019-10-01 00:17:46313* [Chrome for Android UI](ui/android/overview.md) - Resources and best practices for
314 developing UI
justincarlson90a1c8c2017-04-14 00:34:25315
316### Misc iOS-Specific Docs
317* [Continuous Build and Test Infrastructure for Chromium for iOS](ios/infra.md)
318* [Opening links in Chrome for iOS](ios/opening_links.md) - How to have your
319 iOS app open links in Chrome.
320* [User Agent in Chrome for iOS](ios/user_agent.md) - Notes on User Agent
321 strings using Chrome for iOS.
Mike Baxley47db7d82017-11-16 15:57:17322* [Running iOS test suites locally](ios/testing.md)
Mark Cogan0abda9652020-04-15 11:22:07323* [Working With Project Files in iOS](ios/working_with_files.md) - How
324 to add, remove, and rename files in the iOS Chromium project.
justincarlson90a1c8c2017-04-14 00:34:25325
Daniel Eratace8d3622017-12-20 23:27:24326### Misc Chrome-OS-Specific Docs
Jacob Dufault4260b1482019-04-29 23:17:24327* [Setting up captive portals and other restrictive networks](login/restrictive_networks.md)
Denis Kuznetsov885b1852019-05-15 19:07:48328* [Enterprise Enrollment](enterprise/enrollment.md)
329 * [Kiosk mode and public sessions](enterprise/kiosk_public_session.md)
Jacob Dufault4260b1482019-04-29 23:17:24330* [Debugging UI in OOBE/login/lock](login/ui_debugging.md)
Daniel Eratace8d3622017-12-20 23:27:24331* [Chrome Logging on Chrome OS](chrome_os_logging.md)
Laurent Chavey19a8d162021-02-11 00:36:42332* [Debugging tips](testing/chromeos_debugging_tips.md)
Daniel Eratace8d3622017-12-20 23:27:24333
Dan Beam19812212018-11-29 08:16:56334### Misc WebUI-Specific Docs
dpapad09934792025-01-23 16:59:50335* [WebUI Explainer](webui/webui_explainer.md) - An explanation of C++ and
336 TypeScript infrastructural code for Chrome UIs implemented with web
337 technologies (i.e. chrome:// URLs).
338* [Optimizing Chrome Web UIs](webui/optimizing_web_uis.md) - Notes on making
339 WebUIs more performant
340* [Trusted Types on WebUI](webui/trusted_types_on_webui.md) - Tips for coding
341 in WebUI with Trusted Types in mind.
342* [chrome-untrusted:// FAQ](webui/chrome_untrusted.md) - Explainer on the
343 usage of the `chrome-untrusted://` scheme for hosting WebUIs that handle
Carlos Knippschilde084bd22024-09-19 18:50:54344 untrustworthy content.
Dan Beam19812212018-11-29 08:16:56345
justincarlson90a1c8c2017-04-14 00:34:25346### Media
347* [Audio Focus Handling](media/audio_focus.md) - How multiple MediaSession
348 audio streams interact
349* [Autoplay of HTMLMediaElements](media/autoplay.md) - How HTMLMediaElements
350 are autoplayed.
Thomas Guilbert43ad2f72023-04-06 01:57:33351* [Latency tracing](media/latency_tracing.md) - How to use the
352 `"audio.latency"` tracing category to measure audio latency.
justincarlson90a1c8c2017-04-14 00:34:25353* [Piranha Plant](piranha_plant.md) - Future architecture of MediaStreams
henrika4241f56a2023-08-21 16:20:58354* [Media Capture](media/capture/README.md) - Features and APIs that enable the
355 browser to capture pixels and audio from itself or the underlying OS.
David Staessens4f4910872019-10-28 03:18:51356* [Video Encode Accelerator Tests](media/gpu/veatest_usage.md) - How to
357 use the accelerated video encoder test program.
David Staessensf3404c12019-04-16 00:12:05358* [Video Decoder Tests](media/gpu/video_decoder_test_usage.md) - Running the
David Staessens4f4910872019-10-28 03:18:51359 video decoder tests.
David Staessens80711e82019-04-16 00:23:14360* [Video Decoder Performance Tests](media/gpu/video_decoder_perf_test_usage.md) -
David Staessens4f4910872019-10-28 03:18:51361 Running the video decoder performance tests.
justincarlson90a1c8c2017-04-14 00:34:25362
363### Accessibility
364* [Accessibility Overview](accessibility/overview.md) - Overview of
365 accessibility concerns and approaches in Chromium.
Josiah Krutzac2b2872022-01-13 18:32:49366* [Accessibility Tests](accessibility/browser/tests.md) - Where to find
justincarlson90a1c8c2017-04-14 00:34:25367 accessibility-related tests in the codebase.
Josiah Krutzac2b2872022-01-13 18:32:49368* [ChromeVox on Chrome OS](accessibility/os/chromevox.md) - Enabling spoken
justincarlson90a1c8c2017-04-14 00:34:25369 feedback (ChromeVox) on Chrome OS.
Josiah Krutzac2b2872022-01-13 18:32:49370* [ChromeVox on Desktop Linux](accessibility/os/chromevox_on_desktop_linux.md) -
justincarlson90a1c8c2017-04-14 00:34:25371 Enabling spoken feedback (ChromeVox) on desktop Linux.
Josiah Krutzac2b2872022-01-13 18:32:49372* [Offscreen, Invisible and Size](accessibility/browser/offscreen.md) - How Chrome
Katie Ded1a9972018-04-17 16:22:18373 defines offscreen, invisible and size in the accessibility tree.
Josiah Krutzac2b2872022-01-13 18:32:49374* [Text to Speech](accessibility/browser/tts.md) - Overview of text to speech in
Katie Ded1a9972018-04-17 16:22:18375 Chrome and Chrome OS.
Josiah Krutzac2b2872022-01-13 18:32:49376* [BRLTTY in Chrome OS](accessibility/os/brltty.md) - Chrome OS integration with
justincarlson90a1c8c2017-04-14 00:34:25377 BRLTTY to support refreshable braille displays
Josiah Krutzac2b2872022-01-13 18:32:49378* [PATTS on Chrome OS](accessibility/os/patts.md) - Notes on the PATTS speech
Quinten Yearsley317532d2021-10-20 17:10:31379 synthesis engine used on Chrome OS
justincarlson90a1c8c2017-04-14 00:34:25380* [VoiceOver](ios/voiceover.md) - Using Apple's VoiceOver feature with
381 Chromium on iOS.
382
Erik Chencd19c162018-04-21 00:27:24383### Memory
384* [Memory Overview](memory/README.md)
Daniel Lehmann57f106b2024-03-21 10:39:38385* [Heap Profiling with External Tools](memory/heap_profiling_external.md)
Erik Chencd19c162018-04-21 00:27:24386
justincarlson90a1c8c2017-04-14 00:34:25387### Memory Infrastructure Timeline Profiling (MemoryInfra)
388* [Overview](memory-infra/README.md)
389* [GPU Profiling](memory-infra/probe-gpu.md)
390* [Adding Tracing to a Component](memory-infra/adding_memory_infra_tracing.md)
391* [Enabling Startup Tracing](memory-infra/memory_infra_startup_tracing.md)
392* [Memory Usage in CC](memory-infra/probe-cc.md)
393* [Memory Benchmarks](memory-infra/memory_benchmarks.md)
394* [Heap Profiling](memory-infra/heap_profiler.md)
justincarlson90a1c8c2017-04-14 00:34:25395
Ilya Sherman3cb2087e2020-09-17 17:30:56396### Metrics
397* [Histograms](/tools/metrics/histograms/README.md)
398* [User Actions](/tools/metrics/actions/README.md)
399* [Code review guidelines](/tools/metrics/histograms/review_guidelines.md)
400
justincarlson90a1c8c2017-04-14 00:34:25401### Misc
402* [Useful URLs](useful_urls.md) - A collection of links to various tools and
403 dashboards
404* [ERC IRC](erc_irc.md) - Using ERC in EMACS to access IRC
405* [Kiosk Mode](kiosk_mode.md) - Simulating kiosk mode.
406* [User Handle Mapping](user_handle_mapping.md) - Names of developers across
407 Chromium/IRC/Google
408* [Documentation Best Practices](documentation_best_practices.md)
409* [Documentation Guidelines](documentation_guidelines.md)
justincarlson90a1c8c2017-04-14 00:34:25410* [Chromium Browser vs Google Chrome](chromium_browser_vs_google_chrome.md) -
411 What's the difference between _Chromium Browser_ and _Google Chrome_?
Jochen Eisinger3199b012019-04-04 15:37:29412* [Google Chrome branded builds](google_chrome_branded_builds.md)
justincarlson90a1c8c2017-04-14 00:34:25413* [Proxy Auto Config using WPAD](proxy_auto_config.md) - How WPAD servers are
414 used to automatically set proxy settings.
415* [Installing Chromium OS on VMWare](installation_at_vmware.md) - How to
416 install Chromium OS on VMWare.
Steve Kobes22fb19c2017-07-05 21:49:08417* [User Data Directory](user_data_dir.md) - How the user data and cache
418 directories are determined on all platforms.
Greg Thompson47bdc672020-01-06 14:25:31419* [User Data Storage](user_data_storage.md) - Policy documentation for files in User Data.
Ken Rockotab035122019-02-06 00:35:24420
421### Mojo &amp; Services
422* [Intro to Mojo &amp; Services](mojo_and_services.md) - Quick introduction
423 to Mojo and services in Chromium, with examples
424* [Mojo API Reference](/mojo/README.md) - Detailed reference documentation for
425 all things Mojo
Ken Rockotab035122019-02-06 00:35:24426* [Service Development Guidelines](/services/README.md) - Guidelines for
427 service development in the Chromium tree
428* [Servicifying Chromium Features](servicification.md) - General advice for
429 integrating new and existing subsystems into Chromium as services
430* [Converting Legacy IPC to Mojo](mojo_ipc_conversion.md) - Tips and common
431 patterns for practical IPC conversion work
Oksana Zhuravlova437d8a82019-02-26 00:25:50432* [Mojo “Style” Guide](security/mojo.md) - Recommendations for best practices
433 from Mojo and IPC reviewers
Harvey Yang01729de2021-03-01 11:02:24434* [D-Bus Mojo Connection Service](dbus_mojo_connection_service.md) - A service
435 in Chrome to bootstrap CrOS services' Mojo connection.
justincarlson90a1c8c2017-04-14 00:34:25436
Carlos Knippschilde084bd22024-09-19 18:50:54437### Security
438* [The Rule Of 2](security/rule-of-2.md) - An imoportant security rule when
439 handling untrustworthy contents (like anything downloaded from the web).
440
Nicolás Peña Morenoc7391bb2020-04-30 22:17:12441### Speed
442* [Chrome Speed](speed/README.md) - Documentation for performance measurements and regressions in Chrome.
Manuel Lagana1821fff82022-05-12 18:30:35443* [Chrome Speed Metrics](speed_metrics/README.md) - Documentation about user experience metrics on the web and their JavaScript APIs.
Nicolás Peña Morenoc7391bb2020-04-30 22:17:12444
Peter Kasting45f632f2022-12-17 00:03:25445### UI
446* [Chromium UI Platform](ui/index.md) - All things user interface
447
Nigel Tao187a4792023-09-28 22:30:44448### What's Up With That Transcripts
449
450These are transcripts of [What's Up With
451That](https://www.youtube.com/playlist?list=PL9ioqAuyl6ULIdZQys3fwRxi3G3ns39Hq),
452a video series of interviews with Chromium software engineers.
453
454* [What's Up With Pointers - Episode 1](transcripts/wuwt-e01-pointers.md)
455* [What's Up With DCHECKs - Episode 2](transcripts/wuwt-e02-dchecks.md)
456* [What's Up With //content - Episode 3](transcripts/wuwt-e03-content.md)
457* [What's Up With Tests - Episode 4](transcripts/wuwt-e04-tests.md)
458* [What's Up With BUILD.gn - Episode 5](transcripts/wuwt-e05-build-gn.md)
459* [What's Up With Open Source - Episode 6](transcripts/wuwt-e06-open-source.md)
460* [What's Up With Mojo - Episode 7](transcripts/wuwt-e07-mojo.md)
461* [What's Up With Processes - Episode 8](transcripts/wuwt-e08-processes.md)
462* [What's Up With Site Isolation - Episode 9](transcripts/wuwt-e09-site-isolation.md)
Nigel Tao4f3b1b2b2023-12-01 00:21:49463* [What's Up With Web Platform - Episode 10](transcripts/wuwt-e10-web-platform.md)
Nigel Tao9c6b7ff2025-01-11 00:59:17464* [What's Up With Web Standards - Episode 11](transcripts/wuwt-e11-web-standards.md)
465* [What's Up With Base - Episode 12](transcripts/wuwt-e12-base.md)
Nigel Tao187a4792023-09-28 22:30:44466
justincarlson90a1c8c2017-04-14 00:34:25467### Probably Obsolete
justincarlson90a1c8c2017-04-14 00:34:25468* [TPM Quick Reference](tpm_quick_ref.md) - Trusted Platform Module notes.
469* [System Hardening Features](system_hardening_features.md) - A list of
470 current and planned Chrome OS security features.
justincarlson90a1c8c2017-04-14 00:34:25471* [WebView Policies](webview_policies.md)
Tom Anderson93e49e492019-12-23 19:55:37472* [Linux Profiling](linux/profiling.md) - How to profile Chromium on Linux
473* [Linux Graphics Pipeline](linux/graphics_pipeline.md)
474* [Linux `SUID` Sandbox](linux/suid_sandbox.md) - Sandboxing renderers using a
justincarlson90a1c8c2017-04-14 00:34:25475 SUID binary on Linux
Tom Anderson93e49e492019-12-23 19:55:37476* [Linux `SUID` Sandbox Development](linux/suid_sandbox_development.md) -
justincarlson90a1c8c2017-04-14 00:34:25477 Development on the above system.
Tom Anderson93e49e492019-12-23 19:55:37478* [Linux PID Namespace Support](linux/pid_namespace_support.md)
justincarlson90a1c8c2017-04-14 00:34:25479* [Vanilla msysgit workflow](vanilla_msysgit_workflow.md) - A workflow for
480 using mostly vanilla git on Windows.
justincarlson90a1c8c2017-04-14 00:34:25481* [Old Options](chrome_settings.md) - Pre-Material Design chrome://settings
482 notes.