CINXE.COM
Guides
<!DOCTYPE html> <head> <meta charset="utf-8"> <title>Guides</title> <link rel="stylesheet" href="/_stylesheets/@docsearch/style.css"> <link rel="stylesheet" href="/_stylesheets/default.css"> </head> <!-- Configure Google Analytics v4 --> <!-- Google tag (gtag.js) --> <script async src="https://www.googletagmanager.com/gtag/js?id=G-24XP4PG02H"></script> <script> window.dataLayer = window.dataLayer || []; function gtag(){dataLayer.push(arguments);} gtag('js', new Date()); gtag('config', 'G-24XP4PG02H'); </script> <header> <a href="/"> <img alt="the Chromium logo" src="/_assets/icon-chromium-96.png" width="48" height="48"> <h2>The Chromium Projects</h2> </a> <div id="search"></div> </header> <div id="main-wrapper"> <nav id="sidebar-left"> <section> <a href="/chromium-projects">Home</a> <a href="/Home">Chromium</a> <a href="/chromium-os">ChromiumOS</a> </section> <section> <h4>Quick links</h4> <a href="/for-testers/bug-reporting-guidelines">Report bugs</a> <a href="/developers/discussion-groups">Discuss</a> </section> <section> <h4>Other sites</h4> <a href="https://blog.chromium.org/">Chromium Blog</a> <a href="https://developer.chrome.com/extensions">Google Chrome Extensions</a> </section> <section id="license" role="complementary"> Except as otherwise <a href="https://developers.google.com/site-policies.html#restrictions">noted</a>, the content of this page is licensed under a <a href="https://creativecommons.org/licenses/by/2.5/">Creative Commons Attribution 2.5 license</a>, and examples are licensed under the <a href="https://chromium.googlesource.com/chromium/src/+/HEAD/LICENSE">BSD License</a>. </section> <section id="privacy" role="complementary"> <a href="https://policies.google.com/privacy">Privacy</a> </section> <a id="edit-this-page" href="https://edit.chromium.org/edit?repo=chromium/website/main&file=site/chromium-os/developer-library/guides/index.md&ext_google.git=%7B%22repo%22%3A%22chromium%2Fwebsite%22%2C%22ref%22%3A%22main%22%2C%22file%22%3A%22site/chromium-os/developer-library/guides/index.md%22%7D">Edit this page</a> </nav> <main> <div class="breadcrumbs"> <a href="/chromium-os/developer-library">ChromiumOS</a> > </div> <h1>Guides</h1> <div class="two-column-container"> <div class="column"> <h2 id="app-development" tabindex="-1"><a class="header-anchor" href="#app-development">App Development</a></h2> <ul> <li><a href="/chromium-os/developer-library/guides/app-development/developing-apps-on-your-chromium-os-device">Developing apps on your ChromiumOS device</a></li> <li><a href="/chromium-os/developer-library/guides/app-development/android-apps">Optimize Android Apps for ChromeOS device</a></li> <li><a href="/chromium-os/developer-library/guides/app-development/sideload-android-apps-on-chromebook">Sideload Android apps on your Chromebook</a></li> </ul> <h2 id="bugs" tabindex="-1"><a class="header-anchor" href="#bugs">Bugs</a></h2> <ul> <li><a href="/chromium-os/developer-library/guides/bugs/security-severity-guidelines">ChromeOS security severity guidelines</a></li> <li><a href="/chromium-os/developer-library/guides/bugs/reporting-bugs">Reporting bugs</a></li> <li><a href="/chromium-os/developer-library/guides/bugs/platform-public-tracker">Reporting ChromeOS bugs in the buganizer public tracker</a></li> </ul> <h2 id="code-review" tabindex="-1"><a class="header-anchor" href="#code-review">Code review</a></h2> <ul> <li><a href="/chromium-os/developer-library/guides/code-review/code-reviews-and-submitting-code">Code review and submitting code</a></li> <li><a href="/chromium-os/developer-library/guides/code-review/firmware-code-reviews">Firmware code reviews</a></li> </ul> <h2 id="c" tabindex="-1"><a class="header-anchor" href="#c">C++</a></h2> <ul> <li><a href="/chromium-os/developer-library/guides/cpp/barrier-callback">How to wait for a callback be invoked N times</a></li> <li><a href="/chromium-os/developer-library/guides/cpp/resolving-dependency-issues">Using delegates to resolve dependency issues</a></li> </ul> <h2 id="containers" tabindex="-1"><a class="header-anchor" href="#containers">Containers</a></h2> <ul> <li><a href="/chromium-os/developer-library/guides/containers/cros-vm">ChromeOS VM for Chromium developers</a></li> <li><a href="/chromium-os/developer-library/guides/containers/crostini-developer-guide">Crostini developer guide</a></li> <li><a href="/chromium-os/developer-library/guides/containers/containers-and-vms">Running custom containers under Chrome OS</a></li> </ul> <h2 id="debugging" tabindex="-1"><a class="header-anchor" href="#debugging">Debugging</a></h2> <ul> <li><a href="/chromium-os/developer-library/guides/debugging/llvm-clang-build">ChromeOS build with LLVM Clang and ASAN</a></li> <li><a href="/chromium-os/developer-library/guides/debugging/serial-debugging-howto">ChromiumOS [serial] console debugging HOWTO</a></li> <li><a href="/chromium-os/developer-library/guides/debugging/debugging-tips">Chromium on ChromiumOS debugging tips</a></li> <li><a href="/chromium-os/developer-library/guides/debugging-3g">Debugging a cellular modem</a></li> <li><a href="/chromium-os/developer-library/guides/debugging/a11y-debugging">Debugging accessibility (a11y) Issues</a></li> <li><a href="/chromium-os/developer-library/guides/debugging/debug-buttons">Debug button shortcuts</a></li> <li><a href="/chromium-os/developer-library/guides/debugging/debugging-features">Debugging features</a></li> <li><a href="/chromium-os/developer-library/guides/debugging/debugging-hangs">Debugging system hangs</a></li> <li><a href="/chromium-os/developer-library/guides/debugging/debugging">Debugging tips and tricks</a></li> <li><a href="/chromium-os/developer-library/guides/debugging/firmware-ui">Firmware UI troubleshooting</a></li> <li><a href="/chromium-os/developer-library/guides/debugging/host-file-access">Host file access</a></li> <li><a href="/chromium-os/developer-library/guides/debugging/stack-traces">How to get a stack trace at runtime</a></li> <li><a href="/chromium-os/developer-library/guides/debugging/force-out-of-box-experience-oobe">How to force the out-of-box experience (OOBE)</a></li> <li><a href="/chromium-os/developer-library/guides/manual-e362-setup">LTE: manual E362 setup</a></li> <li><a href="/chromium-os/developer-library/guides/modem-debugging-with-mmcli">Modem debugging with mmcli (from the modemmanager-next package)</a></li> <li><a href="/chromium-os/developer-library/guides/debugging/recreating-a-snapshot-or-buildspec">Recreating a Snapshot or Buildspec</a></li> <li><a href="/chromium-os/developer-library/guides/debugging/remote-debugging">Remote debugging in ChromiumOS</a></li> <li><a href="/chromium-os/developer-library/guides/debugging/target-serial-access">Target serial access</a></li> </ul> <h2 id="development" tabindex="-1"><a class="header-anchor" href="#development">Development</a></h2> <ul> <li><a href="/chromium-os/developer-library/guides/development/build-broken">Build broken</a></li> <li><a href="/chromium-os/developer-library/guides/development/chrome-api-keys-in-the-chroot">Chrome API keys in the ChromiumOS SDK chroot</a></li> <li><a href="/chromium-os/developer-library/guides/chromiumos-architecture-porting-guide">ChromiumOS architecture porting guide</a></li> <li><a href="/chromium-os/developer-library/guides/chromiumos-board-porting-guide">ChromiumOS board porting guide</a></li> <li><a href="/chromium-os/developer-library/guides/development/contributing">ChromiumOS contributing guide</a></li> <li><a href="/chromium-os/developer-library/guides/development/developer-guide">ChromiumOS developer guide</a></li> <li><a href="/chromium-os/developer-library/guides/development/work-on-branch">ChromiumOS guide to working on branches</a></li> <li><a href="/chromium-os/developer-library/guides/create-a-cl">Create a CL</a></li> <li><a href="/chromium-os/developer-library/guides/creating-local-mirrors">Creating local mirrors</a></li> <li><a href="/chromium-os/developer-library/guides/development/cheatsheet">CrOS work command cheatsheet</a></li> <li><a href="/chromium-os/developer-library/guides/development/development-basics">Development basics</a></li> <li><a href="/chromium-os/developer-library/guides/development/platform2-primer">Getting started with platform2</a></li> <li><a href="/chromium-os/developer-library/guides/development/keep-files-in-sync">How to use LINT.IfChange to keep files in sync</a></li> <li><a href="/chromium-os/developer-library/guides/development/git-and-gerrit-intro">Introduction to Git & Gerrit for CrOS contributors</a></li> <li><a href="/chromium-os/developer-library/guides/development/chrome-commit-pipeline">Life of a Chrome commit on ChromeOS</a></li> <li><a href="/chromium-os/developer-library/guides/development/local-trybot-documentation">Local trybot</a></li> <li><a href="/chromium-os/developer-library/guides/development/network-based-development">Network-based development</a></li> <li><a href="/chromium-os/developer-library/guides/development/remote-trybots">Remote trybots</a></li> <li><a href="/chromium-os/developer-library/guides/development/running-graphical-applications-remotely">Running graphical applications remotely</a></li> <li><a href="/chromium-os/developer-library/guides/development/sandboxing">Sandboxing ChromeOS system services</a></li> <li><a href="/chromium-os/developer-library/guides/development/simple-chrome-workflow">Simple chrome workflow</a></li> <li><a href="/chromium-os/developer-library/guides/development/tools-used">Tools used</a></li> </ul> <h2 id="device" tabindex="-1"><a class="header-anchor" href="#device">Device</a></h2> <ul> <li><a href="/chromium-os/developer-library/guides/device/mainline-kernel-on-kevin-chromebook-plus">Arch Linux + mainline kernel on kevin (Chromebook Plus)</a></li> <li><a href="/chromium-os/developer-library/guides/device/boot-mainline-kernel-on-veyron-jaq">Boot mainline kernel on veyron-jaq</a></li> <li><a href="/chromium-os/developer-library/guides/device/chrome-os-mainline-kernel-on-kevin-chromebook-plus">Chrome OS + mainline kernel on kevin (Chromebook Plus)</a></li> <li><a href="/chromium-os/developer-library/guides/device/crosfleet">Crosfleet</a></li> <li><a href="/chromium-os/developer-library/guides/device/developer-mode">Developer mode</a></li> <li><a href="/chromium-os/developer-library/guides/device/flashing-chromiumos">Flashing chromiumOS</a></li> <li><a href="/chromium-os/developer-library/guides/device/install-software-on-base-images">Install software on base images</a></li> <li><a href="/chromium-os/developer-library/guides/device/nfs-quickstart">NFS-quickstart</a></li> <li><a href="/chromium-os/developer-library/guides/device/powerwash">Powerwash</a></li> <li><a href="/chromium-os/developer-library/guides/device/ro-firmware-unlock">Read-only firmware unlock on 2023+ devices</a></li> <li><a href="/chromium-os/developer-library/guides/device/requesting-devices">Requesting devices</a></li> <li><a href="/chromium-os/developer-library/guides/device/screenshots">Screenshots</a></li> </ul> <h2 id="experimentation" tabindex="-1"><a class="header-anchor" href="#experimentation">Experimentation</a></h2> <ul> <li><a href="/chromium-os/developer-library/guides/experimentation/power-consumption">Power consumption & Finch experimentation</a></li> </ul> <h2 id="enterprise" tabindex="-1"><a class="header-anchor" href="#enterprise">Enterprise</a></h2> <ul> <li><a href="/chromium-os/developer-library/guides/enterprise/enterprise-metrics">Enterprise metrics</a></li> <li><a href="/chromium-os/developer-library/guides/enterprise/enterprise-policy">Enterprise policy</a></li> </ul> <h2 id="documentation" tabindex="-1"><a class="header-anchor" href="#documentation">Documentation</a></h2> <ul> <li><a href="/chromium-os/developer-library/guides/documentation/chromium-cookbook">Chromium cookbook</a></li> </ul> <h2 id="firmware" tabindex="-1"><a class="header-anchor" href="#firmware">Firmware</a></h2> <ul> <li><a href="/chromium-os/developer-library/guides/firmware/firmware-porting-guide">Firmware overview and porting guide</a></li> <li><a href="/chromium-os/developer-library/guides/firmware/pd-firmware-update">USB Type-C power delivery (PD) firmware</a></li> </ul> <h2 id="git" tabindex="-1"><a class="header-anchor" href="#git">Git</a></h2> <ul> <li><a href="/chromium-os/developer-library/guides/git/git-helpers">Git helpers</a></li> <li><a href="/chromium-os/developer-library/guides/git/git-troubleshooting">Git troubleshooting</a></li> </ul> <h2 id="golang" tabindex="-1"><a class="header-anchor" href="#golang">Golang</a></h2> <ul> <li><a href="/chromium-os/developer-library/guides/golang/protobuf-golang-deserialize">Deserialize objects in golang using protobuf</a></li> </ul> <h2 id="hardware-schematics" tabindex="-1"><a class="header-anchor" href="#hardware-schematics">Hardware Schematics</a></h2> <ul> <li><a href="/chromium-os/developer-library/guides/hardware-schematics/minimuffin">45W USB Type-C charging adapter control board</a></li> <li><a href="/chromium-os/developer-library/guides/hardware-schematics/chamelium">Chamelium</a></li> <li><a href="/chromium-os/developer-library/guides/hardware-schematics/chamelium-audio-board">Chamelium audio board</a></li> <li><a href="/chromium-os/developer-library/guides/hardware-schematics/chamelium-audio-streaming">Chamelium audio streaming</a></li> <li><a href="/chromium-os/developer-library/guides/hardware-schematics/twinkie">USB Type-C debug dongle and sniffer for USB-PD communications</a></li> <li><a href="/chromium-os/developer-library/guides/hardware-schematics/dingdong">USB Type-C to DisplayPort adapter</a></li> <li><a href="/chromium-os/developer-library/guides/hardware-schematics/hoho">USB Type-C to HDMI adapter</a></li> <li><a href="/chromium-os/developer-library/guides/hardware-schematics/plankton">USB Type-C functional testing board</a></li> </ul> <h2 id="ides" tabindex="-1"><a class="header-anchor" href="#ides">IDEs</a></h2> <ul> <li><a href="/chromium-os/developer-library/guides/ides/chroot-clangd-guide">Using clangd LSP server in the chroot</a></li> </ul> <h2 id="infrastructure" tabindex="-1"><a class="header-anchor" href="#infrastructure">Infrastructure</a></h2> <ul> <li><a href="/chromium-os/developer-library/guides/infrastructure/libchrome">libchrome</a></li> </ul> <h2 id="ipc" tabindex="-1"><a class="header-anchor" href="#ipc">IPC</a></h2> <ul> <li><a href="/chromium-os/developer-library/guides/ipc/dbus-best-practices">ChromeOS D-Bus best practices</a></li> <li><a href="/chromium-os/developer-library/guides/ipc/dbus-in-chrome">ChromeOS D-Bus usage in Chrome</a></li> </ul> <h2 id="image-size" tabindex="-1"><a class="header-anchor" href="#image-size">Image Size</a></h2> <ul> <li><a href="/chromium-os/developer-library/guides/image-size/visualizing-the-rootfs">Visualizing the rootfs</a></li> </ul> <h2 id="kernel" tabindex="-1"><a class="header-anchor" href="#kernel">Kernel</a></h2> <ul> <li><a href="/chromium-os/developer-library/guides/kernel/kernel-configuration">Kernel configuration</a></li> <li><a href="/chromium-os/developer-library/guides/kernel/kernel-development">Kernel development</a></li> <li><a href="/chromium-os/developer-library/guides/kernel/kernel-rebase-notes">Kernel rebase notes</a></li> <li><a href="/chromium-os/developer-library/guides/kernel/using-an-upstream-kernel-on-snow">Using an upstream kernel on ChromeOS</a></li> </ul> <h2 id="localization" tabindex="-1"><a class="header-anchor" href="#localization">Localization</a></h2> <ul> <li><a href="/chromium-os/developer-library/guides/localization/creating-and-translating-strings">Creating and translating Strings</a></li> </ul> </div> <div class="column"> <h2 id="logging" tabindex="-1"><a class="header-anchor" href="#logging">Logging</a></h2> <ul> <li><a href="/chromium-os/developer-library/guides/logging/logging/">Logging</a></li> </ul> <h2 id="lsc" tabindex="-1"><a class="header-anchor" href="#lsc">LSC</a></h2> <ul> <li><a href="/chromium-os/developer-library/guides/lsc/large-scale-changes">ChromeOS platform large scale changes (LSC)</a></li> <li><a href="/chromium-os/developer-library/guides/lsc/large-scale-changes">ChromeOS LSC workflow</a></li> </ul> <h2 id="metrics" tabindex="-1"><a class="header-anchor" href="#metrics">Metrics</a></h2> <ul> <li><a href="/chromium-os/developer-library/guides/metrics/how-to-create-metrics">How to create metrics?</a></li> </ul> <h2 id="mojo" tabindex="-1"><a class="header-anchor" href="#mojo">Mojo</a></h2> <ul> <li><a href="/chromium-os/developer-library/guides/mojo/use-mojom-union">Use Mojom Union in TypeScript and C++</a></li> </ul> <h2 id="performance" tabindex="-1"><a class="header-anchor" href="#performance">Performance</a></h2> <ul> <li><a href="/chromium-os/developer-library/guides/performance/a-brief-perf-how-to">Timechart how-to</a></li> <li><a href="/chromium-os/developer-library/guides/performance/measuring-boot-time-performance">Tools for measuring boot time performance</a></li> </ul> <h2 id="portage" tabindex="-1"><a class="header-anchor" href="#portage">Portage</a></h2> <ul> <li><a href="/chromium-os/developer-library/guides/portage/add-a-new-package">Adding a New Package</a></li> <li><a href="/chromium-os/developer-library/guides/portage/add-sdk-package">Adding a package to the SDK</a></li> <li><a href="/chromium-os/developer-library/guides/portage/profile-bashrc">CrOS bashrc override framework</a></li> <li><a href="/chromium-os/developer-library/guides/portage/ebuild-faq">Ebuild FAQ</a></li> <li><a href="/chromium-os/developer-library/guides/portage/how-to-patch-an-ebuild">How to patch an ebuild</a></li> <li><a href="/chromium-os/developer-library/guides/portage/package-upgrade-process">New & upgrade package process</a></li> <li><a href="/chromium-os/developer-library/guides/portage/overlay-faq">Overlay FAQ</a></li> <li><a href="/chromium-os/developer-library/guides/portage/subtools-builder">Subtools Builder</a></li> <li><a href="/chromium-os/developer-library/guides/portage/upgrade-ebuild-eapis">Upgrade Ebuild EAPIs HOWTO</a></li> <li><a href="/chromium-os/developer-library/guides/portage/working-with-your-overlay-faq">Working with your Overlay FAQ</a></li> </ul> <h2 id="preferences" tabindex="-1"><a class="header-anchor" href="#preferences">Preferences</a></h2> <ul> <li><a href="/chromium-os/developer-library/guides/preferences/policy-prefs">Preferences and policies</a></li> </ul> <h2 id="recipes" tabindex="-1"><a class="header-anchor" href="#recipes">Recipes</a></h2> <ul> <li><a href="/chromium-os/developer-library/guides/recipes/get-a-3g-modem-running">Cellular modem FAQ</a></li> <li><a href="/chromium-os/developer-library/guides/recipes/tips-and-tricks">Tips And tricks for ChromiumOS developers</a></li> </ul> <h2 id="rust" tabindex="-1"><a class="header-anchor" href="#rust">Rust</a></h2> <ul> <li><a href="/chromium-os/developer-library/guides/rust/rust-on-cros">Rust on ChromeOS</a></li> </ul> <h2 id="security" tabindex="-1"><a class="header-anchor" href="#security">Security</a></h2> <ul> <li><a href="/chromium-os/developer-library/guides/security/security-review-howto">ChromeOS security review HOWTO</a></li> <li><a href="/chromium-os/developer-library/guides/security/vulnerability-management">ChromeOS security vulnerability management</a></li> <li><a href="/chromium-os/developer-library/guides/security/test-accounts">Owned test accounts (OTAs) for manual testing</a></li> <li><a href="/chromium-os/developer-library/guides/security/noexec-shell-scripts">Shell scripts & noexec mounts</a></li> </ul> <h2 id="system-web-apps" tabindex="-1"><a class="header-anchor" href="#system-web-apps">System Web Apps</a></h2> <ul> <li><a href="/chromium-os/developer-library/guides/web-apps/launch-swa-async">How to launch a SWA async</a></li> <li><a href="/chromium-os/developer-library/guides/web-apps/open-app-as-swa-vs-swd">How to open other SWA/SWD from your SWA</a></li> </ul> <h2 id="testing" tabindex="-1"><a class="header-anchor" href="#testing">Testing</a></h2> <ul> <li><a href="/chromium-os/developer-library/guides/testing/adding-builder-variants">Adding builder variants using profiles</a></li> <li><a href="/chromium-os/developer-library/guides/testing/anatomy-of-test-test">Anatomy of test.test</a></li> <li><a href="/chromium-os/developer-library/guides/testing/autotest-design-patterns">Autotest design patterns</a></li> <li><a href="/chromium-os/developer-library/guides/testing/autotest-developer-faq">Autotest developer FAQ</a></li> <li><a href="https://chromium.googlesource.com/chromiumos/third_party/autotest/+/HEAD/docs/user-doc.md">Autotest for ChromiumOS developers</a></li> <li><a href="/chromium-os/developer-library/guides/testing/unit-tests">Best practices for writing ChromeOS unit tests</a></li> <li><a href="/chromium-os/developer-library/guides/testing/tast-tests-best-practice">Best practices for writing Tast tests</a></li> <li><a href="/chromium-os/developer-library/guides/testing/bluetooth-tast-tests">Bluetooth Tast tests</a></li> <li><a href="/chromium-os/developer-library/guides/testing/breakages-and-flakes">Breakage and flake policy</a></li> <li><a href="/chromium-os/developer-library/guides/testing/building-and-running-tests">Building and running tests</a></li> <li><a href="/chromium-os/developer-library/guides/testing/chamelium-usb-audio">Chamelium USB audio</a></li> <li><a href="/chromium-os/developer-library/guides/testing/performance">ChromeOS performance tests</a></li> <li><a href="/chromium-os/developer-library/guides/testing/running-unit-tests">ChromiumOS unit testing</a></li> <li><a href="/chromium-os/developer-library/guides/testing/green-stainless-report">Common Green Stainless updates</a></li> <li><a href="/chromium-os/developer-library/guides/testing/common-testing-workflows">Common testing workflows</a></li> <li><a href="/chromium-os/developer-library/guides/testing/firmware-test-manual">Firmware test manual</a></li> <li><a href="/chromium-os/developer-library/guides/testing/fuzzing-main">Fuzz testing in ChromeOS (dupe)</a></li> <li><a href="/chromium-os/developer-library/guides/testing/fuzzing">Fuzz testing in ChromeOS</a></li> <li><a href="/chromium-os/developer-library/guides/testing/kernel-fuzzing">Kernel fuzzing in ChromeOS</a></li> <li><a href="/chromium-os/developer-library/guides/testing/perf-data">Perf data</a></li> <li><a href="/chromium-os/developer-library/guides/testing/power-testing">Power testing</a></li> <li><a href="/chromium-os/developer-library/guides/testing/python-mock">Python unittest mocking</a></li> <li><a href="/chromium-os/developer-library/guides/testing/test-with-servo">Run Tast tests with servo</a></li> <li><a href="/chromium-os/developer-library/guides/testing/igt">Running IGT tests on ChromeOS</a></li> <li><a href="/chromium-os/developer-library/guides/testing/single-binary-ubsan">Running a single binary with UBSAN</a></li> <li><a href="/chromium-os/developer-library/guides/testing/e2e-tests">Running and writing "Tast" automated end to end (E2E) tests</a></li> <li><a href="/chromium-os/developer-library/guides/testing/testing/running-smoke-suite-on-a-vm-image">Running smoke suite on a VM image</a></li> <li><a href="/chromium-os/developer-library/guides/testing/qemu-unit-tests-design">Running unittests via QEMU</a></li> <li><a href="/chromium-os/developer-library/guides/testing/test-lab-setup">Test lab setup</a></li> <li><a href="/chromium-os/developer-library/guides/testing/browser-tests-writing-tips">Tips on writing C++ Browser tests</a></li> <li><a href="/chromium-os/developer-library/guides/testing/tast-tests-writing-tips">Tips on writing Tast tests</a></li> <li><a href="/chromium-os/developer-library/guides/testing/touch-firmware-tests">Touch firmware tests</a></li> <li><a href="/chromium-os/developer-library/guides/testing/ui-tast-tests">UI selection in Tast</a></li> <li><a href="/chromium-os/developer-library/guides/testing/test-suites">Using test suites</a></li> <li><a href="/chromium-os/developer-library/guides/testing/cpp-writing-tests">Writing tests in C++</a></li> </ul> <h2 id="third-party" tabindex="-1"><a class="header-anchor" href="#third-party">Third Party</a></h2> <ul> <li><a href="/chromium-os/developer-library/guides/third-party/coreboot">coreboot</a></li> <li><a href="/chromium-os/developer-library/guides/third-party/modemmanager">ModemManager care and feeding</a></li> </ul> <h2 id="typescript" tabindex="-1"><a class="header-anchor" href="#typescript">TypeScript</a></h2> <ul> <li><a href="/chromium-os/developer-library/guides/typescript/on-scroll-event">Adding handling for scroll events</a></li> <li><a href="/chromium-os/developer-library/guides/typescript/detect-dark-mode">Detecting dark mode in polymer</a></li> <li><a href="/chromium-os/developer-library/guides/typescript/detect-online">Detecting online status in polymer</a></li> <li><a href="/chromium-os/developer-library/guides/typescript/generating-local-tsconfig">Generating a local <code>tsconfig.json</code> file</a></li> <li><a href="/chromium-os/developer-library/guides/typescript/javascript-mock">How to mock JavaScript</a></li> <li><a href="/chromium-os/developer-library/guides/typescript/setup-ts-environment">Setting up your TypeScript dev environment</a></li> </ul> <h2 id="views-ui-framework" tabindex="-1"><a class="header-anchor" href="#views-ui-framework">Views (UI framework)</a></h2> <ul> <li><a href="/chromium-os/developer-library/guides/views/intro">Introduction to Views</a></li> </ul> <h2 id="webui" tabindex="-1"><a class="header-anchor" href="#webui">WebUI</a></h2> <ul> <li><a href="/chromium-os/developer-library/guides/webui/untrusted">Communication between trusted and untruted WebUI</a></li> </ul> <h2 id="who-do-i-notify" tabindex="-1"><a class="header-anchor" href="#who-do-i-notify">Who do I notify?</a></h2> <ul> <li><a href="/chromium-os/developer-library/guides/who-do-i-notify/contact">ChromiumOS contact</a></li> </ul> </div> </div> </main> </div> <script> // Configure Algolia search. let s = document.createElement('script'); s.src = '/_scripts/@docsearch/index.js'; document.head.append(s); window.addEventListener('load', () => { // Add the Algolia search widget. docsearch({ container: '#search', appId: 'RZDQYCCABX', apiKey: '98b0eabafeb13fe3e1af693d5713d8b4', indexName: 'chromium' }); }); // Configure Google Universal Analytics (the predecessor to GA4, we should // delete this when we don't need it any more). s = document.createElement('script'); s.src = 'https://www.googletagmanager.com/gtag/js?id=UA-5484340-1' s.async = true; document.head.append(s) window.dataLayer = window.dataLayer || []; function gtag(){dataLayer.push(arguments);} gtag('js', new Date()); gtag('config', 'UA-5484340-1'); // Configure consent bar. s = document.createElement('script'); s.src = 'https://www.gstatic.com/brandstudio/kato/cookie_choice_component/cookie_consent_bar.v3.js' s.dataset.autoloadCookieConsentBar = true; s.dataset.autoloadCookieContentBarIntlCode = ''; document.head.append(s);</script>