| // 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.modular.auth; |
| using fuchsia.speech; |
| using fuchsia.ui.policy; |
| using fuchsia.ui.viewsv1token; |
| |
| |
| // This interface is implemented by a session shell and is used by the |
| // sessionmgr to hand to the session shell views of stories, or to notify that |
| // the view of a story is about to be closed. |
| [Discoverable] |
| interface SessionShell { |
| // Displays the given story view. The story this view belongs to is |
| // identified by |view_id.story_id|. |
| AttachView(ViewIdentifier view_id, fuchsia.ui.viewsv1token.ViewOwner view_owner); |
| |
| // Instructs the session shell to detach the view identified by |view_id| |
| // that was previously provided by AttachView() from the UI of the session |
| // shell. The view will be closed soon after DetachView() returns, or when a |
| // timeout is reached. |
| // |
| // It is customary for the session shell to display a placeholder before a |
| // view is attached for a given view identifier, or after it was detached. |
| // |
| // If the story identified by |view_id.story_id| is about to be deleted, the |
| // Shell will observe a call to StoryProviderWatcher.OnDelete() sometime |
| // after DetachView() returns. |
| // |
| // If the session for which this session shell is responsible for is being |
| // terminated, or the session shell is stopped because it's replaced by |
| // another session shell, DetachView() will *not* be called at all, and the |
| // shell will rather observe a call to Lifecycle.Terminate(). |
| DetachView(ViewIdentifier view_id) -> (); |
| }; |
| |
| // Identifies a view provided to a session shell. The values of the |story_id| |
| // field match those used in the |StoryProvider| interface, allowing |
| // identification of the same story across interfaces. |
| // |
| // This is a struct rather than a naked string to allow for future evolution of |
| // the identifier without changing the |SessionShell| API itself. |
| struct ViewIdentifier { |
| string story_id; |
| }; |
| |
| // This interface allows a |SessionShell| to request capabilities from its |
| // creator in a way that is more explicit about the services that are |
| // offered than a generic |ServiceProvider|. |
| [Discoverable] |
| interface SessionShellContext { |
| // The account associated with the currently logged-in user. It's NULL if |
| // logged into GUEST mode. |
| 1: GetAccount() -> (fuchsia.modular.auth.Account? account); |
| 2: GetAgentProvider(request<AgentProvider> request); |
| 3: GetComponentContext(request<ComponentContext> request); |
| 4: GetDeviceName() -> (string device_name); |
| 5: GetFocusController(request<FocusController> request); |
| 6: GetFocusProvider(request<FocusProvider> request); |
| 8: GetLink(request<Link> request); |
| 9: GetPresentation(request<fuchsia.ui.policy.Presentation> request); |
| 10: GetSpeechToText(request<fuchsia.speech.SpeechToText> request); |
| 11: GetStoryProvider(request<StoryProvider> request); |
| 12: GetSuggestionProvider(request<SuggestionProvider> request); |
| 13: GetVisibleStoriesController(request<VisibleStoriesController> request); |
| |
| // Requests logout of the user. This causes the basemgr to tear down the |
| // |Sessionmgr| instance of the user. |
| 16: Logout(); |
| }; |
| |
| // Session shell provides this service to the framework which may plumb it to |
| // different subscribers, such as story shell and intelligence provider. |
| // |
| // EXPERIMENTAL Service that allows consumers of a given story to get a |
| // connection to a Presentation, and visual state services provided by the user |
| // shell. This allows story shell implementations to coordinate event and focus |
| // handling. An analog mechanism exists between BaseShell and SessionShell. |
| [Discoverable] // Created by session shell components. |
| interface SessionShellPresentationProvider { |
| // When a StoryShell calls StoryShellContext.GetPresentation(), this request |
| // arrives here. |
| 1: GetPresentation(string story_id, request<fuchsia.ui.policy.Presentation> request); |
| |
| // When a StoryShell calls StoryShellContext.WatchVisualState(), this request |
| // arrives here. |
| 2: WatchVisualState(string story_id, StoryVisualStateWatcher watcher); |
| }; |