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

/// DiscreteActivity is an activity which occurs at a point in time.
flexible union DiscreteActivity {
    /// Activities that require no special handling.
    1: GenericActivity generic;
};

/// OngoingActivity is an activity which has a definite start and end time.
flexible union OngoingActivity {
    /// Activities that require no special handling.
    1: GenericActivity generic;
};

/// GenericActivity is a user or system activity of unspecified type, e.g.
/// a keyboard press or an alarm going off.
table GenericActivity {
    /// Brief human-readable label for the activity, for logging/debugging.
    /// e.g. "cursor", "key", "video"
    1: string label;
};
