blob: d8fc91518e0a2ebbfb0dd59db3bc0139d210e3dd [file] [log] [blame] [view]
nodir469b2a12015-09-14 16:20:211# Chromium docs
2
pwnall3f918382016-11-16 17:22:123This directory contains chromium project documentation in
Vincent Scheibde853a02017-07-13 23:31:184[Gitiles-flavored Markdown]. It is automatically [rendered by Gitiles].
5
6[Gitiles-flavored Markdown]: https://gerrit.googlesource.com/gitiles/+/master/Documentation/markdown.md
John Palmer046f9872021-05-24 01:24:567[rendered by Gitiles]: https://chromium.googlesource.com/chromium/src/+/main/docs/
nodir469b2a12015-09-14 16:20:218
justincarlson90a1c8c2017-04-14 00:34:259If you add new documents, please also add a link to them in the Document Index
10below.
11
12[TOC]
13
Vincent Scheib394b907a2017-07-14 22:30:0614## Creating Documentation
nodir469b2a12015-09-14 16:20:2115
Vincent Scheibde853a02017-07-13 23:31:1816Markdown documents must follow the
17[style guide](https://github.com/google/styleguide/tree/gh-pages/docguide).
nodir469b2a12015-09-14 16:20:2118
Vincent Scheib394b907a2017-07-14 22:30:0619### Preview local changes using [md_browser](../tools/md_browser/):
nodir6efa4992015-12-20 00:54:3320
21```bash
22# in chromium checkout
agabled40b9542016-05-11 01:15:0623./tools/md_browser/md_browser.py
nodir6efa4992015-12-20 00:54:3324```
25
Vincent Scheib394b907a2017-07-14 22:30:0626This is only an estimate. The **gitiles** view may differ.
nodir6efa4992015-12-20 00:54:3327
Vincent Scheib394b907a2017-07-14 22:30:0628### Review changes online with gerrit's links to gitiles:
29
Mathieu Perreault339625382017-07-29 00:32:58301. Upload a patch to gerrit, or receive a review request.
Vincent Scheib394b907a2017-07-14 22:30:0631 e.g. https://chromium-review.googlesource.com/c/572236
Mathieu Perreault339625382017-07-29 00:32:58322. View a specific .md file.
Vincent Scheib394b907a2017-07-14 22:30:0633 e.g. https://chromium-review.googlesource.com/c/572236/2/docs/README.md
343. Click on **gitiles** link at top of page.
35
36This **gitiles** view is the authoritative view, exactly the same as will be
37used when committed.
nodir6efa4992015-12-20 00:54:3338
justincarlson90a1c8c2017-04-14 00:34:2539## Document Index
40
41### Checking Out and Building
Tom Anderson93e49e492019-12-23 19:55:3742* [Linux Build Instructions](linux/build_instructions.md) - Linux
justincarlson90a1c8c2017-04-14 00:34:2543* [Mac Build Instructions](mac_build_instructions.md) - MacOS
44* [Windows Build Instructions](windows_build_instructions.md) - Windows
45* [Android Build Instructions](android_build_instructions.md) - Android target
46 (on a Linux host)
Tom Anderson93e49e492019-12-23 19:55:3747* [Cast Build Instructions](linux/cast_build_instructions.md) - Cast target
justincarlson90a1c8c2017-04-14 00:34:2548 (on a Linux host)
49* [Cast for Android Build Instructions](android_cast_build_instructions.md) -
50 Cast for Android (on a Linux host)
Chong Gu4749ec12021-02-17 01:41:0651* [Fuchsia Build Instructions](fuchsia/build_instructions.md) -
52 Fuchsia target (on a Linux host)
justincarlson90a1c8c2017-04-14 00:34:2553* [iOS Build Instructions](ios/build_instructions.md) - iOS target (on a MacOS
54 host)
Euisang Lim1f253912018-04-30 01:46:3255* [Chrome OS Build Instructions](chromeos_build_instructions.md) - Chrome OS
Tom Anderson93e49e492019-12-23 19:55:3756* [Linux Chromium ARM Recipes](linux/chromium_arm.md) - Recipes for building
justincarlson90a1c8c2017-04-14 00:34:2557 Chromium for ARM on Linux.
justincarlson90a1c8c2017-04-14 00:34:2558* [Chrome Component Build](component_build.md) - Faster builds using more
59 libraries
60* [Using the BuildRunner](using_build_runner.md) - Scripts that extract build
61 stops from builders and runs them locally on a slave
62* [Cr User Manual](cr_user_manual.md) - Manual for `cr`, a tool that tries to
63 hide some of the tools used for working on Chromium behind an abstraction
64 layer
65
justincarlsonad589ce2017-04-20 17:26:0766### Design Docs
67* See [design/README.md](design/README.md)
68
justincarlson90a1c8c2017-04-14 00:34:2569### Integrated Development Environment (IDE) Set Up Guides
70* [Android Studio](android_studio.md) - Android Studio for Android builds
manukh080b47e2019-12-19 22:06:1971* [Atom](atom.md) - Atom multi-platform code editor
72* [CLion](clion.md) - CLion IDE, supports GUI debugging.
justincarlson90a1c8c2017-04-14 00:34:2573* [Eclipse for Android](eclipse.md) - Eclipse for Android
Vincent Scheib196c7b42019-12-21 00:29:1974* [Eclipse for Linux](linux/eclipse_dev.md) - Eclipse for other platforms
justincarlson90a1c8c2017-04-14 00:34:2575 (This guide was written for Linux, but is probably usable on Windows/MacOS
76 as well)
justincarlson90a1c8c2017-04-14 00:34:2577* [EMACS Notes](emacs.md) - EMACS commands/styles/tool integrations
manukh080b47e2019-12-19 22:06:1978* [Qt Creator](qtcreator.md) - Using Qt Creator as an IDE or GUI debugger
79* [Visual Studio Code](vscode.md) - Visual Studio Code
justincarlson90a1c8c2017-04-14 00:34:2580
81### Git
82* [Git Cookbook](git_cookbook.md) - A collection of git recipes for common
83 tasks
84* [Git Tips](git_tips.md) - More git tips
85
86### Clang
87* [Clang Compiler](clang.md) - General information on the clang compiler, used
88 by default on Mac and Linux
89* [Clang Tool Refactoring](clang_tool_refactoring.md) - Leveraging clang tools
90 to perform refactorings that are AST-aware
91* [The Clang Static Analyzer](clang_static_analyzer.md) - How to enable static
92 analysis at build time
Yuke Liaobb571bd62018-10-31 21:51:5293* [Clang Code Coverage Wrapper](clang_code_coverage_wrapper.md) - Enable Clang
94 code coverage instrumentation for a subset of source files.
justincarlson90a1c8c2017-04-14 00:34:2595* [Writing Clang Plugins](writing_clang_plugins.md) - Don't write a clang
96 plugin, but if you do, read this
97* [Updating Clang](updating_clang.md) - Updating the version of Clang used to
98 build
99* [Using clang-format on Chromium C++ Code](clang_format.md) - Various ways to
100 invoke clang-format on C++ code
101* [Clang Tidy](clang_tidy.md) - Support for the `clang-tidy` tool in Chromium
102* [Updating Clang Format Binaries](updating_clang_format_binaries.md) - How up
103 update the clang-format binaries that come with a checkout of Chromium
104
105### General Development
Toby Huang5105f812019-08-08 23:47:57106* [Contributing to Chromium](contributing.md) - Reference workflow process for
107 contributing to the Chromium code base.
108* [Commit Checklist](commit_checklist.md) - Streamlined checklist to go
109 through before uploading CLs on Gerrit.
justincarlson90a1c8c2017-04-14 00:34:25110* [Code Reviews](code_reviews.md) - Code review requirements and guidelines
Mathieu Perreault339625382017-07-29 00:32:58111* [Respectful Code Reviews](cr_respect.md) - A guide for code reviewers
112* [Respectful Changes](cl_respect.md) - A guide for code authors
Yulan Lin55ae6a32020-07-31 17:58:29113* [Mandatory Code-Review Rollout](code_review_owners.md) - Upcoming policy changes related to code review and OWNERS
Eric Foo6ea4fbd2018-01-17 04:04:50114* [LUCI Migration FAQ](luci_migration_faq.md) - FAQ on Buildbot-to-LUCI
115 builder migration for Chromium
Eric Fooff7b4982017-12-19 01:59:15116* [Tour of Continuous Integration UI](tour_of_luci_ui.md) - A tour of our
Eric Foo6ea4fbd2018-01-17 04:04:50117 the user interface for LUCI, our continuous integration system
erikchenb83e010a2018-10-08 21:34:01118* [Parsing Test Results](parsing_test_results.md) - An introduction for how to
119 understand the results emitted by polygerrit and CI builds.
justincarlson90a1c8c2017-04-14 00:34:25120* [Closure Compilation](closure_compilation.md) - The _Closure_ JavaScript
121 compiler
fdoraybacba4a22017-05-10 21:10:00122* [Threading and Tasks in Chrome](threading_and_tasks.md) - How to run tasks
123 and handle thread safety in Chrome.
justincarlson90a1c8c2017-04-14 00:34:25124* [Callback<> and Bind()](callback.md) - All about Callbacks, Closures, and
125 Bind().
Trevor Perrier2c143892020-12-10 21:40:42126* [Chromium Views UI](ui/index.md) - Working with the desktop UI framework.
justincarlson90a1c8c2017-04-14 00:34:25127* [Views Platform Styling](ui/views/platform_style.md) - How views are styled
128 to fit in different native platforms
129* [Tab Helpers](tab_helpers.md) - Using WebContents/WebContentsObserver to add
130 features to browser tabs.
131* [Adding third_party Libraries](adding_to_third_party.md) - How to get code
132 into third_party/
133* [Graphical Debugging Aid for Chromium Views](graphical_debugging_aid_chromium_views.md) -
134 Visualizing view trees during debugging
135* [Bitmap Pipeline](bitmap_pipeline.md) - How bitmaps are moved from the
136 renderer to the screen.
justincarlson90a1c8c2017-04-14 00:34:25137* [Using the Origin Trials Framework](origin_trials_integration.md) - A
138 framework for conditionally enabling experimental APIs for testing.
Jan Krcal02520366d2018-03-07 10:05:18139* [`ClientTagBasedModelTypeProcessor` in Unified Sync and Storage](sync/uss/client_tag_based_model_type_processor.md) -
justincarlson90a1c8c2017-04-14 00:34:25140 Notes on the central data structure used in Chrome Sync.
141* [Chrome Sync's Model API](sync/model_api.md) - Data models used for syncing
142 information across devices using Chrome Sync.
143* [Ozone Overview](ozone_overview.md) - Ozone is an abstraction layer between
144 the window system and low level input and graphics.
145* [Optimizing Chrome Web UIs](optimizing_web_uis.md) - Notes on making webuis
146 more performant
Makoto Shimazu9f0bd3a2017-08-08 01:54:24147* [Adding a new feature flag in chrome://flags](how_to_add_your_feature_flag.md) - Quick
148 guide to add a new feature flag to experiment your feature.
Dimitri Glazkov2070775d2017-10-24 17:47:02149* [Guidelines for considering branch dates in project planning](release_branch_guidance.md) -
150 What to do (and not to do) around branch dates when scheduling your project
151 work.
Dan Beam19812212018-11-29 08:16:56152* [WebUI Explainer](webui_explainer.md) - An explanation of C++ and JavaScript
153 infrastructural code for Chrome UIs implemented with web technologies (i.e.
154 chrome:// URLs).
Dominik Röttschesd113bfa2019-07-10 08:56:24155* [Watchlists](infra/watchlists.md) - Use watchlists to get notified of CLs
156 you are interested in.
Francois Doray7c0e54432020-08-25 15:27:28157* [Shutdown](shutdown.md) - Explains the steps of Chrome shutdown, to make it
158 easier to determine where to add a new shutdown operation.
Ben Henry95c0220f2021-05-10 15:59:20159* [API Keys](api_keys.md) - When you need access to Google APIs for a custom
160 build, fork, integration of stock Chromium, or are building ChromiumOS (for
161 login).
justincarlson90a1c8c2017-04-14 00:34:25162
163### Testing
Kent Tamura59ffb022018-11-27 05:30:56164* [Running and Debugging Web Tests](testing/web_tests.md)
ZHANGHAOc94db1732021-05-07 12:04:19165* [On disabling tests](testing/on_disabling_tests.md)
Kent Tamura59ffb022018-11-27 05:30:56166* [Writing Web Tests](testing/writing_web_tests.md) - Web Tests using
justincarlson90a1c8c2017-04-14 00:34:25167 `content_shell`
Kent Tamura59ffb022018-11-27 05:30:56168* [Web Test Expectations and Baselines](testing/web_test_expectations.md) -
169 Setting expected results of web tests.
170* [Web Tests Tips](testing/web_tests_tips.md) - Best practices for web tests
Darwin Huanga8cd38182019-01-10 11:05:10171* [Web Tests with Manual Fallback](testing/web_tests_with_manual_fallback.md) -
justincarlson90a1c8c2017-04-14 00:34:25172 Writing tests that simulate manual interventions
Kent Tamura59ffb022018-11-27 05:30:56173* [Extending the Web Test Framework](how_to_extend_web_test_framework.md)
174* [Fixing Web Test Flakiness](testing/identifying_tests_that_depend_on_order.md) -
175 Diagnosing and fixing web test flakiness due to ordering dependencies.
176* [Running Web Tests using `content_shell`](testing/web_tests_in_content_shell.md) -
177 Running web tests by hand.
justincarlson90a1c8c2017-04-14 00:34:25178* [Web Platform Tests](testing/web_platform_tests.md) - Shared tests across
179 browser vendors
Joshua Peraza6f96b9d2019-02-12 16:55:14180* [Using Crashpad with `content_shell`](testing/using_crashpad_with_content_shell.md) -
justincarlson90a1c8c2017-04-14 00:34:25181 Capture stack traces on layout test crashes without an attached debugger
Lei Lei8aa9db622019-05-01 21:08:01182* [Test Descriptions](testing/test_descriptions.md) - Unit test targets that can be
justincarlson90a1c8c2017-04-14 00:34:25183 built, with associated desciptions.
Xiaohan Wang203c7412019-10-09 23:34:59184* [Fuzz Testing](../testing/libfuzzer/README.md) - Fuzz testing in Chromium.
Lei Lei8aa9db622019-05-01 21:08:01185* [IPC Fuzzer](testing/ipc_fuzzer.md) - Fuzz testing of Chromium IPC interfaces.
186* [Running Chrome tests with AddressSanitizer (asan) and LeakSanitizer (lsan)](testing/linux_running_asan_tests.md) -
187 Run Chrome tests with ASAN and LSAN builds to detect addressability issues and memory leaks.
Yuke Liao43bbbcd52019-06-21 19:34:50188* [Code Coverage](testing/code_coverage.md) - Code coverage for Chromium.
189* [Code Coverage in Gerrit](testing/code_coverage_in_gerrit.md) - Per-CL code
190 coverage in Gerrit to assist code reviews.
justincarlson90a1c8c2017-04-14 00:34:25191
Kenneth Russell9618adde2018-05-03 03:16:05192### GPU-related docs
193* [GPU Pixel Wrangling](gpu/pixel_wrangling.md) - Instructions for GPU
194 pixel wrangling (the GPU sheriffing rotation).
195* [Debugging GPU related code](gpu/debugging_gpu_related_code.md) - Hints for
196 debugging GPU- and graphics-related code.
197* [GPU Testing](gpu/gpu_testing.md) - Description of Chromium's GPU testing
198 infrastructure.
199* [GPU Bot Details](gpu/gpu_testing_bot_details.md) - In-depth description of
200 how the bots are maintained.
201
justincarlson90a1c8c2017-04-14 00:34:25202### Misc Linux-Specific Docs
Tom Anderson93e49e492019-12-23 19:55:37203* [Linux Proxy Config](linux/proxy_config.md) - Network proxy sources on Linux
204* [Debugging SSL on Linux](linux/debugging_ssl.md) - Tips on debugging SSL
justincarlson90a1c8c2017-04-14 00:34:25205 code in Linux
Tom Anderson93e49e492019-12-23 19:55:37206* [Linux Cert Managment](linux/cert_management.md) - Managing X.509
justincarlson90a1c8c2017-04-14 00:34:25207 Certificates in Linux
Tom Anderson93e49e492019-12-23 19:55:37208* [Tips for Debugging on Linux](linux/debugging.md)
209* [Linux GTK Theme Integration](linux/gtk_theme_integration.md) - Having
justincarlson90a1c8c2017-04-14 00:34:25210 Chrome match the GTK+ theme.
Tom Anderson93e49e492019-12-23 19:55:37211* [Browser Plugins on Linux](linux/plugins.md) - A collection of links to
justincarlson90a1c8c2017-04-14 00:34:25212 information on how browser plugins work on Linux
Tom Anderson93e49e492019-12-23 19:55:37213* [Linux Crash Dumping](linux/crash_dumping.md) - How Breakpad uploads crash
justincarlson90a1c8c2017-04-14 00:34:25214 reports to Google crash servers.
Tom Anderson93e49e492019-12-23 19:55:37215* [Linux Minidump to Core](linux/minidump_to_core.md) - How to convert a
justincarlson90a1c8c2017-04-14 00:34:25216 Breakpad-generated minidump files to a core file readable by most debuggersx
Tom Anderson93e49e492019-12-23 19:55:37217* [Linux Sandbox IPC](linux/sandbox_ipc.md) - The lower level UPC system used
justincarlson90a1c8c2017-04-14 00:34:25218 to route requests from the bottom of the call stack up into the browser.
Tom Anderson93e49e492019-12-23 19:55:37219* [Linux Dev Build as Default Browser](linux/dev_build_as_default_browser.md) -
justincarlson90a1c8c2017-04-14 00:34:25220 How to configure a Dev build of Chrome as the default browser in Linux.
Tom Anderson93e49e492019-12-23 19:55:37221* [Linux Chromium Packages](linux/chromium_packages.md) - Packages of Chromium
justincarlson90a1c8c2017-04-14 00:34:25222 browser (not Chrome) provided by some Linux distributions.
223* [`seccomp` Sandbox Crash Dumping](seccomp_sandbox_crash_dumping.md) - Notes
224 on crash dumping a process running in a seccomp sandbox.
Tom Anderson93e49e492019-12-23 19:55:37225* [Linux Password Storage](linux/password_storage.md) - Keychain integrations
justincarlson90a1c8c2017-04-14 00:34:25226 between Chromium and Linux.
Ivan Sandrkfe73ee82018-03-23 11:54:16227* [Linux Sublime Development](sublime_ide.md) - Using Sublime as an IDE
justincarlson90a1c8c2017-04-14 00:34:25228 for Chromium development on Linux.
Tom Anderson93e49e492019-12-23 19:55:37229* [Building and Debugging GTK](linux/building_debug_gtk.md) - Building
justincarlson90a1c8c2017-04-14 00:34:25230 Chromium against GTK using lower optimization levels and/or more debugging
231 symbols.
Tom Anderson93e49e492019-12-23 19:55:37232* [Debugging GTK](linux/debugging_gtk.md) - Using the GTK Debug packages and
justincarlson90a1c8c2017-04-14 00:34:25233 related tools.
Tom Anderson93e49e492019-12-23 19:55:37234* [Chroot Notes](linux/using_a_chroot.md) - Setting up a chroot to work around
justincarlson90a1c8c2017-04-14 00:34:25235 libfreetype differences in some versions of Linux.
Tom Anderson93e49e492019-12-23 19:55:37236* [Linux Sandboxing](linux/sandboxing.md) - The Linux multi-process model to
justincarlson90a1c8c2017-04-14 00:34:25237 isolate browser components with different privileges.
Tom Anderson93e49e492019-12-23 19:55:37238* [Zygote Process](linux/zygote.md) - How the Linux Zygote process, used to
justincarlson90a1c8c2017-04-14 00:34:25239 spawn new processes, works.
Lei Lei8aa9db622019-05-01 21:08:01240* [Running Web Tests on Linux](testing/web_tests_linux.md) - Linux-specific
Kent Tamura59ffb022018-11-27 05:30:56241 instructions for running web tests.
Tom Anderson93e49e492019-12-23 19:55:37242* [Linux Sysroot Images](linux/sysroot.md) - How builds use libraries on Linux
243* [Linux Hardware Video Decoding](linux/hw_video_decode.md) - Enabling
justincarlson90a1c8c2017-04-14 00:34:25244 hardware video decode codepaths on Linux
245
246### Misc MacOS-Specific Docs
Robert Sesek176a7c42021-04-30 20:34:17247* [Mac Debugging Tips](mac/debugging.md) - An introduction to debugging on
248 Mac, as well as a collection of useful tips.
justincarlson90a1c8c2017-04-14 00:34:25249* [Using CCache on Mac](ccache_mac.md) - Speed up builds on Mac using ccache
250 with clang/ninja
251* [Cocoa tips and tricks](cocoa_tips_and_tricks.md) - A collection of idioms
252 used when writing Cocoa views and controllers
253* [MacViews Release Plan](ui/views/macviews_release.md)
254
255### Misc Windows-Specific Docs
256* [Handling cygwin rebaseall failures](cygwin_dll_remapping_failure.md)
257* [Hacking on ANGLE in Chromium](angle_in_chromium.md) - OpenGL ES 2.0 built
258 on top of DirectX
justincarlson90a1c8c2017-04-14 00:34:25259* [Windows Split DLLs](windows_split_dll.md) - Splitting `chrome.dll` into
260 multiple dlls to work around toolchain limitations on Windows.
David Bienvenucc6d2ec02020-10-05 23:11:59261* [Windows Native Window Occlusion Tracking](windows_native_window_occlusion_tracking.md)
Trevor Perrier2c143892020-12-10 21:40:42262* [Windows PWA Integration](windows_pwa_integration.md) - Integration with
David Bienvenucc6d2ec02020-10-05 23:11:59263 Progressive Web Apps on Windows
264* [Windows Shortcut and Taskbar Handling](windows_shortcut_and_taskbar_handling.md)
265* [Windows Virtual Desktop Integration](windows_virtual_desktop_handling.md)
justincarlson90a1c8c2017-04-14 00:34:25266
267### Misc Android-Specific Docs
268* [Google Play Services in Chrome for Android](google_play_services.md)
269* [Accessing C++ Enums in Java](android_accessing_cpp_enums_in_java.md) - How
270 to use C++-defined enums in Java code
271* [Profiling Content Shell on Android](profiling_content_shell_on_android.md) -
272 Setting up profiling for `content_shell` on Android
273* [Working Remotely with Android](working_remotely_with_android.md) - Building
274 on a remote machine for an Android device connected to your local machine
Lei Lei8aa9db622019-05-01 21:08:01275* [Android Test Instructions](testing/android_test_instructions.md) - Running a build
justincarlson90a1c8c2017-04-14 00:34:25276 on an Android device or emulator.
277* [Android Debugging](android_debugging_instructions.md) - Tools and tips for
278 how to debug Java and/or C/C++ code running on Android.
279* [Android Logging](android_logging.md) - How Chrome's logging API works with
280 `android.util.Log` on Android, and usage guidelines.
David 'Digit' Turner40560ef72018-03-07 09:44:28281* [Android Java Static Analysis](../build/android/docs/lint.md) - Catching
282 Java related issues at compile time with the 'lint' tool.
283* [Java Code Coverage](../build/android/docs/coverage.md) - Collecting code
284 coverage data with the EMMA tool.
Andrew Grieve7e777abf2021-08-17 19:43:59285* [Dynamic Feature Modules (DFMs)](android_dynamic_feature_modules.md) - What
286 are they and how to create new ones.
287* [Other build-related Android docs](../build/android/docs/index.md)
Theresa Wellingtonb0767a72019-10-01 00:17:46288* [Chrome for Android UI](ui/android/overview.md) - Resources and best practices for
289 developing UI
justincarlson90a1c8c2017-04-14 00:34:25290
291### Misc iOS-Specific Docs
292* [Continuous Build and Test Infrastructure for Chromium for iOS](ios/infra.md)
293* [Opening links in Chrome for iOS](ios/opening_links.md) - How to have your
294 iOS app open links in Chrome.
295* [User Agent in Chrome for iOS](ios/user_agent.md) - Notes on User Agent
296 strings using Chrome for iOS.
Mike Baxley47db7d82017-11-16 15:57:17297* [Running iOS test suites locally](ios/testing.md)
Mark Cogan0abda9652020-04-15 11:22:07298* [Working With Project Files in iOS](ios/working_with_files.md) - How
299 to add, remove, and rename files in the iOS Chromium project.
justincarlson90a1c8c2017-04-14 00:34:25300
Daniel Eratace8d3622017-12-20 23:27:24301### Misc Chrome-OS-Specific Docs
Jacob Dufault4260b1482019-04-29 23:17:24