From e554e5b483ed75bb16cfa6b5293d3be08f4015f0 Mon Sep 17 00:00:00 2001 From: hughchen Date: Wed, 6 May 2020 14:11:56 +0800 Subject: [PATCH] Add unique device id for usb-c headset and wired headset - In PhoneMediaDevice is possible have 3 different type, phone, wired headset, usb headset. But it only have one id to represent them. It cause when we compare PhoneMediaDevice will not know they are different because they have same id. This CL add unique id for wired headset and usb headset to compare PhoneMediaDevice. - Add test case Bug: 155148951 Test: make -j42 RunSettingsLibRoboTests Change-Id: Ic2fd1155bff1e87bf0a78d03b35ab074d271e9b0 --- .../settingslib/media/PhoneMediaDevice.java | 25 +++++++++++++++++-- .../media/PhoneMediaDeviceTest.java | 22 ++++++++++++++++ 2 files changed, 45 insertions(+), 2 deletions(-) diff --git a/packages/SettingsLib/src/com/android/settingslib/media/PhoneMediaDevice.java b/packages/SettingsLib/src/com/android/settingslib/media/PhoneMediaDevice.java index 42f2542e5c304..8ea5ff1bf6625 100644 --- a/packages/SettingsLib/src/com/android/settingslib/media/PhoneMediaDevice.java +++ b/packages/SettingsLib/src/com/android/settingslib/media/PhoneMediaDevice.java @@ -41,7 +41,10 @@ public class PhoneMediaDevice extends MediaDevice { private static final String TAG = "PhoneMediaDevice"; - public static final String ID = "phone_media_device_id_1"; + public static final String PHONE_ID = "phone_media_device_id"; + // For 3.5 mm wired headset + public static final String WIRED_HEADSET_ID = "wired_headset_media_device_id"; + public static final String USB_HEADSET_ID = "usb_headset_media_device_id"; private String mSummary = ""; @@ -109,7 +112,25 @@ public class PhoneMediaDevice extends MediaDevice { @Override public String getId() { - return ID; + String id; + switch (mRouteInfo.getType()) { + case TYPE_WIRED_HEADSET: + case TYPE_WIRED_HEADPHONES: + id = WIRED_HEADSET_ID; + break; + case TYPE_USB_DEVICE: + case TYPE_USB_HEADSET: + case TYPE_USB_ACCESSORY: + case TYPE_DOCK: + case TYPE_HDMI: + id = USB_HEADSET_ID; + break; + case TYPE_BUILTIN_SPEAKER: + default: + id = PHONE_ID; + break; + } + return id; } @Override diff --git a/packages/SettingsLib/tests/robotests/src/com/android/settingslib/media/PhoneMediaDeviceTest.java b/packages/SettingsLib/tests/robotests/src/com/android/settingslib/media/PhoneMediaDeviceTest.java index 6f265dd603e51..47f6fe3bce026 100644 --- a/packages/SettingsLib/tests/robotests/src/com/android/settingslib/media/PhoneMediaDeviceTest.java +++ b/packages/SettingsLib/tests/robotests/src/com/android/settingslib/media/PhoneMediaDeviceTest.java @@ -21,6 +21,10 @@ import static android.media.MediaRoute2Info.TYPE_USB_DEVICE; import static android.media.MediaRoute2Info.TYPE_WIRED_HEADPHONES; import static android.media.MediaRoute2Info.TYPE_WIRED_HEADSET; +import static com.android.settingslib.media.PhoneMediaDevice.PHONE_ID; +import static com.android.settingslib.media.PhoneMediaDevice.USB_HEADSET_ID; +import static com.android.settingslib.media.PhoneMediaDevice.WIRED_HEADSET_ID; + import static com.google.common.truth.Truth.assertThat; import static org.mockito.Mockito.when; @@ -108,4 +112,22 @@ public class PhoneMediaDeviceTest { assertThat(mPhoneMediaDevice.getName()) .isEqualTo(mContext.getString(R.string.media_transfer_this_device_name)); } + + @Test + public void getId_returnCorrectId() { + when(mInfo.getType()).thenReturn(TYPE_WIRED_HEADPHONES); + + assertThat(mPhoneMediaDevice.getId()) + .isEqualTo(WIRED_HEADSET_ID); + + when(mInfo.getType()).thenReturn(TYPE_USB_DEVICE); + + assertThat(mPhoneMediaDevice.getId()) + .isEqualTo(USB_HEADSET_ID); + + when(mInfo.getType()).thenReturn(TYPE_BUILTIN_SPEAKER); + + assertThat(mPhoneMediaDevice.getId()) + .isEqualTo(PHONE_ID); + } }