nodir | 469b2a1 | 2015-09-14 16:20:21 | [diff] [blame] | 1 | # Chromium docs |
| 2 | |
pwnall | 3f91838 | 2016-11-16 17:22:12 | [diff] [blame] | 3 | This directory contains chromium project documentation in |
justincarlson | 90a1c8c | 2017-04-14 00:34:25 | [diff] [blame] | 4 | [Gitiles-flavored Markdown](https://gerrit.googlesource.com/gitiles/+/master/Documentation/markdown.md). |
nodir | 469b2a1 | 2015-09-14 16:20:21 | [diff] [blame] | 5 | It is automatically |
| 6 | [rendered by Gitiles](https://chromium.googlesource.com/chromium/src/+/master/docs/). |
| 7 | |
justincarlson | 90a1c8c | 2017-04-14 00:34:25 | [diff] [blame] | 8 | If you add new documents, please also add a link to them in the Document Index |
| 9 | below. |
| 10 | |
| 11 | [TOC] |
| 12 | |
nodir | 469b2a1 | 2015-09-14 16:20:21 | [diff] [blame] | 13 | ## Style guide |
| 14 | |
justincarlson | 90a1c8c | 2017-04-14 00:34:25 | [diff] [blame] | 15 | Markdown documents must follow the [style guide](https://github.com/google/styleguide/tree/gh-pages/docguide). |
nodir | 469b2a1 | 2015-09-14 16:20:21 | [diff] [blame] | 16 | |
nodir | 6efa499 | 2015-12-20 00:54:33 | [diff] [blame] | 17 | ## Previewing changes |
| 18 | |
justincarlson | 90a1c8c | 2017-04-14 00:34:25 | [diff] [blame] | 19 | You can preview your local changes using [md_browser](../tools/md_browser/): |
nodir | 6efa499 | 2015-12-20 00:54:33 | [diff] [blame] | 20 | |
| 21 | ```bash |
| 22 | # in chromium checkout |
agable | d40b954 | 2016-05-11 01:15:06 | [diff] [blame] | 23 | ./tools/md_browser/md_browser.py |
nodir | 6efa499 | 2015-12-20 00:54:33 | [diff] [blame] | 24 | ``` |
| 25 | |
| 26 | To review someone else's changes, apply them locally first: |
| 27 | |
| 28 | ```bash |
| 29 | # in chromium checkout |
| 30 | git cl patch <CL number or URL> |
agable | d40b954 | 2016-05-11 01:15:06 | [diff] [blame] | 31 | ./tools/md_browser/md_browser.py |
nodir | 6efa499 | 2015-12-20 00:54:33 | [diff] [blame] | 32 | ``` |
| 33 | |
justincarlson | 90a1c8c | 2017-04-14 00:34:25 | [diff] [blame] | 34 | ## Document Index |
| 35 | |
| 36 | ### Checking Out and Building |
| 37 | * [Linux Build Instructions](linux_build_instructions.md) - Linux |
| 38 | * [Mac Build Instructions](mac_build_instructions.md) - MacOS |
| 39 | * [Windows Build Instructions](windows_build_instructions.md) - Windows |
| 40 | * [Android Build Instructions](android_build_instructions.md) - Android target |
| 41 | (on a Linux host) |
| 42 | * [Cast Build Instructions](linux_cast_build_instructions.md) - Cast target |
| 43 | (on a Linux host) |
| 44 | * [Cast for Android Build Instructions](android_cast_build_instructions.md) - |
| 45 | Cast for Android (on a Linux host) |
| 46 | * [iOS Build Instructions](ios/build_instructions.md) - iOS target (on a MacOS |
| 47 | host) |
| 48 | * [Linux Chromium ARM Recipes](linux_chromium_arm.md) - Recipes for building |
| 49 | Chromium for ARM on Linux. |
| 50 | * [Common Build Tasks](common_build_tasks.md) - Recipes for slightly more |
| 51 | advanced build tasks |
| 52 | * [Chrome Component Build](component_build.md) - Faster builds using more |
| 53 | libraries |
| 54 | * [Using the BuildRunner](using_build_runner.md) - Scripts that extract build |
| 55 | stops from builders and runs them locally on a slave |
| 56 | * [Cr User Manual](cr_user_manual.md) - Manual for `cr`, a tool that tries to |
| 57 | hide some of the tools used for working on Chromium behind an abstraction |
| 58 | layer |
| 59 | |
justincarlson | ad589ce | 2017-04-20 17:26:07 | [diff] [blame^] | 60 | ### Design Docs |
| 61 | * See [design/README.md](design/README.md) |
| 62 | |
justincarlson | 90a1c8c | 2017-04-14 00:34:25 | [diff] [blame] | 63 | ### Integrated Development Environment (IDE) Set Up Guides |
| 64 | * [Android Studio](android_studio.md) - Android Studio for Android builds |
| 65 | * [Eclipse for Android](eclipse.md) - Eclipse for Android |
| 66 | * [Eclipse for Linux](linux_eclipse_dev.md) - Eclipse for other platforms |
| 67 | (This guide was written for Linux, but is probably usable on Windows/MacOS |
| 68 | as well) |
| 69 | * [Qt Creator](qtcreator.md) - Using Qt Creator as an IDE or GUI debugger |
| 70 | * [Setting up Visual Studio Code](vscode.md) - Visual Studio Code |
| 71 | * [EMACS Notes](emacs.md) - EMACS commands/styles/tool integrations |
| 72 | * [Atom](atom.md) - Atom multi-platform code editor |
| 73 | |
| 74 | ### Git |
| 75 | * [Git Cookbook](git_cookbook.md) - A collection of git recipes for common |
| 76 | tasks |
| 77 | * [Git Tips](git_tips.md) - More git tips |
| 78 | |
| 79 | ### Clang |
| 80 | * [Clang Compiler](clang.md) - General information on the clang compiler, used |
| 81 | by default on Mac and Linux |
| 82 | * [Clang Tool Refactoring](clang_tool_refactoring.md) - Leveraging clang tools |
| 83 | to perform refactorings that are AST-aware |
| 84 | * [The Clang Static Analyzer](clang_static_analyzer.md) - How to enable static |
| 85 | analysis at build time |
| 86 | * [Writing Clang Plugins](writing_clang_plugins.md) - Don't write a clang |
| 87 | plugin, but if you do, read this |
| 88 | * [Updating Clang](updating_clang.md) - Updating the version of Clang used to |
| 89 | build |
| 90 | * [Using clang-format on Chromium C++ Code](clang_format.md) - Various ways to |
| 91 | invoke clang-format on C++ code |
| 92 | * [Clang Tidy](clang_tidy.md) - Support for the `clang-tidy` tool in Chromium |
| 93 | * [Updating Clang Format Binaries](updating_clang_format_binaries.md) - How up |
| 94 | update the clang-format binaries that come with a checkout of Chromium |
| 95 | |
| 96 | ### General Development |
| 97 | * [Code Reviews](code_reviews.md) - Code review requirements and guidelines |
| 98 | * [Closure Compilation](closure_compilation.md) - The _Closure_ JavaScript |
| 99 | compiler |
| 100 | * [Callback<> and Bind()](callback.md) - All about Callbacks, Closures, and |
| 101 | Bind(). |
| 102 | * [Views Platform Styling](ui/views/platform_style.md) - How views are styled |
| 103 | to fit in different native platforms |
| 104 | * [Tab Helpers](tab_helpers.md) - Using WebContents/WebContentsObserver to add |
| 105 | features to browser tabs. |
| 106 | * [Adding third_party Libraries](adding_to_third_party.md) - How to get code |
| 107 | into third_party/ |
| 108 | * [Graphical Debugging Aid for Chromium Views](graphical_debugging_aid_chromium_views.md) - |
| 109 | Visualizing view trees during debugging |
| 110 | * [Bitmap Pipeline](bitmap_pipeline.md) - How bitmaps are moved from the |
| 111 | renderer to the screen. |
| 112 | * [base::Optional](optional.md) - How to use `base::Optional` in C++ code. |
| 113 | * [Using the Origin Trials Framework](origin_trials_integration.md) - A |
| 114 | framework for conditionally enabling experimental APIs for testing. |
| 115 | * [`SharedModelTypeProcessor` in Unified Sync and Storage](sync/uss/shared_model_type_processor.md) - |
| 116 | Notes on the central data structure used in Chrome Sync. |
| 117 | * [Chrome Sync's Model API](sync/model_api.md) - Data models used for syncing |
| 118 | information across devices using Chrome Sync. |
| 119 | * [Ozone Overview](ozone_overview.md) - Ozone is an abstraction layer between |
| 120 | the window system and low level input and graphics. |
| 121 | * [Optimizing Chrome Web UIs](optimizing_web_uis.md) - Notes on making webuis |
| 122 | more performant |
| 123 | * [ES6 Support in Chromium](es6_chromium.md) - Implementation of ECMAScript6 |
| 124 | features in Chromium |
| 125 | |
| 126 | ### Testing |
| 127 | * [Running and Debugging Layout Tests](testing/layout_tests.md) |
| 128 | * [Writing Layout Tests](testing/writing_layout_tests.md) - Layout Tests using |
| 129 | `content_shell` |
| 130 | * [Layout Test Expectations and Baselines](testing/layout_test_expectations.md) - |
| 131 | Setting expected results of layout tests. |
| 132 | * [Layout Tests Tips](testing/layout_tests_tips.md) - Best practices for Layout |
| 133 | Tests |
| 134 | * [Layout Tests with Manual Fallback](testing/layout_tests_with_manual_fallback.md) - |
| 135 | Writing tests that simulate manual interventions |
| 136 | * [Extending the Layout Test Framework](how_to_extend_layout_test_framework.md) |
| 137 | * [Fixing Layout Test Flakiness](testing/identifying_tests_that_depend_on_order.md) - |
| 138 | Diagnosing and fixing layout test flakiness due to ordering dependencies. |
| 139 | * [Running Layout Tests using `content_shell`](testing/layout_tests_in_content_shell.md) - |
| 140 | Running layout tests by hand. |
| 141 | * [Testing Browser Dialogs](testing/test_browser_dialog.md) - Using |
| 142 | TestBrowserDialog |
| 143 | * [Web Platform Tests](testing/web_platform_tests.md) - Shared tests across |
| 144 | browser vendors |
| 145 | * [Using Breakpad with `content_shell`](testing/using_breakpad_with_content_shell.md) - |
| 146 | Capture stack traces on layout test crashes without an attached debugger |
| 147 | * [Test Descriptions](test_descriptions.md) - Unit test targets that can be |
| 148 | built, with associated desciptions. |
| 149 | * [IPC Fuzzer](ipc_fuzzer.md) - Fuzz testing of Chromium IPC interfaces. |
| 150 | |
| 151 | ### Misc Linux-Specific Docs |
| 152 | * [Linux Proxy Config](linux_proxy_config.md) - Network proxy sources on Linux |
| 153 | * [Debugging SSL on Linux](linux_debugging_ssl.md) - Tips on debugging SSL |
| 154 | code in Linux |
| 155 | * [Linux Cert Managment](linux_cert_management.md) - Managing X.509 |
| 156 | Certificates in Linux |
| 157 | * [Tips for Debugging on Linux](linux_debugging.md) |
| 158 | * [Linux GTK Theme Integration](linux_gtk_theme_integration.md) - Having |
| 159 | Chrome match the GTK+ theme. |
| 160 | * [Gtk vs ViewsGtk](gtk_vs_views_gtk.md) - Notes on when to use Gtk vs |
| 161 | ViewsGtk |
| 162 | * [Browser Plugins on Linux](linux_plugins.md) - A collection of links to |
| 163 | information on how browser plugins work on Linux |
| 164 | * [Linux Crash Dumping](linux_crash_dumping.md) - How Breakpad uploads crash |
| 165 | reports to Google crash servers. |
| 166 | * [Linux Minidump to Core](linux_minidump_to_core.md) - How to convert a |
| 167 | Breakpad-generated minidump files to a core file readable by most debuggersx |
| 168 | * [Linux Sandbox IPC](linux_sandbox_ipc.md) - The lower level UPC system used |
| 169 | to route requests from the bottom of the call stack up into the browser. |
| 170 | * [Linux Dev Build as Default Browser](linux_dev_build_as_default_browser.md) - |
| 171 | How to configure a Dev build of Chrome as the default browser in Linux. |
| 172 | * [Linux Chromium Packages](linux_chromium_packages.md) - Packages of Chromium |
| 173 | browser (not Chrome) provided by some Linux distributions. |
| 174 | * [`seccomp` Sandbox Crash Dumping](seccomp_sandbox_crash_dumping.md) - Notes |
| 175 | on crash dumping a process running in a seccomp sandbox. |
| 176 | * [Linux Password Storage](linux_password_storage.md) - Keychain integrations |
| 177 | between Chromium and Linux. |
| 178 | * [Linux Sublime Development](linux_sublime_dev.md) - Using Sublime as an IDE |
| 179 | for Chromium development on Linux. |
| 180 | * [Building and Debugging GTK](linux_building_debug_gtk.md) - Building |
| 181 | Chromium against GTK using lower optimization levels and/or more debugging |
| 182 | symbols. |
| 183 | * [Debugging GTK](linux_debugging_gtk.md) - Using the GTK Debug packages and |
| 184 | related tools. |
| 185 | * [Chroot Notes](using_a_linux_chroot.md) - Setting up a chroot to work around |
| 186 | libfreetype differences in some versions of Linux. |
| 187 | * [Linux Sandboxing](linux_sandboxing.md) - The Linux multi-process model to |
| 188 | isolate browser components with different privileges. |
| 189 | * [Zygote Process](linux_zygote.md) - How the Linux Zygote process, used to |
| 190 | spawn new processes, works. |
| 191 | * [Running Layout Tests on Linux](layout_tests_linux.md) - Linux-specific |
| 192 | instructions for running layout tests. |
| 193 | * [Linux Sysroot Images](linux_sysroot.md) - How builds use libraries on Linux |
| 194 | * [`msttcorefonts` on Mandriva](mandriva_msttcorefonts.md) - Getting fonts |
| 195 | needed to build Chrome that are not available for Mandriva |
| 196 | * [Linux Hardware Video Decoding](linux_hw_video_decode.md) - Enabling |
| 197 | hardware video decode codepaths on Linux |
| 198 | |
| 199 | ### Misc MacOS-Specific Docs |
| 200 | * [Using CCache on Mac](ccache_mac.md) - Speed up builds on Mac using ccache |
| 201 | with clang/ninja |
| 202 | * [Cocoa tips and tricks](cocoa_tips_and_tricks.md) - A collection of idioms |
| 203 | used when writing Cocoa views and controllers |
| 204 | * [MacViews Release Plan](ui/views/macviews_release.md) |
| 205 | |
| 206 | ### Misc Windows-Specific Docs |
| 207 | * [Handling cygwin rebaseall failures](cygwin_dll_remapping_failure.md) |
| 208 | * [Hacking on ANGLE in Chromium](angle_in_chromium.md) - OpenGL ES 2.0 built |
| 209 | on top of DirectX |
| 210 | * [Retrieveing Code Analysis Warnings](retrieving_code_analysis_warnings.md) - |
| 211 | How to retrieve and summarize the warnings generated by Microsoft VC++'s |
| 212 | `/analyze` compile option. |
| 213 | * [Windows Split DLLs](windows_split_dll.md) - Splitting `chrome.dll` into |
| 214 | multiple dlls to work around toolchain limitations on Windows. |
| 215 | |
| 216 | ### Misc Android-Specific Docs |
| 217 | * [Google Play Services in Chrome for Android](google_play_services.md) |
| 218 | * [Accessing C++ Enums in Java](android_accessing_cpp_enums_in_java.md) - How |
| 219 | to use C++-defined enums in Java code |
| 220 | * [Profiling Content Shell on Android](profiling_content_shell_on_android.md) - |
| 221 | Setting up profiling for `content_shell` on Android |
| 222 | * [Working Remotely with Android](working_remotely_with_android.md) - Building |
| 223 | on a remote machine for an Android device connected to your local machine |
| 224 | * [Using FindBugs for Android](use_find_bugs_for_android.md) - Using the open |
| 225 | source static analysis tool findbugs on the Java code. |
| 226 | * [Android Test Instructions](android_test_instructions.md) - Running a build |
| 227 | on an Android device or emulator. |
| 228 | * [Android Debugging](android_debugging_instructions.md) - Tools and tips for |
| 229 | how to debug Java and/or C/C++ code running on Android. |
| 230 | * [Android Logging](android_logging.md) - How Chrome's logging API works with |
| 231 | `android.util.Log` on Android, and usage guidelines. |
| 232 | * [Chromoting Android Hacking](chromoting_android_hacking.md) - Viewing the |
| 233 | logs and debugging the Chrome Remote Desktop Android client. |
| 234 | |
| 235 | ### Misc iOS-Specific Docs |
| 236 | * [Continuous Build and Test Infrastructure for Chromium for iOS](ios/infra.md) |
| 237 | * [Opening links in Chrome for iOS](ios/opening_links.md) - How to have your |
| 238 | iOS app open links in Chrome. |
| 239 | * [User Agent in Chrome for iOS](ios/user_agent.md) - Notes on User Agent |
| 240 | strings using Chrome for iOS. |
| 241 | |
| 242 | ### Media |
| 243 | * [Audio Focus Handling](media/audio_focus.md) - How multiple MediaSession |
| 244 | audio streams interact |
| 245 | * [Autoplay of HTMLMediaElements](media/autoplay.md) - How HTMLMediaElements |
| 246 | are autoplayed. |
| 247 | * [Piranha Plant](piranha_plant.md) - Future architecture of MediaStreams |
| 248 | |
| 249 | ### Accessibility |
| 250 | * [Accessibility Overview](accessibility/overview.md) - Overview of |
| 251 | accessibility concerns and approaches in Chromium. |
| 252 | * [Accessibility Tests](accessibility/tests.md) - Where to find |
| 253 | accessibility-related tests in the codebase. |
| 254 | * [ChromeVox on Chrome OS](accessibility/chromevox.md) - Enabling spoken |
| 255 | feedback (ChromeVox) on Chrome OS. |
| 256 | * [ChromeVox on Desktop Linux](accessibility/chromevox_on_desktop_linux.md) - |
| 257 | Enabling spoken feedback (ChromeVox) on desktop Linux. |
| 258 | * [BRLTTY in Chrome OS](accessibility/brltty.md) - Chrome OS integration with |
| 259 | BRLTTY to support refreshable braille displays |
| 260 | * [PATTS on Chrome OS](accessibility/patts.md) - Notes on the PATTS speech |
| 261 | sythesis engine used on Chrome OS |
| 262 | * [VoiceOver](ios/voiceover.md) - Using Apple's VoiceOver feature with |
| 263 | Chromium on iOS. |
| 264 | |
| 265 | ### Memory Infrastructure Timeline Profiling (MemoryInfra) |
| 266 | * [Overview](memory-infra/README.md) |
| 267 | * [GPU Profiling](memory-infra/probe-gpu.md) |
| 268 | * [Adding Tracing to a Component](memory-infra/adding_memory_infra_tracing.md) |
| 269 | * [Enabling Startup Tracing](memory-infra/memory_infra_startup_tracing.md) |
| 270 | * [Memory Usage in CC](memory-infra/probe-cc.md) |
| 271 | * [Memory Benchmarks](memory-infra/memory_benchmarks.md) |
| 272 | * [Heap Profiling](memory-infra/heap_profiler.md) |
| 273 | * [Heap Profiling Internals](memory-infra/heap_profiler_internals.md) |
| 274 | |
| 275 | ### Misc |
| 276 | * [Useful URLs](useful_urls.md) - A collection of links to various tools and |
| 277 | dashboards |
| 278 | * [ERC IRC](erc_irc.md) - Using ERC in EMACS to access IRC |
| 279 | * [Kiosk Mode](kiosk_mode.md) - Simulating kiosk mode. |
| 280 | * [User Handle Mapping](user_handle_mapping.md) - Names of developers across |
| 281 | Chromium/IRC/Google |
| 282 | * [Documentation Best Practices](documentation_best_practices.md) |
| 283 | * [Documentation Guidelines](documentation_guidelines.md) |
| 284 | * [Shift-Based Development](shift_based_development.md) - An experiment in |
| 285 | handing off development of coordinated work between developers in different |
| 286 | time zones. |
| 287 | * [Chromium Browser vs Google Chrome](chromium_browser_vs_google_chrome.md) - |
| 288 | What's the difference between _Chromium Browser_ and _Google Chrome_? |
| 289 | * [Proxy Auto Config using WPAD](proxy_auto_config.md) - How WPAD servers are |
| 290 | used to automatically set proxy settings. |
| 291 | * [Installing Chromium OS on VMWare](installation_at_vmware.md) - How to |
| 292 | install Chromium OS on VMWare. |
| 293 | |
| 294 | ### Probably Obsolete |
| 295 | * [Old ChromeOS build instructions](old_chromeos_build_instructions.md) |
| 296 | * [TPM Quick Reference](tpm_quick_ref.md) - Trusted Platform Module notes. |
| 297 | * [System Hardening Features](system_hardening_features.md) - A list of |
| 298 | current and planned Chrome OS security features. |
| 299 | * [Browser View Resizer](browser_view_resizer.md) - Design doc for making |
| 300 | browser window resizing easier on Windows. |
| 301 | * [WebView Policies](webview_policies.md) |
| 302 | * [Linux Profiling](linux_profiling.md) - How to profile Chromium on Linux |
| 303 | * [Linux Graphics Pipeline](linux_graphics_pipeline.md) |
| 304 | * [Linux `SUID` Sandbox](linux_suid_sandbox.md) - Sandboxing renderers using a |
| 305 | SUID binary on Linux |
| 306 | * [Linux `SUID` Sandbox Development](linux_suid_sandbox_development.md) - |
| 307 | Development on the above system. |
| 308 | * [Linux PID Namespace Support](linux_pid_namespace_support.md) |
| 309 | * [Vanilla msysgit workflow](vanilla_msysgit_workflow.md) - A workflow for |
| 310 | using mostly vanilla git on Windows. |
| 311 | * [Old Chromoting Build Instructions](old_chromoting_build_instructions.md) |
| 312 | * [Old Options](chrome_settings.md) - Pre-Material Design chrome://settings |
| 313 | notes. |