[story shell] Add layout logic for a 'workspace' archetype

Add a 'workspace' archetype, with the following roles:
primary:    the main work element
auxiliary:  a helper surface (optional)
header:     the optional header surface (optional)
footer:     the optional footer surface (optional)

Auxiliaries can also specify a preferred visual hierarchy with respect
to the primary: either 'child' - the default, coming after the parent,
or 'parent' - preceeding the primary.

Surfaces are matched to the layout according to
a) declaring in their metadata that they are participating in the
   archetype and
b) the archetype_role they claim to be playing

Surfaces in specific roles can specify a preferred behavior for
multiplexing: e.g. three surfaces want to be 'auxiliary left', and the
most focused surface's expression wins (most recently added to story).
The behaviors are:
single: the surfaces are returned as a stack
toggle: the surfaces are returned as a toggleable, and the chrome to
        achieve that is left to the presenter
copresent: the surfaces are laid out using the copresentation algorithm
            _iff_ they declare a copresentation relation between
            themselves and the parent (e.g. the primary). This is
            subtle.

Add archetype_layout_test, for testing the different archetype
permutations

Test: fx run-host-tests composition_delegate_tests
Change-Id: If7b47a7b68db26deff26139e81e03533fc4dc24a
14 files changed
tree: ee55e704ab1ac846b0abfb9a3b9beb3f689acfb0
  1. .cargo/
  2. app/
  3. bin/
  4. bundles/
  5. examples/
  6. lib/
  7. manifest/
  8. packages/
  9. public/
  10. runtime/
  11. shell/
  12. tests/
  13. tools/
  14. .clang-format
  15. .gitignore
  16. AUTHORS
  17. BUILD.gn
  18. CONTRIBUTING.md
  19. LICENSE
  20. OWNERS
  21. PATENTS
  22. README.md
  23. rustfmt.toml
README.md

Topaz

Topaz augments system functionality by implementing interfaces defined by underlying layers. Topaz contains four major categories of software: modules, agents, shells, and runners.

For example, modules include the dashboard, and runners include the Web, Dart, and Flutter runners.

Removed Components

Looking for something that used to be in this repository? The list below provides a code location and sha that can be used to checkout dead code that has been removed. Please note, it is unlikely the code will build or work correctly shas are provided for reference only. Code can be checked out with:

    git checkout <sha> -- $FUCHSIA_DIR/<location>
  • topaz/app/chat: 9f6c31d2ceb8353f229a9ef6b53ba2386ff31867
  • topaz/app/color: 5a023ccb054104846e3e913951bcc7dc277d2274
  • topaz/app/contacts: 80378fe470817750188707de29237282892a3142
  • topaz/app/dashboard: 982984856fec7e45d295a6ca34bdd819b6760b72
  • topaz/app/documents: b5a3ee29b15414f232865128195d14bd8811ab02
  • topaz/app/image: 5e731a943a907cf960ecfbda1c391958f9093afa
  • topaz/app/link_viewer: 00fe1236c6851da5d54c625a8293561bb617804c
  • topaz/app/video: fc03877f787fc119140b900d476c4563bd04a529
  • topaz/bin/repl: fc25fb9b825f4100b316c4d5135156ef05e0dc4b
  • topaz/examples/bluetooth: f4287c5ae0e9b099983121b41be66e1994b83a02
  • topaz/examples/tictactoe: 07fd955f4
  • topaz/tools/dartfmt_extras: acc1f05718af2bcfbba3317a456f82b67eec4e42
  • topaz/tools/mod: acc1f05718af2bcfbba3317a456f82b67eec4e42
  • topaz/tools/widget_explorer: acc1f05718af2bcfbba3317a456f82b67eec4e42
  • topaz/examples/bluetooth: f4287c5ae0e9b099983121b41be66e1994b83a02
  • topaz/bin/repl: fc25fb9b825f4100b316c4d5135156ef05e0dc4b
  • topaz/examples/tictactoe: 07fd955f4
  • topaz/examples/ui/hello_mod: 07fd955f4
  • topaz/examples/ui/sketchy_flutter: 07fd955f4
  • topaz/examples/ui/text_flutter: 07fd955f4
  • topaz/examples/ui: 1f4faa076
  • topaz/public/lib/agent: 79a60c5d377ed3a55a87d999292036243ff21446
  • topaz/public/lib/config: f489f45e6883df6e3be578342b4e739928adcf77
  • topaz/public/lib/context: f489f45e6883df6e3be578342b4e739928adcf77
  • topaz/public/lib/mod: 75067a620790d76515c3824321eca335a6aa6bab
  • topaz/public/lib/app_driver: 0196bf704f
  • topaz/public/lib/fuchsia_driver: b34f97387
  • topaz/public/lib/decomposition: b34f97387
  • topaz/public/lib/module_resolver: 2e13a4929
  • topaz/public/lib/user: 62cc03e
  • topaz/lib/setui/settings: 4009b4a
  • topaz/public/lib/schemas: e5810dfa1
  • topaz/public/lib/entity: e5810dfa1
  • topaz/public/lib/component: e5810dfa1
  • public/lib/app/dart: 12404bc
  • examples/fidl/echo_client_dart: 12404bc
  • examples/fidl/echo_server_dart: 12404bc
  • examples/fidl/fidl_bindings_performance: 12404bc