// 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
enum StoryState {
    /// 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;
};
