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.
4 
5 #ifndef CHROMEOS_AUDIO_AUDIO_DEVICES_PREF_HANDLER_STUB_H_
6 #define CHROMEOS_AUDIO_AUDIO_DEVICES_PREF_HANDLER_STUB_H_
7 
8 #include <stdint.h>
9 
10 #include <map>
11 
12 #include "base/component_export.h"
13 #include "base/macros.h"
14 #include "chromeos/audio/audio_devices_pref_handler.h"
15 
16 namespace chromeos {
17 
18 // Stub class for AudioDevicesPrefHandler, used for testing.
COMPONENT_EXPORT(CHROMEOS_AUDIO)19 class COMPONENT_EXPORT(CHROMEOS_AUDIO) AudioDevicesPrefHandlerStub
20     : public AudioDevicesPrefHandler {
21  public:
22   struct DeviceState {
23     bool active;
24     bool activate_by_user;
25   };
26 
27   using AudioDeviceMute = std::map<uint64_t, bool>;
28   using AudioDeviceVolumeGain = std::map<uint64_t, int>;
29   using AudioDeviceStateMap = std::map<uint64_t, DeviceState>;
30 
31   AudioDevicesPrefHandlerStub();
32 
33   // AudioDevicesPrefHandler:
34   double GetOutputVolumeValue(const AudioDevice* device) override;
35   double GetInputGainValue(const AudioDevice* device) override;
36   void SetVolumeGainValue(const AudioDevice& device, double value) override;
37   bool GetMuteValue(const AudioDevice& device) override;
38   void SetMuteValue(const AudioDevice& device, bool mute_on) override;
39   void SetDeviceActive(const AudioDevice& device,
40                        bool active,
41                        bool activate_by_user) override;
42   bool GetDeviceActive(const AudioDevice& device,
43                        bool* active,
44                        bool* activate_by_user) override;
45   bool GetAudioOutputAllowedValue() override;
46   void AddAudioPrefObserver(AudioPrefObserver* observer) override;
47   void RemoveAudioPrefObserver(AudioPrefObserver* observer) override;
48 
49  protected:
50   ~AudioDevicesPrefHandlerStub() override;
51 
52  private:
53   AudioDeviceMute audio_device_mute_map_;
54   AudioDeviceVolumeGain audio_device_volume_gain_map_;
55   AudioDeviceStateMap audio_device_state_map_;
56 
57   DISALLOW_COPY_AND_ASSIGN(AudioDevicesPrefHandlerStub);
58 };
59 
60 }  // namespace chromeos
61 
62 #endif  // CHROMEOS_AUDIO_AUDIO_DEVICES_PREF_HANDLER_STUB_H_
63