blob: c1d54574476ad1149d52b2b6a35cce03adf66bdc [file] [log] [blame]
// 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.ui.policy;
using fuchsia.ui.views;
/// 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.
protocol SessionShell {
/// Displays the given story view. The story this view belongs to is
/// identified by `view_id.story_id`.
/// DEPRECATED. For transitional purposes only.
AttachView(ViewIdentifier view_id, fuchsia.ui.views.ViewHolderToken view_holder_token);
AttachView2(ViewIdentifier view_id, fuchsia.ui.views.ViewHolderToken view_holder_token);
/// 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:MAX to allow for future evolution of
/// the identifier without changing the `SessionShell` API itself.
struct ViewIdentifier {
string:MAX 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`.
protocol SessionShellContext {
GetComponentContext(request<ComponentContext> request);
GetPresentation(request<fuchsia.ui.policy.Presentation> request);
GetStoryProvider(request<StoryProvider> request);
/// Restarts the session.
/// Deprecated: Equivalent to Restart().