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

using fuchsia.ui.input;

/// Service for exposing state and events of devices, such as media buttons.
[Discoverable]
protocol DeviceListenerRegistry {
    /// Registers a listener to receive media button related events, such as
    /// changes from volume buttons and mute switches.
    RegisterMediaButtonsListener(MediaButtonsListener listener);
};

/// A listener for media buttons events. `DeviceListenerRegistry.RegisterMediaButtonsListener`
/// will consume this listener interface and call `OnMediaButtonsEvent` when the
/// registered media buttons event occurs.
protocol MediaButtonsListener {
    OnMediaButtonsEvent(fuchsia.ui.input.MediaButtonsEvent event);
};
