| Index: webrtc/modules/audio_processing/audio_processing_unittest.cc | 
| diff --git a/webrtc/modules/audio_processing/audio_processing_unittest.cc b/webrtc/modules/audio_processing/audio_processing_unittest.cc | 
| index b52acce230c4d980feb25d8aa89a6f3092b619d1..1d30a834082810c0a976ebe0c47b1dee857b0149 100644 | 
| --- a/webrtc/modules/audio_processing/audio_processing_unittest.cc | 
| +++ b/webrtc/modules/audio_processing/audio_processing_unittest.cc | 
| @@ -20,10 +20,13 @@ | 
| #include "webrtc/base/checks.h" | 
| #include "webrtc/base/gtest_prod_util.h" | 
| #include "webrtc/base/ignore_wundef.h" | 
| +#include "webrtc/base/task_queue.h" | 
| +#include "webrtc/base/thread.h" | 
| #include "webrtc/common_audio/include/audio_util.h" | 
| #include "webrtc/common_audio/resampler/include/push_resampler.h" | 
| #include "webrtc/common_audio/resampler/push_sinc_resampler.h" | 
| #include "webrtc/common_audio/signal_processing/include/signal_processing_library.h" | 
| +#include "webrtc/modules/audio_processing/aec_dump/aec_dump_factory.h" | 
| #include "webrtc/modules/audio_processing/audio_processing_impl.h" | 
| #include "webrtc/modules/audio_processing/beamformer/mock_nonlinear_beamformer.h" | 
| #include "webrtc/modules/audio_processing/common.h" | 
| @@ -410,17 +413,17 @@ class ApmTest : public ::testing::Test { | 
| ApmTest::ApmTest() | 
| : output_path_(test::OutputPath()), | 
| #if defined(WEBRTC_AUDIOPROC_FIXED_PROFILE) | 
| -      ref_filename_(test::ResourcePath("audio_processing/output_data_fixed", | 
| -                                       "pb")), | 
| +      ref_filename_( | 
| +          test::ResourcePath("audio_processing/output_data_fixed", "pb")), | 
| #elif defined(WEBRTC_AUDIOPROC_FLOAT_PROFILE) | 
| #if defined(WEBRTC_MAC) | 
| // A different file for Mac is needed because on this platform the AEC | 
| // constant |kFixedDelayMs| value is 20 and not 50 as it is on the rest. | 
| -      ref_filename_(test::ResourcePath("audio_processing/output_data_mac", | 
| -                                       "pb")), | 
| +      ref_filename_( | 
| +          test::ResourcePath("audio_processing/output_data_mac", "pb")), | 
| #else | 
| -      ref_filename_(test::ResourcePath("audio_processing/output_data_float", | 
| -                                       "pb")), | 
| +      ref_filename_( | 
| +          test::ResourcePath("audio_processing/output_data_float", "pb")), | 
| #endif | 
| #endif | 
| frame_(NULL), | 
| @@ -581,6 +584,7 @@ void ApmTest::ProcessWithDefaultStreamParameters(AudioFrame* frame) { | 
| } | 
|  | 
| int ApmTest::ProcessStreamChooser(Format format) { | 
| +  rtc::Thread::Current()->SleepMs(1); | 
| if (format == kIntFormat) { | 
| return apm_->ProcessStream(frame_); | 
| } | 
| @@ -594,6 +598,7 @@ int ApmTest::ProcessStreamChooser(Format format) { | 
| } | 
|  | 
| int ApmTest::AnalyzeReverseStreamChooser(Format format) { | 
| +  rtc::Thread::Current()->SleepMs(1); | 
| if (format == kIntFormat) { | 
| return apm_->ProcessReverseStream(revframe_); | 
| } | 
| @@ -1706,6 +1711,7 @@ void ApmTest::ProcessDebugDump(const std::string& in_filename, | 
| const std::string& out_filename, | 
| Format format, | 
| int max_size_bytes) { | 
| +  rtc::TaskQueue worker_queue("ApmTest_worker_queue"); | 
| FILE* in_file = fopen(in_filename.c_str(), "rb"); | 
| ASSERT_TRUE(in_file != NULL); | 
| audioproc::Event event_msg; | 
| @@ -1733,8 +1739,8 @@ void ApmTest::ProcessDebugDump(const std::string& in_filename, | 
| if (first_init) { | 
| // StartDebugRecording() writes an additional init message. Don't start | 
| // recording until after the first init to avoid the extra message. | 
| -        EXPECT_NOERR( | 
| -            apm_->StartDebugRecording(out_filename.c_str(), max_size_bytes)); | 
| +        apm_->StartDebugRecording(AecDumpFactory::Create( | 
| +            out_filename, max_size_bytes, &worker_queue)); | 
| first_init = false; | 
| } | 
|  | 
| @@ -1790,7 +1796,7 @@ void ApmTest::ProcessDebugDump(const std::string& in_filename, | 
| ProcessStreamChooser(format); | 
| } | 
| } | 
| -  EXPECT_NOERR(apm_->StopDebugRecording()); | 
| +  apm_->StopDebugRecording(); | 
| fclose(in_file); | 
| } | 
|  | 
| @@ -1870,19 +1876,19 @@ TEST_F(ApmTest, VerifyDebugDumpFloat) { | 
|  | 
| // TODO(andrew): expand test to verify output. | 
| TEST_F(ApmTest, DebugDump) { | 
| +  rtc::TaskQueue worker_queue("ApmTest_worker_queue"); | 
| const std::string filename = | 
| test::TempFilename(test::OutputPath(), "debug_aec"); | 
| -  EXPECT_EQ(apm_->kNullPointerError, | 
| -            apm_->StartDebugRecording(static_cast<const char*>(NULL), -1)); | 
|  | 
| #ifdef WEBRTC_AUDIOPROC_DEBUG_DUMP | 
| // Stopping without having started should be OK. | 
| -  EXPECT_EQ(apm_->kNoError, apm_->StopDebugRecording()); | 
| +  apm_->StopDebugRecording(); | 
|  | 
| -  EXPECT_EQ(apm_->kNoError, apm_->StartDebugRecording(filename.c_str(), -1)); | 
| +  apm_->StartDebugRecording( | 
| +      webrtc::AecDumpFactory::Create(filename, -1, &worker_queue)); | 
| EXPECT_EQ(apm_->kNoError, apm_->ProcessStream(frame_)); | 
| EXPECT_EQ(apm_->kNoError, apm_->ProcessReverseStream(revframe_)); | 
| -  EXPECT_EQ(apm_->kNoError, apm_->StopDebugRecording()); | 
| +  apm_->StopDebugRecording(); | 
|  | 
| // Verify the file has been written. | 
| FILE* fid = fopen(filename.c_str(), "r"); | 
| @@ -1903,21 +1909,21 @@ TEST_F(ApmTest, DebugDump) { | 
|  | 
| // TODO(andrew): expand test to verify output. | 
| TEST_F(ApmTest, DebugDumpFromFileHandle) { | 
| -  FILE* fid = NULL; | 
| -  EXPECT_EQ(apm_->kNullPointerError, apm_->StartDebugRecording(fid, -1)); | 
| +  rtc::TaskQueue worker_queue("ApmTest_worker_queue"); | 
| const std::string filename = | 
| test::TempFilename(test::OutputPath(), "debug_aec"); | 
| -  fid = fopen(filename.c_str(), "w"); | 
| +  FILE* fid = fopen(filename.c_str(), "w"); | 
| ASSERT_TRUE(fid); | 
|  | 
| #ifdef WEBRTC_AUDIOPROC_DEBUG_DUMP | 
| // Stopping without having started should be OK. | 
| -  EXPECT_EQ(apm_->kNoError, apm_->StopDebugRecording()); | 
| +  apm_->StopDebugRecording(); | 
|  | 
| -  EXPECT_EQ(apm_->kNoError, apm_->StartDebugRecording(fid, -1)); | 
| +  apm_->StartDebugRecording( | 
| +      webrtc::AecDumpFactory::Create(fid, -1, &worker_queue)); | 
| EXPECT_EQ(apm_->kNoError, apm_->ProcessReverseStream(revframe_)); | 
| EXPECT_EQ(apm_->kNoError, apm_->ProcessStream(frame_)); | 
| -  EXPECT_EQ(apm_->kNoError, apm_->StopDebugRecording()); | 
| +  apm_->StopDebugRecording(); | 
|  | 
| // Verify the file has been written. | 
| fid = fopen(filename.c_str(), "r"); | 
|  |