// Copyright 2022 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.test.input;

using fuchsia.input.report;

/// A tool to inject media button events into Input Pipeline.
///
/// Please extend as necessary.
closed protocol MediaButtonsDevice {
    /// Simulates a button press and release on the requested button on the
    /// device.
    strict SimulateButtonPress(table {
        /// The button receiving the button press.
        1: button fuchsia.input.report.ConsumerControlButton;
    }) -> ();

    /// Send a vector of pressing button on the requested button on the
    /// device. Passing empty vector will release all pressing buttons.
    @available(added=19)
    strict SendButtonsState(table {
        /// The button receiving the button press.
        1: buttons
                vector<fuchsia.input.report.ConsumerControlButton>:fuchsia.input.report.CONSUMER_CONTROL_MAX_NUM_BUTTONS;
    }) -> ();
};
