Index: media/audio/audio_manager_unittest.cc |
diff --git a/media/audio/audio_manager_unittest.cc b/media/audio/audio_manager_unittest.cc |
index d1b8dd60b9c3daa6157a71c36821f33c6873e1a9..97c784e09bc040785022c9a8b4eeae5176551c7c 100644 |
--- a/media/audio/audio_manager_unittest.cc |
+++ b/media/audio/audio_manager_unittest.cc |
@@ -17,6 +17,7 @@ |
#include "base/threading/thread_task_runner_handle.h" |
#include "build/build_config.h" |
#include "media/audio/audio_device_description.h" |
+#include "media/audio/audio_device_name.h" |
#include "media/audio/audio_output_proxy.h" |
#include "media/audio/audio_unittest_util.h" |
#include "media/audio/fake_audio_log_factory.h" |
@@ -253,10 +254,11 @@ class AudioManagerTest : public ::testing::Test { |
// Helper method which verifies that the device list starts with a valid |
// default record followed by non-default device names. |
- static void CheckDeviceNames(const AudioDeviceNames& device_names) { |
- DVLOG(2) << "Got " << device_names.size() << " audio devices."; |
- if (!device_names.empty()) { |
- AudioDeviceNames::const_iterator it = device_names.begin(); |
+ static void CheckDeviceDescriptions( |
+ const AudioDeviceDescriptions& device_descriptions) { |
+ DVLOG(2) << "Got " << device_descriptions.size() << " audio devices."; |
+ if (!device_descriptions.empty()) { |
+ AudioDeviceDescriptions::const_iterator it = device_descriptions.begin(); |
// The first device in the list should always be the default device. |
EXPECT_EQ(AudioDeviceDescription::GetDefaultDeviceName(), |
@@ -267,11 +269,13 @@ class AudioManagerTest : public ::testing::Test { |
// Other devices should have non-empty name and id and should not contain |
// default name or id. |
- while (it != device_names.end()) { |
+ while (it != device_descriptions.end()) { |
EXPECT_FALSE(it->device_name.empty()); |
EXPECT_FALSE(it->unique_id.empty()); |
+ EXPECT_FALSE(it->group_id.empty()); |
DVLOG(2) << "Device ID(" << it->unique_id |
- << "), label: " << it->device_name; |
+ << "), label: " << it->device_name |
+ << "group: " << it->group_id; |
EXPECT_NE(AudioDeviceDescription::GetDefaultDeviceName(), |
it->device_name); |
EXPECT_NE(std::string(AudioDeviceDescription::kDefaultDeviceId), |
@@ -289,12 +293,12 @@ class AudioManagerTest : public ::testing::Test { |
#if defined(USE_CRAS) |
// Helper method for (USE_CRAS) which verifies that the device list starts |
// with a valid default record followed by physical device names. |
- static void CheckDeviceNamesCras( |
- const AudioDeviceNames& device_names, |
+ static void CheckDeviceDescriptionsCras( |
+ const AudioDeviceDescriptions& device_descriptions, |
const std::map<uint64_t, std::string>& expectation) { |
- DVLOG(2) << "Got " << device_names.size() << " audio devices."; |
- if (!device_names.empty()) { |
- AudioDeviceNames::const_iterator it = device_names.begin(); |
+ DVLOG(2) << "Got " << device_descriptions.size() << " audio devices."; |
+ if (!device_descriptions.empty()) { |
+ AudioDeviceDescriptions::const_iterator it = device_descriptions.begin(); |
// The first device in the list should always be the default device. |
EXPECT_EQ(AudioDeviceDescription::GetDefaultDeviceName(), |
@@ -302,17 +306,20 @@ class AudioManagerTest : public ::testing::Test { |
EXPECT_EQ(std::string(AudioDeviceDescription::kDefaultDeviceId), |
it->unique_id); |
- // |device_names|'size should be |expectation|'s size plus one because of |
+ // |device_descriptions|'size should be |expectation|'s size plus one |
+ // because of |
// default device. |
- EXPECT_EQ(device_names.size(), expectation.size() + 1); |
+ EXPECT_EQ(device_descriptions.size(), expectation.size() + 1); |
++it; |
// Check other devices that should have non-empty name and id, and should |
// be contained in expectation. |
- while (it != device_names.end()) { |
+ while (it != device_descriptions.end()) { |
EXPECT_FALSE(it->device_name.empty()); |
EXPECT_FALSE(it->unique_id.empty()); |
+ EXPECT_FALSE(it->group_id.empty()); |
DVLOG(2) << "Device ID(" << it->unique_id |
- << "), label: " << it->device_name; |
+ << "), label: " << it->device_name |
+ << "group: " << it->group_id; |
uint64_t key; |
EXPECT_TRUE(base::StringToUint64(it->unique_id, &key)); |
EXPECT_TRUE(expectation.find(key) != expectation.end()); |
@@ -389,9 +396,9 @@ TEST_F(AudioManagerTest, DISABLED_EnumerateInputDevicesCras) { |
DVLOG(2) << "Testing AudioManagerCras."; |
CreateAudioManagerForTesting<AudioManagerCras>(); |
- AudioDeviceNames device_names; |
- audio_manager_->GetAudioInputDeviceNames(&device_names); |
- CheckDeviceNamesCras(device_names, expectation); |
+ AudioDeviceDescriptions device_descriptions; |
+ audio_manager_->GetAudioInputDeviceDescriptions(&device_descriptions); |
+ CheckDeviceDescriptionsCras(device_descriptions, expectation); |
} |
// TODO(warx): enable the test once crbug.com/554168 is fixed. |
@@ -417,9 +424,9 @@ TEST_F(AudioManagerTest, DISABLED_EnumerateOutputDevicesCras) { |
DVLOG(2) << "Testing AudioManagerCras."; |
CreateAudioManagerForTesting<AudioManagerCras>(); |
- AudioDeviceNames device_names; |
- audio_manager_->GetAudioOutputDeviceNames(&device_names); |
- CheckDeviceNamesCras(device_names, expectation); |
+ AudioDeviceDescriptions device_descriptions; |
+ audio_manager_->GetAudioOutputDeviceDescriptions(&device_descriptions); |
+ CheckDeviceDescriptionsCras(device_descriptions, expectation); |
} |
#else // !defined(USE_CRAS) |
@@ -435,18 +442,18 @@ TEST_F(AudioManagerTest, HandleDefaultDeviceIDs) { |
TEST_F(AudioManagerTest, EnumerateInputDevices) { |
ABORT_AUDIO_TEST_IF_NOT(InputDevicesAvailable()); |
- AudioDeviceNames device_names; |
- audio_manager_->GetAudioInputDeviceNames(&device_names); |
- CheckDeviceNames(device_names); |
+ AudioDeviceDescriptions device_descriptions; |
+ audio_manager_->GetAudioInputDeviceDescriptions(&device_descriptions); |
+ CheckDeviceDescriptions(device_descriptions); |
} |
// Test that devices can be enumerated. |
TEST_F(AudioManagerTest, EnumerateOutputDevices) { |
ABORT_AUDIO_TEST_IF_NOT(OutputDevicesAvailable()); |
- AudioDeviceNames device_names; |
- audio_manager_->GetAudioOutputDeviceNames(&device_names); |
- CheckDeviceNames(device_names); |
+ AudioDeviceDescriptions device_descriptions; |
+ audio_manager_->GetAudioOutputDeviceDescriptions(&device_descriptions); |
+ CheckDeviceDescriptions(device_descriptions); |
} |
// Run additional tests for Windows since enumeration can be done using |
@@ -459,27 +466,27 @@ TEST_F(AudioManagerTest, EnumerateOutputDevices) { |
TEST_F(AudioManagerTest, EnumerateInputDevicesWinMMDevice) { |
ABORT_AUDIO_TEST_IF_NOT(InputDevicesAvailable()); |
- AudioDeviceNames device_names; |
+ AudioDeviceDescriptions device_descriptions; |
if (!SetMMDeviceEnumeration()) { |
// Usage of MMDevice will fail on XP and lower. |
LOG(WARNING) << "MM device enumeration is not supported."; |
return; |
} |
- audio_manager_->GetAudioInputDeviceNames(&device_names); |
- CheckDeviceNames(device_names); |
+ audio_manager_->GetAudioInputDeviceDescriptions(&device_descriptions); |
+ CheckDeviceDescriptions(device_descriptions); |
} |
TEST_F(AudioManagerTest, EnumerateOutputDevicesWinMMDevice) { |
ABORT_AUDIO_TEST_IF_NOT(OutputDevicesAvailable()); |
- AudioDeviceNames device_names; |
+ AudioDeviceDescriptions device_descriptions; |
if (!SetMMDeviceEnumeration()) { |
// Usage of MMDevice will fail on XP and lower. |
LOG(WARNING) << "MM device enumeration is not supported."; |
return; |
} |
- audio_manager_->GetAudioOutputDeviceNames(&device_names); |
- CheckDeviceNames(device_names); |
+ audio_manager_->GetAudioOutputDeviceDescriptions(&device_descriptions); |
+ CheckDeviceDescriptions(device_descriptions); |
} |
// Override default enumeration API and force usage of Windows Wave. |
@@ -487,34 +494,33 @@ TEST_F(AudioManagerTest, EnumerateOutputDevicesWinMMDevice) { |
TEST_F(AudioManagerTest, EnumerateInputDevicesWinWave) { |
ABORT_AUDIO_TEST_IF_NOT(InputDevicesAvailable()); |
- AudioDeviceNames device_names; |
+ AudioDeviceDescriptions device_descriptions; |
SetWaveEnumeration(); |
- audio_manager_->GetAudioInputDeviceNames(&device_names); |
- CheckDeviceNames(device_names); |
+ audio_manager_->GetAudioInputDeviceDescriptions(&device_descriptions); |
+ CheckDeviceDescriptions(device_descriptions); |
} |
TEST_F(AudioManagerTest, EnumerateOutputDevicesWinWave) { |
ABORT_AUDIO_TEST_IF_NOT(OutputDevicesAvailable()); |
- AudioDeviceNames device_names; |
+ AudioDeviceDescriptions device_descriptions; |
SetWaveEnumeration(); |
- audio_manager_->GetAudioOutputDeviceNames(&device_names); |
- CheckDeviceNames(device_names); |
+ audio_manager_->GetAudioOutputDeviceDescriptions(&device_descriptions); |
+ CheckDeviceDescriptions(device_descriptions); |
} |
TEST_F(AudioManagerTest, WinXPDeviceIdUnchanged) { |
ABORT_AUDIO_TEST_IF_NOT(InputDevicesAvailable()); |
- AudioDeviceNames xp_device_names; |
+ AudioDeviceDescriptions xp_device_descriptions; |
SetWaveEnumeration(); |
- audio_manager_->GetAudioInputDeviceNames(&xp_device_names); |
- CheckDeviceNames(xp_device_names); |
+ audio_manager_->GetAudioInputDeviceDescriptions(&xp_device_descriptions); |
+ CheckDeviceDescriptions(xp_device_descriptions); |
// Device ID should remain unchanged, including the default device ID. |
- for (AudioDeviceNames::iterator i = xp_device_names.begin(); |
- i != xp_device_names.end(); ++i) { |
- EXPECT_EQ(i->unique_id, |
- GetDeviceIdFromPCMWaveInAudioInputStream(i->unique_id)); |
+ for (const auto& description : xp_device_descriptions) { |
+ EXPECT_EQ(description.unique_id, |
+ GetDeviceIdFromPCMWaveInAudioInputStream(description.unique_id)); |
} |
} |
@@ -527,15 +533,15 @@ TEST_F(AudioManagerTest, ConvertToWinXPInputDeviceId) { |
return; |
} |
- AudioDeviceNames device_names; |
- audio_manager_->GetAudioInputDeviceNames(&device_names); |
- CheckDeviceNames(device_names); |
+ AudioDeviceDescriptions device_descriptions; |
+ audio_manager_->GetAudioInputDeviceDescriptions(&device_descriptions); |
+ CheckDeviceDescriptions(device_descriptions); |
- for (AudioDeviceNames::iterator i = device_names.begin(); |
- i != device_names.end(); ++i) { |
+ for (AudioDeviceDescriptions::iterator i = device_descriptions.begin(); |
+ i != device_descriptions.end(); ++i) { |
std::string converted_id = |
GetDeviceIdFromPCMWaveInAudioInputStream(i->unique_id); |
- if (i == device_names.begin()) { |
+ if (i == device_descriptions.begin()) { |
// The first in the list is the default device ID, which should not be |
// changed when passed to PCMWaveInAudioInputStream. |
EXPECT_EQ(i->unique_id, converted_id); |
@@ -559,9 +565,9 @@ TEST_F(AudioManagerTest, EnumerateInputDevicesPulseaudio) { |
CreateAudioManagerForTesting<AudioManagerPulse>(); |
if (audio_manager_.get()) { |
- AudioDeviceNames device_names; |
- audio_manager_->GetAudioInputDeviceNames(&device_names); |
- CheckDeviceNames(device_names); |
+ AudioDeviceDescriptions device_descriptions; |
+ audio_manager_->GetAudioInputDeviceDescriptions(&device_descriptions); |
+ CheckDeviceDescriptions(device_descriptions); |
} else { |
LOG(WARNING) << "No pulseaudio on this system."; |
} |
@@ -572,9 +578,9 @@ TEST_F(AudioManagerTest, EnumerateOutputDevicesPulseaudio) { |
CreateAudioManagerForTesting<AudioManagerPulse>(); |
if (audio_manager_.get()) { |
- AudioDeviceNames device_names; |
- audio_manager_->GetAudioOutputDeviceNames(&device_names); |
- CheckDeviceNames(device_names); |
+ AudioDeviceDescriptions device_descriptions; |
+ audio_manager_->GetAudioOutputDeviceDescriptions(&device_descriptions); |
+ CheckDeviceDescriptions(device_descriptions); |
} else { |
LOG(WARNING) << "No pulseaudio on this system."; |
} |
@@ -591,9 +597,9 @@ TEST_F(AudioManagerTest, EnumerateInputDevicesAlsa) { |
DVLOG(2) << "Testing AudioManagerAlsa."; |
CreateAudioManagerForTesting<AudioManagerAlsa>(); |
- AudioDeviceNames device_names; |
- audio_manager_->GetAudioInputDeviceNames(&device_names); |
- CheckDeviceNames(device_names); |
+ AudioDeviceDescriptions device_descriptions; |
+ audio_manager_->GetAudioInputDeviceDescriptions(&device_descriptions); |
+ CheckDeviceDescriptions(device_descriptions); |
} |
TEST_F(AudioManagerTest, EnumerateOutputDevicesAlsa) { |
@@ -601,9 +607,9 @@ TEST_F(AudioManagerTest, EnumerateOutputDevicesAlsa) { |
DVLOG(2) << "Testing AudioManagerAlsa."; |
CreateAudioManagerForTesting<AudioManagerAlsa>(); |
- AudioDeviceNames device_names; |
- audio_manager_->GetAudioOutputDeviceNames(&device_names); |
- CheckDeviceNames(device_names); |
+ AudioDeviceDescriptions device_descriptions; |
+ audio_manager_->GetAudioOutputDeviceDescriptions(&device_descriptions); |
+ CheckDeviceDescriptions(device_descriptions); |
} |
#endif // defined(USE_ALSA) |
@@ -621,18 +627,17 @@ TEST_F(AudioManagerTest, GetAssociatedOutputDeviceID) { |
#if defined(OS_WIN) || defined(OS_MACOSX) |
ABORT_AUDIO_TEST_IF_NOT(InputDevicesAvailable() && OutputDevicesAvailable()); |
- AudioDeviceNames device_names; |
- audio_manager_->GetAudioInputDeviceNames(&device_names); |
+ AudioDeviceDescriptions device_descriptions; |
+ audio_manager_->GetAudioInputDeviceDescriptions(&device_descriptions); |
bool found_an_associated_device = false; |
- for (AudioDeviceNames::iterator it = device_names.begin(); |
- it != device_names.end(); |
- ++it) { |
- EXPECT_FALSE(it->unique_id.empty()); |
- EXPECT_FALSE(it->device_name.empty()); |
+ for (const auto& description : device_descriptions) { |
+ EXPECT_FALSE(description.unique_id.empty()); |
+ EXPECT_FALSE(description.device_name.empty()); |
+ EXPECT_FALSE(description.group_id.empty()); |
std::string output_device_id; |
- GetAssociatedOutputDeviceID(it->unique_id, &output_device_id); |
+ GetAssociatedOutputDeviceID(description.unique_id, &output_device_id); |
if (!output_device_id.empty()) { |
- DVLOG(2) << it->unique_id << " matches with " << output_device_id; |
+ DVLOG(2) << description.unique_id << " matches with " << output_device_id; |
found_an_associated_device = true; |
} |
} |
@@ -654,6 +659,20 @@ class TestAudioManager : public FakeAudioManager { |
AudioLogFactory* audio_log_factory) |
: FakeAudioManager(task_runner, worker_task_runner, audio_log_factory) {} |
+ std::string GetDefaultOutputDeviceID() override { return "output4"; } |
+ |
+ std::string GetAssociatedOutputDeviceID( |
+ const std::string& input_id) override { |
+ if (input_id == "input1") |
+ return "output1"; |
+ if (input_id == "input2") |
+ return "output2"; |
+ if (input_id == "default") |
+ return "output1"; |
+ return ""; |
+ } |
+ |
+ private: |
void GetAudioInputDeviceNames(AudioDeviceNames* device_names) override { |
device_names->emplace_back("Input 1", "input1"); |
device_names->emplace_back("Input 2", "input2"); |
@@ -664,45 +683,33 @@ class TestAudioManager : public FakeAudioManager { |
void GetAudioOutputDeviceNames(AudioDeviceNames* device_names) override { |
device_names->emplace_back("Output 1", "output1"); |
device_names->emplace_back("Output 2", "output2"); |
+ device_names->emplace_back("Output 3", "output3"); |
device_names->emplace_back("Output 4", "output4"); |
device_names->push_front(AudioDeviceName::CreateDefault()); |
} |
- |
- std::string GetDefaultOutputDeviceID() override { return "output4"; } |
- |
- std::string GetAssociatedOutputDeviceID( |
- const std::string& input_id) override { |
- if (input_id == "input1") |
- return "output1"; |
- if (input_id == "input2") |
- return "output2"; |
- if (input_id == "default") |
- return "output1"; |
- return ""; |
- } |
}; |
-TEST_F(AudioManagerTest, GetGroupId) { |
+TEST_F(AudioManagerTest, GroupId) { |
CreateAudioManagerForTesting<TestAudioManager>(); |
// Groups: |
- // 0: input1, output1, default input |
- // 1: input2, output2 |
- // 2: input3, |
- // 3: output4, default output |
- std::vector<std::string> group; |
- group.push_back(audio_manager_->GetGroupIDInput("input1")); |
- group.push_back(audio_manager_->GetGroupIDInput("input2")); |
- group.push_back(audio_manager_->GetGroupIDInput("input3")); |
- group.push_back(audio_manager_->GetGroupIDOutput("output4")); |
- for (size_t i = 0; i < group.size(); ++i) { |
- for (size_t j = i + 1; j < group.size(); ++j) { |
- EXPECT_NE(group[i], group[j]); |
- } |
- } |
- EXPECT_EQ(group[0], audio_manager_->GetGroupIDOutput("output1")); |
- EXPECT_EQ(group[0], audio_manager_->GetGroupIDInput("default")); |
- EXPECT_EQ(group[1], audio_manager_->GetGroupIDOutput("output2")); |
- EXPECT_EQ(group[3], audio_manager_->GetGroupIDOutput("default")); |
+ // input1, output1, default input |
+ // input2, output2 |
+ // input3, |
+ // output3 |
+ // output4, default output |
+ AudioDeviceDescriptions inputs; |
+ audio_manager_->GetAudioInputDeviceDescriptions(&inputs); |
+ AudioDeviceDescriptions outputs; |
+ audio_manager_->GetAudioOutputDeviceDescriptions(&outputs); |
+ EXPECT_EQ(inputs[0].group_id, outputs[1].group_id); |
+ EXPECT_EQ(inputs[1].group_id, outputs[1].group_id); |
+ EXPECT_EQ(inputs[2].group_id, outputs[2].group_id); |
+ EXPECT_NE(inputs[3].group_id, outputs[3].group_id); |
+ EXPECT_EQ(outputs[4].group_id, outputs[0].group_id); |
+ EXPECT_NE(inputs[0].group_id, outputs[0].group_id); |
+ EXPECT_NE(inputs[1].group_id, outputs[2].group_id); |
+ EXPECT_NE(inputs[2].group_id, outputs[3].group_id); |
+ EXPECT_NE(inputs[1].group_id, outputs[3].group_id); |
} |
} // namespace media |