[root_presenter] Report focus changes to the keyboard subsystem

The keyboard subsystem needs to know when the focus changes so that
it can dispatch key events correctly.  Root presenter's old code did
not report the focus changes, so this commit is adding a connection
that does just that.

In the process, I discovered that the `FocusChain` spec claims that
`focus_chain` is always set, which is not actually the case: early
in the setup we may end up with unset `focus_chain`, so modified the
protocol spec for `FocusChain` to document this.

Tested: fx test //src/ui/bin/root_presenter/tests
  fx make-integration-patch ...
  fx ... lsc ...
Fixed: 70966
Change-Id: Ia54f29f816b61673eafffdf8a7137ac928490067
Reviewed-on: https://fuchsia-review.googlesource.com/c/fuchsia/+/511640
Fuchsia-Auto-Submit: Filip Filmar <fmil@google.com>
Reviewed-by: Alice Neels <neelsa@google.com>
Reviewed-by: Mukesh Agrawal <quiche@google.com>
API-Review: Alice Neels <neelsa@google.com>
API-Review: Jaeheon Yi <jaeheon@google.com>
Commit-Queue: Auto-Submit <auto-submit@fuchsia-infra.iam.gserviceaccount.com>
20 files changed
tree: 18d5a3f47c86061b3ff41a7f00b158b9da9c2706
  1. boards/
  2. build/
  3. buildtools/
  4. bundles/
  5. docs/
  6. examples/
  7. garnet/
  8. products/
  9. scripts/
  10. sdk/
  11. src/
  12. third_party/
  13. tools/
  14. zircon/
  15. .clang-format
  16. .clang-tidy
  17. .git-blame-ignore-revs
  18. .gitattributes
  19. .gitignore
  20. .gn
  21. .style.yapf
  22. AUTHORS
  23. BUILD.gn
  24. CODE_OF_CONDUCT.md
  25. CONTRIBUTING.md
  26. LICENSE
  27. OWNERS
  28. PATENTS
  29. README.md
  30. rustfmt.toml
README.md

Fuchsia

Pink + Purple == Fuchsia (a new operating system)

What is Fuchsia?

Fuchsia is a modular, capability-based operating system. Fuchsia runs on modern 64-bit Intel and ARM processors.

Fuchsia is an open source project with a code of conduct that we expect everyone who interacts with the project to respect.

Read more about Fuchsia's principles.

How can I build and run Fuchsia?

See Getting Started.

Where can I learn more about Fuchsia?

See fuchsia.dev.