// Copyright 2017 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;

/// State of a Story. A story is either running, stopping, or stopped, separately
/// on every device of the user. If it's running, it can also be focused, but
/// that's tracked in a separate service, cf. FocusProvider in focus.fidl.
///
/// Possible state transitions are:
///
///   STOPPED  -> RUNNING
///   RUNNING  -> STOPPING
///   STOPPING -> STOPPED
type StoryState = strict enum {
    /// Story was started using StoryController.Start().
    RUNNING = 1;
    /// Story is in the middle of stopping after StoryController.Stop() was
    /// called.
    STOPPING = 2;
    /// Story was not yet run, or Story was stopped after StoryController.Stop()
    /// was called.
    STOPPED = 3;
};
