| Index: content/renderer/media/media_stream_audio_processor_unittest.cc
|
| diff --git a/content/renderer/media/media_stream_audio_processor_unittest.cc b/content/renderer/media/media_stream_audio_processor_unittest.cc
|
| index e675e6c3769a6957597dfa6d0bc4634f6fca2432..3404ed57420c058d736ac385b4a2fac83db4665f 100644
|
| --- a/content/renderer/media/media_stream_audio_processor_unittest.cc
|
| +++ b/content/renderer/media/media_stream_audio_processor_unittest.cc
|
| @@ -199,6 +199,16 @@ class MediaStreamAudioProcessorTest : public ::testing::Test {
|
| #endif
|
| }
|
|
|
| + bool GetAec3ConfigState(MediaStreamAudioProcessor* audio_processor) {
|
| + DCHECK(audio_processor);
|
| + if (!audio_processor->audio_processing_) {
|
| + ADD_FAILURE() << "AudioProcessing object missing where it shouldn't be";
|
| + return false;
|
| + }
|
| + return audio_processor->audio_processing_->GetConfig()
|
| + .echo_canceller3.enabled;
|
| + }
|
| +
|
| base::MessageLoop main_thread_message_loop_;
|
| media::AudioParameters params_;
|
| MediaStreamDevice::AudioDeviceParameters input_device_params_;
|
| @@ -592,4 +602,51 @@ TEST_F(MediaStreamAudioProcessorTest, MAYBE_TestWithKeyboardMicChannel) {
|
| audio_processor->Stop();
|
| }
|
|
|
| +// Test that the OnAec3Enable method has the desired effect on the APM config.
|
| +TEST_F(MediaStreamAudioProcessorTest, TestAec3Switch) {
|
| + MockConstraintFactory constraint_factory;
|
| + scoped_refptr<WebRtcAudioDeviceImpl> webrtc_audio_device(
|
| + new WebRtcAudioDeviceImpl());
|
| + scoped_refptr<MediaStreamAudioProcessor> audio_processor(
|
| + new rtc::RefCountedObject<MediaStreamAudioProcessor>(
|
| + constraint_factory.CreateWebMediaConstraints(), input_device_params_,
|
| + webrtc_audio_device.get()));
|
| +
|
| + audio_processor->OnAec3Enable(true);
|
| + EXPECT_TRUE(GetAec3ConfigState(audio_processor.get()));
|
| +
|
| + audio_processor->OnAec3Enable(false);
|
| + EXPECT_FALSE(GetAec3ConfigState(audio_processor.get()));
|
| +
|
| + // Stop |audio_processor| so that it removes itself from
|
| + // |webrtc_audio_device| and clears its pointer to it.
|
| + audio_processor->Stop();
|
| +}
|
| +
|
| +// Same test as above, but when AEC is disabled in the constrants. The expected
|
| +// outcome is that AEC3 should be disabled in all cases.
|
| +TEST_F(MediaStreamAudioProcessorTest, TestAec3Switch_AecOff) {
|
| + MockConstraintFactory constraint_factory;
|
| + // Disable the AEC.
|
| + constraint_factory.DisableAecAudioConstraints();
|
| + scoped_refptr<WebRtcAudioDeviceImpl> webrtc_audio_device(
|
| + new WebRtcAudioDeviceImpl());
|
| + scoped_refptr<MediaStreamAudioProcessor> audio_processor(
|
| + new rtc::RefCountedObject<MediaStreamAudioProcessor>(
|
| + constraint_factory.CreateWebMediaConstraints(), input_device_params_,
|
| + webrtc_audio_device.get()));
|
| +
|
| + EXPECT_FALSE(GetAec3ConfigState(audio_processor.get()));
|
| +
|
| + audio_processor->OnAec3Enable(true);
|
| + EXPECT_FALSE(GetAec3ConfigState(audio_processor.get()));
|
| +
|
| + audio_processor->OnAec3Enable(false);
|
| + EXPECT_FALSE(GetAec3ConfigState(audio_processor.get()));
|
| +
|
| + // Stop |audio_processor| so that it removes itself from
|
| + // |webrtc_audio_device| and clears its pointer to it.
|
| + audio_processor->Stop();
|
| +}
|
| +
|
| } // namespace content
|
|
|