1c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath// Copyright 2014 The Chromium Authors. All rights reserved.
2c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath// Use of this source code is governed by a BSD-style license that can be
3c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath// found in the LICENSE file.
4c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath
5c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath#ifndef ASH_SYSTEM_AUDIO_TRAY_AUDIO_DELEGATE_H_
6c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath#define ASH_SYSTEM_AUDIO_TRAY_AUDIO_DELEGATE_H_
7c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath
8c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamathnamespace ash {
9c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamathnamespace system {
10c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath
11c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamathclass ASH_EXPORT TrayAudioDelegate {
12c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath public:
13c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath
14c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath  enum { kNoAudioDeviceIcon = -1 };
15c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath
16c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath  virtual ~TrayAudioDelegate() {}
17c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath
18c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath  // Sets the volume level of the output device to the minimum level which is
19c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath  // deemed to be audible.
20c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath  virtual void AdjustOutputVolumeToAudibleLevel() = 0;
21c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath
22c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath  // Gets the default level in the range 0%-100% at which the output device
23c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath  // should be muted.
24c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath  virtual int GetOutputDefaultVolumeMuteLevel() = 0;
25c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath
26c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath  // Gets the icon to use for the active output device.
27c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath  virtual int GetActiveOutputDeviceIconId() = 0;
28c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath
29c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath  // Returns the volume level of the output device in the range 0%-100%.
30c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath  virtual int GetOutputVolumeLevel() = 0;
31c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath
32c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath  // Returns true if the device has alternative inputs or outputs.
33c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath  virtual bool HasAlternativeSources() = 0;
34c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath
35c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath  // Returns whether the output volume is muted.
36c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath  virtual bool IsOutputAudioMuted() = 0;
37c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath
38c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath  // Sets the mute state of the output device.
39c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath  virtual void SetOutputAudioIsMuted(bool is_muted) = 0;
40c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath
41c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath  // Sets the volume level of the output device in the range 0%-100%
42c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath  virtual void SetOutputVolumeLevel(int level) = 0;
43c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath};
44c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath
45c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath}  // namespace system
46c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath}  // namespace ash
47c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath
48c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath#endif  // ASH_SYSTEM_AUDIO_TRAY_AUDIO_DELEGATE_H_
49c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath