| // Copyright (c) 2012 The Chromium Authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| #ifndef MEDIA_AUDIO_MOCK_AUDIO_MANAGER_H_ |
| #define MEDIA_AUDIO_MOCK_AUDIO_MANAGER_H_ |
| |
| #include <memory> |
| #include <string> |
| |
| #include "base/callback_forward.h" |
| #include "base/macros.h" |
| #include "media/audio/audio_debug_recording_manager.h" |
| #include "media/audio/audio_manager.h" |
| #include "testing/gmock/include/gmock/gmock.h" |
| |
| namespace media { |
| |
| // This class is a simple mock around AudioManager, used exclusively for tests, |
| // which avoids to use the actual (system and platform dependent) AudioManager. |
| // Some bots do not have input devices, thus using the actual AudioManager |
| // would causing failures on classes which expect that. |
| class MockAudioManager : public AudioManager { |
| public: |
| using GetDeviceDescriptionsCallback = |
| base::RepeatingCallback<void(AudioDeviceDescriptions*)>; |
| using GetAssociatedOutputDeviceIDCallback = |
| base::RepeatingCallback<std::string(const std::string&)>; |
| using MakeOutputStreamCallback = |
| base::RepeatingCallback<media::AudioOutputStream*( |
| const media::AudioParameters& params, |
| const std::string& device_id)>; |
| using MakeInputStreamCallback = |
| base::RepeatingCallback<media::AudioInputStream*( |
| const media::AudioParameters& params, |
| const std::string& device_id)>; |
| |
| explicit MockAudioManager(std::unique_ptr<AudioThread> audio_thread); |
| |
| MockAudioManager(const MockAudioManager&) = delete; |
| MockAudioManager& operator=(const MockAudioManager&) = delete; |
| |
| ~MockAudioManager() override; |
| |
| AudioOutputStream* MakeAudioOutputStream( |
| const media::AudioParameters& params, |
| const std::string& device_id, |
| const LogCallback& log_callback) override; |
| |
| AudioOutputStream* MakeAudioOutputStreamProxy( |
| const media::AudioParameters& params, |
| const std::string& device_id) override; |
| |
| AudioInputStream* MakeAudioInputStream( |
| const media::AudioParameters& params, |
| const std::string& device_id, |
| const LogCallback& log_callback) override; |
| |
| void AddOutputDeviceChangeListener(AudioDeviceListener* listener) override; |
| void RemoveOutputDeviceChangeListener(AudioDeviceListener* listener) override; |
| |
| std::unique_ptr<AudioLog> CreateAudioLog( |
| AudioLogFactory::AudioComponent component, |
| int component_id) override; |
| |
| void InitializeDebugRecording() override; |
| AudioDebugRecordingManager* GetAudioDebugRecordingManager() override; |
| |
| const char* GetName() override; |
| |
| // Setters to emulate desired in-test behavior. |
| void SetMakeOutputStreamCB(MakeOutputStreamCallback cb); |
| void SetMakeInputStreamCB(MakeInputStreamCallback cb); |
| void SetInputStreamParameters(const AudioParameters& params); |
| void SetOutputStreamParameters(const AudioParameters& params); |
| void SetDefaultOutputStreamParameters(const AudioParameters& params); |
| void SetHasInputDevices(bool has_input_devices); |
| void SetHasOutputDevices(bool has_output_devices); |
| void SetInputDeviceDescriptionsCallback( |
| GetDeviceDescriptionsCallback callback); |
| void SetOutputDeviceDescriptionsCallback( |
| GetDeviceDescriptionsCallback callback); |
| void SetAssociatedOutputDeviceIDCallback( |
| GetAssociatedOutputDeviceIDCallback callback); |
| |
| protected: |
| void ShutdownOnAudioThread() override; |
| |
| bool HasAudioOutputDevices() override; |
| |
| bool HasAudioInputDevices() override; |
| |
| void GetAudioInputDeviceDescriptions( |
| media::AudioDeviceDescriptions* device_descriptions) override; |
| |
| void GetAudioOutputDeviceDescriptions( |
| media::AudioDeviceDescriptions* device_descriptions) override; |
| |
| AudioParameters GetDefaultOutputStreamParameters() override; |
| AudioParameters GetOutputStreamParameters( |
| const std::string& device_id) override; |
| AudioParameters GetInputStreamParameters( |
| const std::string& device_id) override; |
| std::string GetAssociatedOutputDeviceID( |
| const std::string& input_device_id) override; |
| std::string GetDefaultInputDeviceID() override; |
| std::string GetDefaultOutputDeviceID() override; |
| std::string GetCommunicationsInputDeviceID() override; |
| std::string GetCommunicationsOutputDeviceID() override; |
| |
| private: |
| AudioParameters input_params_; |
| AudioParameters output_params_; |
| AudioParameters default_output_params_; |
| bool has_input_devices_ = true; |
| bool has_output_devices_ = true; |
| MakeOutputStreamCallback make_output_stream_cb_; |
| MakeInputStreamCallback make_input_stream_cb_; |
| GetDeviceDescriptionsCallback get_input_device_descriptions_cb_; |
| GetDeviceDescriptionsCallback get_output_device_descriptions_cb_; |
| GetAssociatedOutputDeviceIDCallback get_associated_output_device_id_cb_; |
| std::unique_ptr<AudioDebugRecordingManager> debug_recording_manager_; |
| }; |
| |
| } // namespace media. |
| |
| #endif // MEDIA_AUDIO_MOCK_AUDIO_MANAGER_H_ |