blob: 15d14edb48d9e036c10be38c7b83355f445f942b [file] [log] [blame]
{
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",
},
],
},
],
}