| Index: media/audio/audio_manager_unittest.cc
|
| diff --git a/media/audio/audio_manager_unittest.cc b/media/audio/audio_manager_unittest.cc
|
| index 7e5895fade4ffabbd795a39ef5911b8d8229881b..902618ebd9233da945595884465b2e8e7a7dddf6 100644
|
| --- a/media/audio/audio_manager_unittest.cc
|
| +++ b/media/audio/audio_manager_unittest.cc
|
| @@ -29,8 +29,7 @@ namespace media {
|
|
|
| // Test fixture which allows us to override the default enumeration API on
|
| // Windows.
|
| -class AudioManagerTest
|
| - : public ::testing::Test {
|
| +class AudioManagerTest : public ::testing::Test {
|
| protected:
|
| AudioManagerTest()
|
| : audio_manager_(AudioManager::CreateForTesting())
|
| @@ -46,6 +45,8 @@ class AudioManagerTest
|
| event.Wait();
|
| }
|
|
|
| + AudioManager* audio_manager() { return audio_manager_.get(); };
|
| +
|
| #if defined(OS_WIN)
|
| bool SetMMDeviceEnumeration() {
|
| AudioManagerWin* amw = static_cast<AudioManagerWin*>(audio_manager_.get());
|
| @@ -129,6 +130,29 @@ class AudioManagerTest
|
| }
|
| #endif
|
|
|
| + // 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(&AudioManagerTest::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();
|
| + }
|
| +
|
| FakeAudioLogFactory fake_audio_log_factory_;
|
| scoped_ptr<AudioManager> audio_manager_;
|
|
|
| @@ -144,7 +168,10 @@ TEST_F(AudioManagerTest, EnumerateInputDevices) {
|
| return;
|
|
|
| AudioDeviceNames device_names;
|
| - audio_manager_->GetAudioInputDeviceNames(&device_names);
|
| + RunOnAudioThread(
|
| + base::Bind(&AudioManager::GetAudioInputDeviceNames,
|
| + base::Unretained(audio_manager()),
|
| + &device_names));
|
| CheckDeviceNames(device_names);
|
| }
|
|
|
| @@ -154,7 +181,10 @@ TEST_F(AudioManagerTest, EnumerateOutputDevices) {
|
| return;
|
|
|
| AudioDeviceNames device_names;
|
| - audio_manager_->GetAudioOutputDeviceNames(&device_names);
|
| + RunOnAudioThread(
|
| + base::Bind(&AudioManager::GetAudioOutputDeviceNames,
|
| + base::Unretained(audio_manager()),
|
| + &device_names));
|
| CheckDeviceNames(device_names);
|
| }
|
|
|
|
|