blob: 1c301ee99088e5d18edb3b122c9eabc9e8e79402 [file] [log] [blame]
// Copyright 2022 The Fuchsia Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
{
include: [
"//sdk/lib/inspect/client.shard.cml",
"syslog/client.shard.cml",
],
program: {
data: "data/workstation_session",
},
children: [
{
name: "login_shell",
url: "fuchsia-pkg://fuchsia.com/ermine#meta/login.cm",
startup: "eager",
},
],
use: [
{
protocol: "fuchsia.component.Realm",
from: "framework",
},
{
protocol: [
"fuchsia.ui.focus.FocusChainListenerRegistry",
"fuchsia.ui.keyboard.focus.Controller",
"fuchsia.ui.shortcut.Manager",
"fuchsia.ui.views.ViewRefInstalled",
],
from: "parent",
},
{
protocol: [ "fuchsia.session.scene.Manager" ],
from: "parent",
availability: "optional",
},
{
directory: "config-data",
from: "parent",
rights: [ "r*" ],
path: "/config/data",
},
],
offer: [
{
protocol: [
"fuchsia.accessibility.semantics.SemanticsManager",
"fuchsia.buildinfo.Provider",
"fuchsia.camera3.DeviceWatcher",
"fuchsia.element.Manager",
"fuchsia.feedback.CrashReporter",
"fuchsia.fonts.Provider",
"fuchsia.hardware.power.statecontrol.Admin",
"fuchsia.identity.account.AccountManager",
"fuchsia.intl.PropertyProvider",
"fuchsia.kernel.VmexResource",
"fuchsia.logger.LogSink",
"fuchsia.media.Audio",
"fuchsia.media.AudioCore",
"fuchsia.media.AudioDeviceEnumerator",
"fuchsia.media.ProfileProvider",
"fuchsia.mediacodec.CodecFactory",
"fuchsia.memory.Monitor",
"fuchsia.memorypressure.Provider",
"fuchsia.net.interfaces.State",
"fuchsia.net.name.Lookup",
"fuchsia.posix.socket.Provider",
"fuchsia.power.battery.BatteryManager",
"fuchsia.power.button.Monitor",
"fuchsia.process.Launcher",
"fuchsia.recovery.FactoryReset",
"fuchsia.settings.Intl",
"fuchsia.settings.Keyboard",
"fuchsia.settings.Privacy",
"fuchsia.ssh.AuthorizedKeys",
"fuchsia.sys.Launcher",
"fuchsia.sysmem.Allocator",
"fuchsia.tracing.perfetto.ProducerConnector",
"fuchsia.ui.activity.Provider",
"fuchsia.ui.brightness.Control",
"fuchsia.ui.composition.Allocator",
"fuchsia.ui.composition.Flatland",
"fuchsia.ui.composition.internal.ScreenCapture",
"fuchsia.ui.composition.ScreenCapture",
"fuchsia.ui.focus.FocusChainListenerRegistry",
"fuchsia.ui.input.ImeService",
"fuchsia.ui.input3.Keyboard",
"fuchsia.ui.keyboard.focus.Controller",
"fuchsia.ui.scenic.Scenic",
"fuchsia.ui.shortcut.Registry",
"fuchsia.ui.views.ViewRefInstalled",
"fuchsia.update.channelcontrol.ChannelControl",
"fuchsia.update.Manager",
"fuchsia.vulkan.loader.Loader",
"fuchsia.wlan.policy.ClientProvider",
],
from: "parent",
to: [ "#login_shell" ],
},
{
directory: [
"config-data",
"root-ssl-certificates",
],
from: "parent",
to: [ "#login_shell" ],
},
{
// TODO(fxbug.dev/105828): These additional `protocol` offers to
// `#login_shell` are only required by the `terminal` component.
// `terminal` is launched as a member of the `elements` collection
// of `#ermine_shell` (a descendent of `#login_shell`). If/when
// there is a way to route capabilities to specific descendents
// (and specific collection members), these protocols should be
// routed only to terminal.
//
// Other (current and future) children of `#login_shell` should not
// `use` these protocols without first getting a security policy
// review.
protocol: [
"fuchsia.bluetooth.sys.Access",
"fuchsia.bluetooth.sys.HostWatcher",
"fuchsia.bluetooth.sys.Pairing",
"fuchsia.device.NameProvider",
"fuchsia.diagnostics.ArchiveAccessor",
"fuchsia.hardware.pty.Device",
"fuchsia.logger.Log",
"fuchsia.pkg.PackageResolverAdmin",
"fuchsia.pkg.RepositoryManager",
"fuchsia.pkg.rewrite.Engine",
"fuchsia.process.Resolver",
"fuchsia.space.Manager",
"fuchsia.starnix.developer.Manager",
"fuchsia.sys.Environment",
"fuchsia.sys2.RealmExplorer.root",
"fuchsia.sys2.RealmQuery.root",
"fuchsia.tracing.provider.Registry",
"fuchsia.virtualization.DebianGuestManager",
"fuchsia.virtualization.LinuxManager",
"fuchsia.virtualization.TerminaGuestManager",
"fuchsia.virtualization.ZirconGuestManager",
],
from: "parent",
to: [ "#login_shell" ],
availability: "same_as_target",
},
{
// TODO(fxbug.dev/105828): These additional `directory` offers to
// `#login_shell` are only required by the `terminal` component.
// `terminal` is launched as a member of the `elements` collection
// of `#ermine_shell` (a descendent of `#login_shell`). If/when
// there is a way to route capabilities to specific descendents
// (and specific collection members), these directories should be
// routed only to terminal.
//
// Other (current and future) children of `#login_shell` should not
// `use` these directories without first getting a security policy
// review.
directory: [
"bin",
"boot-bin",
"pkgfs-packages",
],
from: "parent",
to: [ "#login_shell" ],
},
{
storage: [
"cache",
"tmp",
],
from: "parent",
to: "#login_shell",
},
{
resolver: "full-resolver",
from: "parent",
to: "#login_shell",
},
// Note: The "data" storage capability used to store
// device data is not passed to login_shell, components
// inside the session should use the "account" storage
// capability intended for storaging account data. The
// account storage capability is encrypted using the
// account's authentication factors.
],
expose: [
{
protocol: [
"fuchsia.element.GraphicalPresenter",
"fuchsia.element.Manager",
],
from: "#login_shell",
},
],
}