| 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 {
|
| + 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());
|
|
|
|
|