| Index: media/audio/audio_input_unittest.cc
 | 
| diff --git a/media/audio/audio_input_unittest.cc b/media/audio/audio_input_unittest.cc
 | 
| index abb47ce955be1299d5fcd201869e11981120bcfa..5d3ce9f4f2896f79ddece1b7cac16d0b448b46f6 100644
 | 
| --- a/media/audio/audio_input_unittest.cc
 | 
| +++ b/media/audio/audio_input_unittest.cc
 | 
| @@ -7,10 +7,9 @@
 | 
|  #include "base/bind.h"
 | 
|  #include "base/environment.h"
 | 
|  #include "base/macros.h"
 | 
| -#include "base/memory/scoped_ptr.h"
 | 
| -#include "base/message_loop/message_loop.h"
 | 
|  #include "base/run_loop.h"
 | 
| -#include "base/synchronization/waitable_event.h"
 | 
| +#include "base/test/test_message_loop.h"
 | 
| +#include "base/thread_task_runner_handle.h"
 | 
|  #include "base/threading/platform_thread.h"
 | 
|  #include "build/build_config.h"
 | 
|  #include "media/audio/audio_io.h"
 | 
| @@ -50,16 +49,16 @@ class TestInputCallback : public AudioInputStream::AudioInputCallback {
 | 
|  };
 | 
|  
 | 
|  class AudioInputTest : public testing::Test {
 | 
| -  public:
 | 
| -   AudioInputTest() :
 | 
| -      message_loop_(base::MessageLoop::TYPE_UI),
 | 
| -      audio_manager_(AudioManager::CreateForTesting()),
 | 
| -      audio_input_stream_(NULL) {
 | 
| -    // Wait for the AudioManager to finish any initialization on the audio loop.
 | 
| + public:
 | 
| +  AudioInputTest()
 | 
| +      : message_loop_(base::MessageLoop::TYPE_UI),
 | 
| +        audio_manager_(AudioManager::CreateForTesting(
 | 
| +            base::ThreadTaskRunnerHandle::Get())),
 | 
| +        audio_input_stream_(NULL) {
 | 
|      base::RunLoop().RunUntilIdle();
 | 
|    }
 | 
|  
 | 
| -  ~AudioInputTest() override { base::RunLoop().RunUntilIdle(); }
 | 
| +  ~AudioInputTest() override {}
 | 
|  
 | 
|   protected:
 | 
|    bool InputDevicesAvailable() {
 | 
| @@ -144,29 +143,12 @@ class AudioInputTest : public testing::Test {
 | 
|  
 | 
|    // Synchronously runs the provided callback/closure on the audio thread.
 | 
|    void RunOnAudioThread(const base::Closure& closure) {
 | 
| -    if (!audio_manager_->GetTaskRunner()->BelongsToCurrentThread()) {
 | 
| -      base::WaitableEvent event(false, false);
 | 
| -      audio_manager_->GetTaskRunner()->PostTask(
 | 
| -          FROM_HERE,
 | 
| -          base::Bind(&AudioInputTest::RunOnAudioThreadImpl,
 | 
| -                     base::Unretained(this),
 | 
| -                     closure,
 | 
| -                     &event));
 | 
| -      event.Wait();
 | 
| -    } else {
 | 
| -      closure.Run();
 | 
| -    }
 | 
| -  }
 | 
| -
 | 
| -  void RunOnAudioThreadImpl(const base::Closure& closure,
 | 
| -                            base::WaitableEvent* event) {
 | 
|      DCHECK(audio_manager_->GetTaskRunner()->BelongsToCurrentThread());
 | 
|      closure.Run();
 | 
| -    event->Signal();
 | 
|    }
 | 
|  
 | 
| -  base::MessageLoop message_loop_;
 | 
| -  scoped_ptr<AudioManager> audio_manager_;
 | 
| +  base::TestMessageLoop message_loop_;
 | 
| +  ScopedAudioManagerPtr audio_manager_;
 | 
|    AudioInputStream* audio_input_stream_;
 | 
|  
 | 
|   private:
 | 
| @@ -222,10 +204,11 @@ TEST_F(AudioInputTest, MAYBE_Record) {
 | 
|    TestInputCallback test_callback;
 | 
|    OpenAndStartAudioInputStreamOnAudioThread(&test_callback);
 | 
|  
 | 
| -  message_loop_.PostDelayedTask(FROM_HERE,
 | 
| -                                base::MessageLoop::QuitWhenIdleClosure(),
 | 
| -                                base::TimeDelta::FromMilliseconds(500));
 | 
| -  message_loop_.Run();
 | 
| +  base::RunLoop run_loop;
 | 
| +  base::ThreadTaskRunnerHandle::Get()->PostDelayedTask(
 | 
| +      FROM_HERE, run_loop.QuitClosure(),
 | 
| +      base::TimeDelta::FromMilliseconds(500));
 | 
| +  run_loop.Run();
 | 
|    EXPECT_GE(test_callback.callback_count(), 2);
 | 
|    EXPECT_FALSE(test_callback.had_error());
 | 
|  
 | 
| 
 |