// Copyright 2019 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.ui.activity;

/// The Control protocol can be used to override the activity state of the
/// Activity Service.
///
/// State provided through this interface takes precedence over state which
/// is determined based on activity sent through the Tracker API.
///
/// Once a state has been assigned through this protocol, the Activity
/// Service will no longer determine state based on input to the Tracker
/// protocol, and instead will only report state transitions occuring through
/// the Control protocol.
// TODO(38334): Remove this transitional interface.
[Discoverable]
protocol Control {
    /// Sets the Activity Service's state to |state|.
    /// All listeners registered through the Provider protocol will immediately
    /// be notified of the new state.
    SetState(State state);
};
