| // 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; |
| |
| using fuchsia.auth; |
| using fuchsia.ui.policy; |
| |
| /// This interface is implemented by a base shell. Dependencies are passed to it |
| /// in Initialize() on startup. The base shell is also expected to implement |
| /// Lifecycle in order to receive a Terminate() call on teardown. |
| /// |
| /// In one component instance there can only be one BaseShell service instance. |
| /// The ViewOwner request is sent to the separate ViewProvider service. This way, |
| /// the base shell may be implemented as a flutter component. |
| [Discoverable] |
| protocol BaseShell { |
| Initialize(BaseShellContext base_shell_context, |
| BaseShellParams base_shell_params); |
| |
| /// This method may be invoked by the basemgr to request an |
| /// AuthenticationUIContext. `request` will then be used to request the base |
| /// shell to show login screen during a UserProvider.AddUser() or if a token |
| /// needs to be refreshed. |
| GetAuthenticationUIContext(request<fuchsia.auth.AuthenticationUIContext> request); |
| }; |
| |
| /// This interface allows the `BaseShell` to request capabilities from the |
| /// `Basemgr` in a way that is more explicit about the services that are |
| /// offered than a generic `ServiceProvider`. |
| protocol BaseShellContext { |
| /// Acquires the user provider service, which is used to add/remove/list and |
| /// authenticate users. |
| GetUserProvider(request<UserProvider> request); |
| |
| /// Acquires the presentation service, which is assumed to already be |
| /// connected to the presenter. |
| GetPresentation(request<fuchsia.ui.policy.Presentation> presentation); |
| }; |
| |
| // TODO(alexmin): Delete BaseShellParams here and from BaseShell.Initialize(). |
| struct BaseShellParams { |
| fuchsia.ui.policy.Presentation? presentation; |
| }; |