1 // Copyright (c) 2013 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
5 #ifndef CHROMEOS_AUDIO_AUDIO_DEVICES_PREF_HANDLER_H_
6 #define CHROMEOS_AUDIO_AUDIO_DEVICES_PREF_HANDLER_H_
8 #include "base/basictypes.h"
9 #include "base/memory/ref_counted.h"
10 #include "chromeos/audio/audio_pref_observer.h"
11 #include "chromeos/chromeos_export.h"
19 // Interface that handles audio preference related work, reads and writes
20 // audio preferences, and notifies AudioPrefObserver for audio preference
22 class CHROMEOS_EXPORT AudioDevicesPrefHandler
23 : public base::RefCountedThreadSafe
<AudioDevicesPrefHandler
> {
25 // Gets the audio output volume value from prefs for a device. Since we can
26 // only have either a gain or a volume for a device (depending on whether it
27 // is input or output), we don't really care which value it is.
28 virtual double GetOutputVolumeValue(const AudioDevice
* device
) = 0;
29 virtual double GetInputGainValue(const AudioDevice
* device
) = 0;
30 // Sets the audio volume or gain value to prefs for a device.
31 virtual void SetVolumeGainValue(const AudioDevice
& device
, double value
) = 0;
33 // Reads the audio mute value from prefs for a device.
34 virtual bool GetMuteValue(const AudioDevice
& device
) = 0;
35 // Sets the audio mute value to prefs for a device.
36 virtual void SetMuteValue(const AudioDevice
& device
, bool mute_on
) = 0;
38 // Reads the audio capture allowed value from prefs.
39 virtual bool GetAudioCaptureAllowedValue() = 0;
40 // Reads the audio output allowed value from prefs.
41 virtual bool GetAudioOutputAllowedValue() = 0;
43 // Adds an audio preference observer.
44 virtual void AddAudioPrefObserver(AudioPrefObserver
* observer
) = 0;
45 // Removes an audio preference observer.
46 virtual void RemoveAudioPrefObserver(AudioPrefObserver
* observer
) = 0;
48 // Creates the instance.
49 static AudioDevicesPrefHandler
* Create(PrefService
* local_state
);
52 virtual ~AudioDevicesPrefHandler() {}
55 friend class base::RefCountedThreadSafe
<AudioDevicesPrefHandler
>;
58 } // namespace chromeos
60 #endif // CHROMEOS_AUDIO_AUDIO_DEVICES_PREF_HANDLER_H_