Commit 8be9894a authored by Guido Urdaneta's avatar Guido Urdaneta Committed by Commit Bot

Use group ID of real device for communications device in enumerateDevices()

Bug: 824129
Cq-Include-Trybots: luci.chromium.try:android_optional_gpu_tests_rel;luci.chromium.try:linux_optional_gpu_tests_rel;luci.chromium.try:mac_optional_gpu_tests_rel;master.tryserver.chromium.win:win_optional_gpu_tests_rel
Change-Id: I77fc7a50478cca7f398f8896bfadd19409b12277
Reviewed-on: https://chromium-review.googlesource.com/973377
Commit-Queue: Guido Urdaneta <guidou@chromium.org>
Reviewed-by: default avatarTommi <tommi@chromium.org>
Cr-Commit-Position: refs/heads/master@{#545149}
parent 36c6dcbf
......@@ -515,16 +515,27 @@ std::string AudioManagerBase::GetGroupIDOutput(
const std::string& output_device_id) {
if (output_device_id == AudioDeviceDescription::kDefaultDeviceId) {
std::string real_device_id = GetDefaultOutputDeviceID();
if (!real_device_id.empty()) {
if (!real_device_id.empty())
return real_device_id;
} else if (output_device_id ==
AudioDeviceDescription::kCommunicationsDeviceId) {
std::string real_device_id = GetCommunicationsOutputDeviceID();
if (!real_device_id.empty())
return real_device_id;
}
}
return output_device_id;
}
std::string AudioManagerBase::GetGroupIDInput(
const std::string& input_device_id) {
std::string output_device_id = GetAssociatedOutputDeviceID(input_device_id);
const std::string& real_input_device_id =
input_device_id == AudioDeviceDescription::kDefaultDeviceId
? GetDefaultInputDeviceID()
: input_device_id == AudioDeviceDescription::kCommunicationsDeviceId
? GetCommunicationsInputDeviceID()
: input_device_id;
std::string output_device_id =
GetAssociatedOutputDeviceID(real_input_device_id);
if (output_device_id.empty()) {
// Some characters are added to avoid accidentally
// giving the input the same group id as an output.
......
......@@ -180,10 +180,10 @@ const AudioNode kUSBCameraMic(true,
0);
#endif // defined(USE_CRAS)
const char kRealDefaultInputDeviceID[] = "input3";
const char kRealDefaultOutputDeviceID[] = "output4";
const char kRealCommunicationsInputDeviceID[] = "input2";
const char kRealCommunicationsOutputDeviceID[] = "output2";
const char kRealDefaultInputDeviceID[] = "input2";
const char kRealDefaultOutputDeviceID[] = "output3";
const char kRealCommunicationsInputDeviceID[] = "input1";
const char kRealCommunicationsOutputDeviceID[] = "output1";
void CheckDescriptionLabels(const AudioDeviceDescriptions& descriptions,
const std::string& real_default_id,
......@@ -632,51 +632,64 @@ class TestAudioManager : public FakeAudioManager {
const std::string& input_id) override {
if (input_id == "input1")
return "output1";
if (input_id == "input2")
DCHECK_EQ(std::string(kRealDefaultInputDeviceID), "input2");
if (input_id == AudioDeviceDescription::kDefaultDeviceId ||
input_id == kRealDefaultInputDeviceID)
return "output2";
if (input_id == "default")
return "output1";
return "";
return std::string();
}
private:
void GetAudioInputDeviceNames(AudioDeviceNames* device_names) override {
DCHECK(device_names->empty());
device_names->emplace_back(AudioDeviceName::CreateDefault());
device_names->emplace_back("Input 1", "input1");
device_names->emplace_back("Input 2", "input2");
device_names->emplace_back("Input 3", "input3");
device_names->push_front(AudioDeviceName::CreateDefault());
}
void GetAudioOutputDeviceNames(AudioDeviceNames* device_names) override {
DCHECK(device_names->empty());
device_names->emplace_back(AudioDeviceName::CreateDefault());
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());
}
};
TEST_F(AudioManagerTest, GroupId) {
CreateAudioManagerForTesting<TestAudioManager>();
// Groups:
// input1, output1, default input
// input2, output2
// input3,
// output3
// output4, default output
// input1, output1
// input2, output2, default input
// input3
// output3, default output
AudioDeviceDescriptions inputs;
device_info_accessor_->GetAudioInputDeviceDescriptions(&inputs);
AudioDeviceDescriptions outputs;
device_info_accessor_->GetAudioOutputDeviceDescriptions(&outputs);
EXPECT_EQ(inputs[0].group_id, outputs[1].group_id);
// default input
EXPECT_EQ(inputs[0].group_id, outputs[2].group_id);
// default input and default output are not associated
EXPECT_NE(inputs[0].group_id, outputs[0].group_id);
// default output
EXPECT_EQ(outputs[0].group_id, outputs[3].group_id);
// real inputs and outputs that are associated
EXPECT_EQ(inputs[1].group_id, outputs[1].group_id);
EXPECT_EQ(inputs[2].group_id, outputs[2].group_id);
// real inputs and outputs that are not associated
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);
// group IDs of different devices should differ.
EXPECT_NE(inputs[1].group_id, inputs[2].group_id);
EXPECT_NE(inputs[1].group_id, inputs[3].group_id);
EXPECT_NE(inputs[2].group_id, inputs[3].group_id);
EXPECT_NE(outputs[1].group_id, outputs[2].group_id);
EXPECT_NE(outputs[1].group_id, outputs[3].group_id);
EXPECT_NE(outputs[2].group_id, outputs[3].group_id);
}
TEST_F(AudioManagerTest, DefaultCommunicationsLabelsContainRealLabels) {
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment