Chromium Code Reviews| Index: content/browser/renderer_host/media/audio_input_device_manager_unittest.cc |
| diff --git a/content/browser/renderer_host/media/audio_input_device_manager_unittest.cc b/content/browser/renderer_host/media/audio_input_device_manager_unittest.cc |
| index e9f5acc6e0d2fa1253766d36d691d1025c2f3712..c06b2ddda7a8138abac4fdb85c2bab3b9e3f1b15 100644 |
| --- a/content/browser/renderer_host/media/audio_input_device_manager_unittest.cc |
| +++ b/content/browser/renderer_host/media/audio_input_device_manager_unittest.cc |
| @@ -20,9 +20,9 @@ |
| #include "build/build_config.h" |
| #include "content/public/common/media_stream_request.h" |
| #include "content/public/test/test_browser_thread_bundle.h" |
| -#include "media/audio/audio_manager_base.h" |
| #include "media/audio/audio_system_impl.h" |
| #include "media/audio/audio_thread_impl.h" |
| +#include "media/audio/mock_audio_manager.h" |
| #include "media/base/media_switches.h" |
| #include "media/base/test_helpers.h" |
| #include "testing/gmock/include/gmock/gmock.h" |
| @@ -64,7 +64,7 @@ class MAYBE_AudioInputDeviceManagerTest : public testing::Test { |
| MAYBE_AudioInputDeviceManagerTest() {} |
| protected: |
| - void SetUp() override { |
| + virtual void Initialize() { |
| base::CommandLine::ForCurrentProcess()->AppendSwitch( |
| switches::kUseFakeDeviceForMediaStream); |
| // AudioInputDeviceManager accesses AudioSystem from IO thread, so it never |
| @@ -74,16 +74,20 @@ class MAYBE_AudioInputDeviceManagerTest : public testing::Test { |
| // Flush the message loop to ensure proper initialization of AudioManager. |
| base::RunLoop().RunUntilIdle(); |
| - audio_system_ = media::AudioSystemImpl::Create(audio_manager_.get()); |
| - manager_ = new AudioInputDeviceManager(audio_system_.get()); |
| - audio_input_listener_.reset(new MockAudioInputDeviceManagerListener()); |
| - manager_->RegisterListener(audio_input_listener_.get()); |
| - |
| // Use fake devices. |
| devices_.emplace_back(MEDIA_DEVICE_AUDIO_CAPTURE, "Fake Device 1", |
| "fake_device_1"); |
| devices_.emplace_back(MEDIA_DEVICE_AUDIO_CAPTURE, "Fake Device 2", |
| "fake_device_2"); |
| + } |
| + |
| + void SetUp() override { |
| + Initialize(); |
| + |
| + audio_system_ = media::AudioSystemImpl::Create(audio_manager_.get()); |
| + manager_ = new AudioInputDeviceManager(audio_system_.get()); |
| + audio_input_listener_.reset(new MockAudioInputDeviceManagerListener()); |
| + manager_->RegisterListener(audio_input_listener_.get()); |
| // Wait until we get the list. |
| base::RunLoop().RunUntilIdle(); |
| @@ -296,4 +300,65 @@ TEST_F(MAYBE_AudioInputDeviceManagerTest, AccessInvalidSession) { |
| base::RunLoop().RunUntilIdle(); |
| } |
| +class AudioInputDeviceManagerNoDevicesTest |
| + : public MAYBE_AudioInputDeviceManagerTest { |
| + public: |
| + AudioInputDeviceManagerNoDevicesTest(){}; |
| + |
| + protected: |
| + void Initialize() override { |
| + audio_manager_ = base::MakeUnique<media::MockAudioManager>( |
| + base::MakeUnique<media::AudioThreadImpl>()); |
| + |
| + devices_.emplace_back(MEDIA_TAB_AUDIO_CAPTURE, "Tab capture", |
|
Guido Urdaneta
2017/07/05 09:37:12
If this is about no devices, why are there three d
o1ka
2017/07/05 10:10:31
There are no physical devices: we use a mock audio
Guido Urdaneta
2017/07/05 13:28:32
Add a comment in the initialization of |audio_mana
|
| + "tab_capture"); |
| + |
| + devices_.emplace_back(MEDIA_DESKTOP_AUDIO_CAPTURE, "Desktop capture", |
| + "desktop_capture"); |
| + |
| + devices_.emplace_back(MEDIA_DEVICE_AUDIO_CAPTURE, "Fake Device", |
| + "fake_device"); |
| + } |
| + |
| + private: |
| + DISALLOW_COPY_AND_ASSIGN(AudioInputDeviceManagerNoDevicesTest); |
| +}; |
| + |
| +TEST_F(AudioInputDeviceManagerNoDevicesTest, |
| + ParametersValidWithoutAudioDevices) { |
| + ASSERT_FALSE(devices_.empty()); |
| + |
| + InSequence s; |
| + |
| + for (StreamDeviceInfoArray::const_iterator iter = devices_.begin(); |
| + iter != devices_.end(); ++iter) { |
| + // Opens/closes the devices. |
| + int session_id = manager_->Open(iter->device); |
| + |
| + // Expected mock call with expected return value. |
| + EXPECT_CALL(*audio_input_listener_, Opened(iter->device.type, session_id)) |
| + .Times(1); |
| + // Waits for the callback. |
| + WaitForOpenCompletion(); |
| + |
| + // Expects that device parameters stored by the manager are valid. |
| + const StreamDeviceInfo* device_info = |
| + manager_->GetOpenedDeviceInfoById(session_id); |
| + EXPECT_TRUE( |
| + media::AudioParameters(media::AudioParameters::AUDIO_FAKE, |
| + static_cast<media::ChannelLayout>( |
| + device_info->device.input.channel_layout), |
| + device_info->device.input.sample_rate, 16, |
| + device_info->device.input.frames_per_buffer) |
| + .IsValid()); |
| + |
| + manager_->Close(session_id); |
| + EXPECT_CALL(*audio_input_listener_, Closed(iter->device.type, session_id)) |
| + .Times(1); |
| + |
| + // Waits for the callback. |
| + base::RunLoop().RunUntilIdle(); |
| + } |
| +} |
| + |
| } // namespace content |