Index: media/audio/win/core_audio_util_win_unittest.cc |
diff --git a/media/audio/win/core_audio_util_win_unittest.cc b/media/audio/win/core_audio_util_win_unittest.cc |
index f18c6118e17d1d5d87cd21aa93bc4fdf18eb4a08..140e6496a186a00456f8a2715bee0e123484bdf2 100644 |
--- a/media/audio/win/core_audio_util_win_unittest.cc |
+++ b/media/audio/win/core_audio_util_win_unittest.cc |
@@ -3,7 +3,9 @@ |
// found in the LICENSE file. |
#include "base/memory/scoped_ptr.h" |
+#include "base/strings/utf_string_conversions.h" |
#include "base/synchronization/waitable_event.h" |
+#include "base/win/scoped_co_mem.h" |
#include "base/win/scoped_com_initializer.h" |
#include "base/win/scoped_handle.h" |
#include "media/audio/win/core_audio_util_win.h" |
@@ -475,6 +477,38 @@ TEST_F(CoreAudioUtilWinTest, FillRenderEndpointBufferWithSilence) { |
EXPECT_EQ(num_queued_frames, endpoint_buffer_size); |
} |
-// |
+// This test can only succeed on a machine that has audio hardware |
+// that has both input and output devices. Currently this is the case |
+// with our test bots and the CanRunAudioTest() method should make sure |
+// that the test won't run in unsupported environments, but be warned. |
+TEST_F(CoreAudioUtilWinTest, GetMatchingOutputDeviceID) { |
+ if (!CanRunAudioTest()) |
+ return; |
+ |
+ bool found_a_pair = false; |
+ |
+ ScopedComPtr<IMMDeviceEnumerator> enumerator( |
+ CoreAudioUtil::CreateDeviceEnumerator()); |
+ ASSERT_TRUE(enumerator); |
+ |
+ // Enumerate all active input and output devices and fetch the ID of |
+ // the associated device. |
+ ScopedComPtr<IMMDeviceCollection> collection; |
+ ASSERT_TRUE(SUCCEEDED(enumerator->EnumAudioEndpoints(eCapture, |
+ DEVICE_STATE_ACTIVE, collection.Receive()))); |
+ UINT count = 0; |
+ collection->GetCount(&count); |
+ for (UINT i = 0; i < count && !found_a_pair; ++i) { |
+ ScopedComPtr<IMMDevice> device; |
+ collection->Item(i, device.Receive()); |
+ base::win::ScopedCoMem<WCHAR> wide_id; |
+ device->GetId(&wide_id); |
+ std::string id; |
+ WideToUTF8(wide_id, wcslen(wide_id), &id); |
+ found_a_pair = !CoreAudioUtil::GetMatchingOutputDeviceID(id).empty(); |
+ } |
+ |
+ EXPECT_TRUE(found_a_pair); |
+} |
} // namespace media |