Chromium Code Reviews| Index: content/renderer/media/user_media_client_impl_unittest.cc |
| diff --git a/content/renderer/media/user_media_client_impl_unittest.cc b/content/renderer/media/user_media_client_impl_unittest.cc |
| index 475aa499f25f58ee095c1d8a9090198454040475..24e3cbf917cbb353831d3d1286019c142008edc4 100644 |
| --- a/content/renderer/media/user_media_client_impl_unittest.cc |
| +++ b/content/renderer/media/user_media_client_impl_unittest.cc |
| @@ -250,7 +250,6 @@ class UserMediaClientImplUnderTest : public UserMediaClientImpl { |
| const StreamDeviceInfo& device, |
| const blink::WebMediaConstraints& constraints, |
| const MediaStreamSource::ConstraintsCallback& source_ready) override { |
| - MediaStreamAudioSource* source; |
| if (create_source_that_fails_) { |
| class FailedAtLifeAudioSource : public MediaStreamAudioSource { |
| public: |
| @@ -261,21 +260,46 @@ class UserMediaClientImplUnderTest : public UserMediaClientImpl { |
| return false; |
| } |
| }; |
| - source = new FailedAtLifeAudioSource(); |
| + FailedAtLifeAudioSource* source = new FailedAtLifeAudioSource(); |
| + source->SetDeviceInfo(device); |
| + return source; |
| } else { |
| - source = new MediaStreamAudioSource(true); |
| - } |
| - source->SetDeviceInfo(device); |
| + class GeneratingAudioSource : public MediaStreamAudioSource { |
|
Guido Urdaneta
2017/04/06 13:18:57
Normally, I would request this class to be defined
hta - Chromium
2017/04/06 13:57:52
Acknowledged.
I thought about merging FailedAtLif
|
| + public: |
| + GeneratingAudioSource() : MediaStreamAudioSource(true) { |
| + SetFormat( |
| + media::AudioParameters(media::AudioParameters::AUDIO_PCM_LINEAR, |
| + media::CHANNEL_LAYOUT_MONO, 8000, 8, 1)); |
| + } |
| + ~GeneratingAudioSource() override {} |
| + void InjectAudio() { |
| + std::unique_ptr<media::AudioBus> data = |
| + media::AudioBus::Create(GetAudioParameters()); |
| + DeliverDataToTracks(*data, base::TimeTicks()); |
| + } |
| + bool ConnectToTrack( |
| + const blink::WebMediaStreamTrack& blink_track) override { |
| + bool result = MediaStreamAudioSource::ConnectToTrack(blink_track); |
| + // Queue a task to inject an audio sample after other stuff finishes. |
| + // RunUntilIdle is required for this task to complete. |
| + // We assume that "source" will survive long enough that it's safe |
| + // to use base::Unretained. |
| + base::ThreadTaskRunnerHandle::Get()->PostTask( |
| + FROM_HERE, base::Bind(&GeneratingAudioSource::InjectAudio, |
| + base::Unretained(this))); |
| + return result; |
| + } |
| + }; |
| - if (!create_source_that_fails_) { |
| - // RunUntilIdle is required for this task to complete. |
| + GeneratingAudioSource* source = new GeneratingAudioSource(); |
| + source->SetDeviceInfo(device); |
| + // Queue a task to inform about the source being ready. |
| base::ThreadTaskRunnerHandle::Get()->PostTask( |
| FROM_HERE, |
| base::Bind(&UserMediaClientImplUnderTest::SignalSourceReady, |
| source_ready, source)); |
| + return source; |
| } |
| - |
| - return source; |
| } |
| MediaStreamVideoSource* CreateVideoSource( |
| @@ -362,7 +386,6 @@ class UserMediaClientImplTest : public ::testing::Test { |
| user_media_client_impl_->RequestUserMediaForTest(); |
| FakeMediaStreamDispatcherRequestUserMediaComplete(); |
| StartMockedVideoSource(); |
| - |
| EXPECT_EQ(UserMediaClientImplUnderTest::REQUEST_SUCCEEDED, |
| user_media_client_impl_->request_state()); |