mock_audio_manager.h 4.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126
  1. // Copyright (c) 2012 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. #ifndef MEDIA_AUDIO_MOCK_AUDIO_MANAGER_H_
  5. #define MEDIA_AUDIO_MOCK_AUDIO_MANAGER_H_
  6. #include <memory>
  7. #include <string>
  8. #include "base/callback_forward.h"
  9. #include "media/audio/audio_debug_recording_manager.h"
  10. #include "media/audio/audio_manager.h"
  11. #include "testing/gmock/include/gmock/gmock.h"
  12. namespace media {
  13. // This class is a simple mock around AudioManager, used exclusively for tests,
  14. // which avoids to use the actual (system and platform dependent) AudioManager.
  15. // Some bots do not have input devices, thus using the actual AudioManager
  16. // would causing failures on classes which expect that.
  17. class MockAudioManager : public AudioManager {
  18. public:
  19. using GetDeviceDescriptionsCallback =
  20. base::RepeatingCallback<void(AudioDeviceDescriptions*)>;
  21. using GetAssociatedOutputDeviceIDCallback =
  22. base::RepeatingCallback<std::string(const std::string&)>;
  23. using MakeOutputStreamCallback =
  24. base::RepeatingCallback<media::AudioOutputStream*(
  25. const media::AudioParameters& params,
  26. const std::string& device_id)>;
  27. using MakeInputStreamCallback =
  28. base::RepeatingCallback<media::AudioInputStream*(
  29. const media::AudioParameters& params,
  30. const std::string& device_id)>;
  31. explicit MockAudioManager(std::unique_ptr<AudioThread> audio_thread);
  32. MockAudioManager(const MockAudioManager&) = delete;
  33. MockAudioManager& operator=(const MockAudioManager&) = delete;
  34. ~MockAudioManager() override;
  35. AudioOutputStream* MakeAudioOutputStream(
  36. const media::AudioParameters& params,
  37. const std::string& device_id,
  38. const LogCallback& log_callback) override;
  39. AudioOutputStream* MakeAudioOutputStreamProxy(
  40. const media::AudioParameters& params,
  41. const std::string& device_id) override;
  42. AudioInputStream* MakeAudioInputStream(
  43. const media::AudioParameters& params,
  44. const std::string& device_id,
  45. const LogCallback& log_callback) override;
  46. void AddOutputDeviceChangeListener(AudioDeviceListener* listener) override;
  47. void RemoveOutputDeviceChangeListener(AudioDeviceListener* listener) override;
  48. std::unique_ptr<AudioLog> CreateAudioLog(
  49. AudioLogFactory::AudioComponent component,
  50. int component_id) override;
  51. void InitializeDebugRecording() override;
  52. AudioDebugRecordingManager* GetAudioDebugRecordingManager() override;
  53. const char* GetName() override;
  54. // Setters to emulate desired in-test behavior.
  55. void SetMakeOutputStreamCB(MakeOutputStreamCallback cb);
  56. void SetMakeInputStreamCB(MakeInputStreamCallback cb);
  57. void SetInputStreamParameters(const AudioParameters& params);
  58. void SetOutputStreamParameters(const AudioParameters& params);
  59. void SetDefaultOutputStreamParameters(const AudioParameters& params);
  60. void SetHasInputDevices(bool has_input_devices);
  61. void SetHasOutputDevices(bool has_output_devices);
  62. void SetInputDeviceDescriptionsCallback(
  63. GetDeviceDescriptionsCallback callback);
  64. void SetOutputDeviceDescriptionsCallback(
  65. GetDeviceDescriptionsCallback callback);
  66. void SetAssociatedOutputDeviceIDCallback(
  67. GetAssociatedOutputDeviceIDCallback callback);
  68. protected:
  69. void ShutdownOnAudioThread() override;
  70. bool HasAudioOutputDevices() override;
  71. bool HasAudioInputDevices() override;
  72. void GetAudioInputDeviceDescriptions(
  73. media::AudioDeviceDescriptions* device_descriptions) override;
  74. void GetAudioOutputDeviceDescriptions(
  75. media::AudioDeviceDescriptions* device_descriptions) override;
  76. AudioParameters GetDefaultOutputStreamParameters() override;
  77. AudioParameters GetOutputStreamParameters(
  78. const std::string& device_id) override;
  79. AudioParameters GetInputStreamParameters(
  80. const std::string& device_id) override;
  81. std::string GetAssociatedOutputDeviceID(
  82. const std::string& input_device_id) override;
  83. std::string GetDefaultInputDeviceID() override;
  84. std::string GetDefaultOutputDeviceID() override;
  85. std::string GetCommunicationsInputDeviceID() override;
  86. std::string GetCommunicationsOutputDeviceID() override;
  87. private:
  88. AudioParameters input_params_;
  89. AudioParameters output_params_;
  90. AudioParameters default_output_params_;
  91. bool has_input_devices_ = true;
  92. bool has_output_devices_ = true;
  93. MakeOutputStreamCallback make_output_stream_cb_;
  94. MakeInputStreamCallback make_input_stream_cb_;
  95. GetDeviceDescriptionsCallback get_input_device_descriptions_cb_;
  96. GetDeviceDescriptionsCallback get_output_device_descriptions_cb_;
  97. GetAssociatedOutputDeviceIDCallback get_associated_output_device_id_cb_;
  98. std::unique_ptr<AudioDebugRecordingManager> debug_recording_manager_;
  99. };
  100. } // namespace media.
  101. #endif // MEDIA_AUDIO_MOCK_AUDIO_MANAGER_H_