| { |
| include: [ "syslog/client.shard.cml" ], |
| children: [ |
| { |
| name: "workstation_session", |
| url: "fuchsia-pkg://fuchsia.com/workstation_session#meta/workstation_session.cm", |
| startup: "eager", |
| }, |
| { |
| name: "scene_manager", |
| url: "fuchsia-pkg://fuchsia.com/scene_manager#meta/scene_manager.cm", |
| startup: "eager", |
| }, |
| { |
| name: "element_manager", |
| url: "fuchsia-pkg://fuchsia.com/element_manager#meta/element_manager.cm", |
| environment: "#elements_env", |
| }, |
| { |
| name: "dart_jit_runner", |
| url: "fuchsia-pkg://fuchsia.com/dart_jit_runner#meta/dart_jit_runner.cm", |
| startup: "lazy", |
| }, |
| { |
| name: "dart_aot_runner", |
| url: "fuchsia-pkg://fuchsia.com/dart_aot_runner#meta/dart_aot_runner.cm", |
| startup: "lazy", |
| }, |
| { |
| name: "flutter_jit_runner", |
| url: "fuchsia-pkg://fuchsia.com/flutter_jit_runner#meta/flutter_jit_runner.cm", |
| startup: "lazy", |
| }, |
| { |
| name: "flutter_aot_runner", |
| url: "fuchsia-pkg://fuchsia.com/flutter_aot_runner#meta/flutter_aot_runner.cm", |
| startup: "lazy", |
| }, |
| ], |
| capabilities: [ |
| { |
| protocol: [ |
| "fuchsia.element.Manager", |
| "fuchsia.input.injection.InputDeviceRegistry", |
| "fuchsia.ui.accessibility.view.Registry", |
| ], |
| }, |
| ], |
| offer: [ |
| { |
| protocol: [ |
| "fuchsia.logger.LogSink", |
| "fuchsia.ui.composition.Flatland", |
| "fuchsia.ui.composition.FlatlandDisplay", |
| "fuchsia.ui.focus.FocusChainListenerRegistry", |
| "fuchsia.ui.input.ImeService", |
| "fuchsia.ui.input3.Keyboard", |
| "fuchsia.ui.input3.KeyEventInjector", |
| "fuchsia.ui.keyboard.focus.Controller", |
| "fuchsia.ui.pointerinjector.Registry", |
| "fuchsia.ui.scenic.Scenic", |
| "fuchsia.ui.shortcut.Manager", |
| "fuchsia.ui.views.ViewRefInstalled", |
| ], |
| from: "parent", |
| to: [ "#scene_manager" ], |
| }, |
| { |
| directory: "dev-input-report", |
| from: "parent", |
| to: [ "#scene_manager" ], |
| }, |
| { |
| protocol: [ |
| "fuchsia.deprecatedtimezone.Timezone", |
| "fuchsia.feedback.CrashReporter", |
| "fuchsia.identity.account.AccountManager", |
| "fuchsia.intl.PropertyProvider", |
| "fuchsia.logger.LogSink", |
| "fuchsia.posix.socket.Provider", |
| "fuchsia.sys.Launcher", |
| "fuchsia.tracing.provider.Registry", |
| "fuchsia.ui.focus.FocusChainListenerRegistry", |
| "fuchsia.ui.input.ImeService", |
| "fuchsia.ui.keyboard.focus.Controller", |
| "fuchsia.ui.shortcut.Manager", |
| "fuchsia.ui.views.ViewRefInstalled", |
| ], |
| from: "parent", |
| to: [ "#workstation_session" ], |
| }, |
| { |
| protocol: [ "fuchsia.session.scene.Manager" ], |
| from: "#scene_manager", |
| to: [ "#workstation_session" ], |
| }, |
| { |
| protocol: [ |
| "fuchsia.logger.LogSink", |
| "fuchsia.sys.Launcher", |
| "fuchsia.ui.scenic.Scenic", |
| ], |
| from: "parent", |
| to: [ "#element_manager" ], |
| }, |
| { |
| protocol: [ |
| "fuchsia.deprecatedtimezone.Timezone", |
| "fuchsia.feedback.CrashReporter", |
| "fuchsia.intl.PropertyProvider", |
| "fuchsia.logger.LogSink", |
| "fuchsia.posix.socket.Provider", |
| "fuchsia.tracing.provider.Registry", |
| ], |
| from: "parent", |
| to: [ |
| "#dart_aot_runner", |
| "#dart_jit_runner", |
| "#flutter_aot_runner", |
| "#flutter_jit_runner", |
| ], |
| }, |
| { |
| protocol: [ |
| "fuchsia.fonts.Provider", |
| "fuchsia.sysmem.Allocator", |
| "fuchsia.ui.composition.Flatland", |
| "fuchsia.ui.scenic.Scenic", |
| "fuchsia.vulkan.loader.Loader", |
| ], |
| from: "parent", |
| to: [ |
| "#flutter_aot_runner", |
| "#flutter_jit_runner", |
| ], |
| }, |
| { |
| directory: "config-data", |
| from: "parent", |
| to: [ |
| "#dart_aot_runner", |
| "#dart_jit_runner", |
| "#flutter_aot_runner", |
| "#flutter_jit_runner", |
| ], |
| }, |
| |
| // The session manually proxies protocols between #element_manager and the shell. |
| // TODO(fxbug.dev/83819) This will be unnecessary once the shell is a V2 component. |
| { |
| protocol: [ "fuchsia.element.Manager" ], |
| from: "#element_manager", |
| to: [ "#workstation_session" ], |
| }, |
| |
| // The session manually proxies protocols between #element_manager and the shell. |
| // TODO(fxbug.dev/83819) This will be unnecessary once the shell is a V2 component. |
| { |
| protocol: [ "fuchsia.element.GraphicalPresenter" ], |
| from: "#workstation_session", |
| to: [ "#element_manager" ], |
| |
| // A circular dependency exists because protocols are routed in both directions between |
| // #workstation_session and #element_manager; a weak reference is uses to "break" this |
| // cycle. NOTE: this isn't just because the shell is a V1 component; when it becomes a |
| // V2 component, the circular dependency will still exist, except it will be between |
| // #element_manager and the shell, since the session will no longer need to manually |
| // proxy protocols between them. |
| dependency: 'weak', |
| }, |
| ], |
| expose: [ |
| { |
| protocol: [ "fuchsia.element.Manager" ], |
| from: "#element_manager", |
| }, |
| { |
| protocol: [ |
| "fuchsia.input.injection.InputDeviceRegistry", |
| "fuchsia.input.keymap.Configuration", |
| "fuchsia.ui.accessibility.view.Registry", |
| ], |
| from: "#scene_manager", |
| }, |
| { |
| protocol: "fuchsia.component.Binder", |
| from: "framework", |
| }, |
| ], |
| environments: [ |
| { |
| name: "elements_env", |
| extends: "realm", |
| runners: [ |
| { |
| runner: "dart_jit_runner", |
| from: "#dart_jit_runner", |
| }, |
| { |
| runner: "dart_aot_runner", |
| from: "#dart_aot_runner", |
| }, |
| { |
| runner: "flutter_jit_runner", |
| from: "#flutter_jit_runner", |
| }, |
| { |
| runner: "flutter_aot_runner", |
| from: "#flutter_aot_runner", |
| }, |
| ], |
| }, |
| ], |
| } |