blob: b6b0271f212ad0183ded00e387f9c5a191616171 [file] [log] [blame]
// Copyright 2019 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.
library fuchsia.modular.session;
using fuchsia.io;
using fuchsia.ui.policy;
using fuchsia.sys;
/// Descriptions and defaults for these configurations are echoed in
/// peridot/docs/modular/guide/config.md.
table BasemgrConfig {
/// When set to false, Cobalt statistics are disabled.
/// Default: true
1: bool enable_cobalt;
/// When set to true, the Presenter service controls management of views.
/// Default: false
2: bool enable_presenter;
/// When set to true, wait for persistent data to initialize.
/// Default: true
3: bool use_minfs;
/// Create story shells through StoryShellFactory exposed by the session
/// shell instead of creating separate story shell components. When set,
/// `story_shell_url` and any story shell args are ignored.
/// Default: false
4: bool use_session_shell_for_story_shell_factory;
/// Tells basemgr whether it is running as a part of an integration test.
/// Default: false
5: bool test;
/// The name of the test
6: string:fuchsia.io.MAX_PATH test_name;
/// Launch configurations specific to base shell.
7: BaseShellConfig base_shell;
/// A map of launch configurations specific to session shells.
8: vector<SessionShellMapEntry> session_shell_map;
/// Launch configurations specific to story shell.
9: StoryShellConfig story_shell;
/// Temporary placeholder to pass configurations to sessionmgr. Will be
/// removed with the completion of MF-10.
10: AppConfig sessionmgr;
};
table BaseShellConfig {
/// Contains the fuchsia package url and arguments to pass to the shell.
1: AppConfig app_config;
/// When set to true, the base shell is kept alive after a log in. This is
/// used for testing because current integration tests expect base shell
/// to always be running.
/// Default: false
2: bool keep_alive_after_login;
};
table SessionShellMapEntry {
/// The name of the session shell represented by its url.
1: string:fuchsia.io.MAX_PATH name;
/// The launch configurations for the session shell.
2: SessionShellConfig config;
};
table SessionShellConfig {
/// Contains the fuchsia package url and arguments to pass to the shell.
1: AppConfig app_config;
/// The display usage policy for this session shell.
///
/// Optional: defaults to DisplayUsage::kUnknown.
2: fuchsia.ui.policy.DisplayUsage display_usage;
/// The screen height in millimeters for the session shell's display.
///
/// Optional: defaults to full screen.
3: float32 screen_height;
/// The screen width in millimeters for the session shell's display.
///
/// Optional: defaults to full screen.
4: float32 screen_width;
};
table StoryShellConfig {
/// Contains the fuchsia package url and arguments to pass to the shell.
1: AppConfig app_config;
};
table SessionmgrConfig {
1: CloudProvider cloud_provider;
/// When set to false, Cobalt statistics are disabled. This is used for
/// testing.
/// Default: true
2: bool enable_cobalt;
/// When set to false, StoryShell instances are not warmed up as a startup
/// latency optimization. This is used for testing.
/// Default: true
3: bool enable_story_shell_preload;
/// Tells the sessionmgr whether it should host+pass a memfs-backed
/// directory to the ledger for the user's repository, or to use
/// /data/LEDGER.
/// Default: false
4: bool use_memfs_for_ledger;
/// A list of fuchsia package urls that specify which agents to launch at
/// startup.
5: vector<string:fuchsia.io.MAX_PATH> startup_agents;
/// A list of fuchsia package urls that specify which agents to launch at
/// startup with PuppetMaster and FocusProvider services.
6: vector<string:fuchsia.io.MAX_PATH> session_agents;
/// The fuchsia package url for which story shell to use.
7: string:fuchsia.io.MAX_PATH story_shell_url;
/// A map of agents to the arguments they should be started with.
8: vector<AppConfig> component_args;
/// Deprecated
9: bool use_parent_runner_for_story_realm;
/// A list of supported services and the URL of the agent known to provide
/// that service. Used by the Session Manager to implement
/// `ComponentContext` method ConnectToAgentService().
10: vector<AgentServiceIndexEntry> agent_service_index;
};
/// Used to pass around configuration references to apps such as base shell,
/// session shell, story shell, and agents.
table AppConfig {
/// The fuchsia package url for app.
1: string:fuchsia.io.MAX_PATH url;
/// The arguments for the app.
2: vector<string> args;
};
/// A service and the URL of the agent known to provide that service.
table AgentServiceIndexEntry {
/// The service name.
1: string service_name;
/// The fuchsia component url for agent.
2: fuchsia.sys.component_url agent_url;
};
enum CloudProvider {
/// Use a cloud provider configured by Ledger.
LET_LEDGER_DECIDE = 1;
/// Use a cloud provider available in the incoming namespace, rather than
/// initializing and instance within sessionmgr. This can be used by Voila to
/// inject a custom cloud provider.
FROM_ENVIRONMENT = 2;
NONE = 3;
};