tree: f7d9cd84ff853440a1fba9951761d62c2c5786d9 [path history] [tgz]
  1. BUILD.gn
  2. OWNERS
  3. README.md
  4. app.cc
  5. app.h
  6. color_transform_handler.cc
  7. color_transform_handler.h
  8. constants.cc
  9. constants.h
  10. displays/
  11. factory_reset_manager.cc
  12. factory_reset_manager.h
  13. focus_dispatcher.cc
  14. focus_dispatcher.h
  15. focus_listener.h
  16. inspect.cc
  17. inspect.h
  18. main.cc
  19. media_buttons_handler.cc
  20. media_buttons_handler.h
  21. media_retriever.cc
  22. media_retriever.h
  23. meta/
  24. presentation.cc
  25. presentation.h
  26. safe_presenter.cc
  27. safe_presenter.h
  28. services.config
  29. tests/
  30. virtual_keyboard_controller.cc
  31. virtual_keyboard_controller.h
  32. virtual_keyboard_coordinator.cc
  33. virtual_keyboard_coordinator.h
  34. virtual_keyboard_manager.cc
  35. virtual_keyboard_manager.h
src/ui/bin/root_presenter/README.md

Root Presenter

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.

Usage

This program is a server, and so is not started directly. See the present_view tool.

CMX file and integration tests

Note that the meta/ directory has two CMX files. One is for production, the other for tests.

The production package //src/ui/bin/root_presenter:root_presenter includes 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 meta/root_presenter_base.cmx.

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.