This directory contains the Root Presenter, a service which manages input device lifecycle, lower-level input event dispatch, creation of the root of the global scene graph, and connection of root-level Views by clients such as Sys UI.
This collection of code has a lot of complexity, and you may find various workarounds that exist for very specific purposes. Additionally, the code and comments make assumptions (both explicit and implicit) that may no longer hold. Please don't make plans and patches based on what you see in the repository! Instead, reach out to the OWNERS to coordinate your intended work.
This program is a server, and so is not started directly. See the
Note that the
meta/ directory has two CMX files. One is for production, the other for tests.
The production package
meta/root_presenter.cmx, which exists to enable access to the input device files in
/dev/class/input-report. The regular content is pulled in from
Test packages should include
//src/ui/bin/root_presenter:component_v1_for_test and launch it with
fuchsia-pkg://fuchsia.com/<your-test-package>#meta/root_presenter.cmx. This test-only Root Presenter omits the driver access. Generally, test packages should include their own copy of a component to ensure hermeticity with respect to package loading semantics.
Integration tests don't require access to the device files, because (1) input injection occurs at a different protocol in Root Presenter, and (2) exposure to the actual device files is a flake liability for these tests.
During regular maintenance, when adding a new service dependency, add it to
meta/root_presenter_base.cmx, so that it is seen in both tests and production.