| // Copyright 2016 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.internal; |
| |
| using fuchsia.auth; |
| using fuchsia.modular; |
| using fuchsia.modular.auth; |
| using fuchsia.ui.policy; |
| using fuchsia.ui.views; |
| |
| /// The basemgr application (there is no `Basemgr` service) requests |
| /// an instance of this service in order to launch and display a `Sessionmgr`. |
| [Discoverable] // Created by sessionmgr application. |
| protocol Sessionmgr { |
| /// Launches a sessionmgr instance identified by a unique device-local |
| /// `session_id`. The uniqueness of `session_id` must be guaranteed by the |
| /// caller, because `sessionmgr` creates an Environment namespace with the |
| /// given `session_id`, and this will crash if we try to create an |
| /// environment with a pre-existing name, because the services sessionmgr |
| /// tries to access won't be available. |
| /// |
| // TODO(MF-287): Address issues around client-generated session_id and |
| // initialization pattern of sessionmgr. |
| Initialize(string session_id, |
| fuchsia.modular.auth.Account? account, |
| fuchsia.modular.AppConfig session_shell, |
| fuchsia.modular.AppConfig story_shell, |
| bool use_session_shell_for_story_shell_factory, |
| fuchsia.auth.TokenManager? ledger_token_manager, |
| fuchsia.auth.TokenManager? agent_token_manager, |
| SessionContext session_context, |
| fuchsia.ui.views.ViewToken view_token); |
| |
| SwapSessionShell(fuchsia.modular.AppConfig session_shell) -> (); |
| }; |
| |
| /// This interface is provided by basemgr to `Sessionmgr`. |
| protocol SessionContext { |
| /// See detailed comments in SessionShellContext.Logout(). Logs out all the |
| /// users in this session, then shut down the sessionmgr process. |
| Logout(); |
| |
| /// Restarts the session without logging out the users of the session. |
| Restart(); |
| |
| /// Shut down the sessionmgr process. This method should be called if the |
| /// users of the session should remain logged in. Call Logout() if the intent |
| /// is to also log out the users from the session. |
| Shutdown(); |
| |
| GetPresentation(request<fuchsia.ui.policy.Presentation> presentation); |
| }; |