Chromium Code Reviews| 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..a997fd039b5393a3845f398440443b240c112617 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,19 @@ 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()); |
|
Guido Urdaneta
2016/12/08 15:53:37
It looks like unique_id got renamed to group_id he
o1ka
2016/12/09 14:56:30
Done.
|
| 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 +395,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 +423,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 +441,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 +465,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,32 +493,32 @@ 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) { |
| + for (AudioDeviceDescriptions::iterator i = xp_device_descriptions.begin(); |
|
Guido Urdaneta
2016/12/08 15:53:37
nit: consider switching to range for.
o1ka
2016/12/09 14:56:30
Done.
|
| + i != xp_device_descriptions.end(); ++i) { |
| EXPECT_EQ(i->unique_id, |
| GetDeviceIdFromPCMWaveInAudioInputStream(i->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,12 +627,11 @@ 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) { |
| + for (AudioDeviceDescriptions::iterator it = device_descriptions.begin(); |
|
Guido Urdaneta
2016/12/08 15:53:37
nit: consider switching to range for
o1ka
2016/12/09 14:56:30
Done.
|
| + it != device_descriptions.end(); ++it) { |
| EXPECT_FALSE(it->unique_id.empty()); |
| EXPECT_FALSE(it->device_name.empty()); |
| std::string output_device_id; |
| @@ -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,38 @@ 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 input_descriptions; |
| + audio_manager_->GetAudioInputDeviceDescriptions(&input_descriptions); |
| + std::vector<AudioDeviceDescription> inputs(input_descriptions.begin(), |
| + input_descriptions.end()); |
| + AudioDeviceDescriptions output_descriptions; |
| + audio_manager_->GetAudioOutputDeviceDescriptions(&output_descriptions); |
| + std::vector<AudioDeviceDescription> outputs(output_descriptions.begin(), |
| + output_descriptions.end()); |
| + |
| + 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 |