Merge "[Output Switcher] Not add "Connect a device" option when output is remote" into udc-dev

This commit is contained in:
Shaowei Shen
2023-04-26 03:24:04 +00:00
committed by Android (Google) Code Review
2 changed files with 33 additions and 2 deletions

View File

@@ -713,7 +713,7 @@ public class MediaOutputController implements LocalMediaManager.DeviceCallback,
dividerItems.forEach((key, item) -> {
finalMediaItems.add(key, item);
});
finalMediaItems.add(new MediaItem());
attachConnectNewDeviceItemIfNeeded(finalMediaItems);
mMediaItemList.clear();
mMediaItemList.addAll(finalMediaItems);
}
@@ -749,7 +749,7 @@ public class MediaOutputController implements LocalMediaManager.DeviceCallback,
finalMediaItems.add(new MediaItem(device));
}
}
finalMediaItems.add(new MediaItem());
attachConnectNewDeviceItemIfNeeded(finalMediaItems);
mMediaItemList.clear();
mMediaItemList.addAll(finalMediaItems);
}
@@ -760,6 +760,13 @@ public class MediaOutputController implements LocalMediaManager.DeviceCallback,
new MediaItem(title, MediaItem.MediaItemType.TYPE_GROUP_DIVIDER));
}
private void attachConnectNewDeviceItemIfNeeded(List<MediaItem> mediaItems) {
// Attach "Connect a device" item only when current output is not remote and not a group
if (!isCurrentConnectedDeviceRemote() && getSelectedMediaDevice().size() == 1) {
mediaItems.add(new MediaItem());
}
}
private void attachRangeInfo(List<MediaDevice> devices) {
for (MediaDevice mediaDevice : devices) {
if (mNearbyDeviceInfoMap.containsKey(mediaDevice.getId())) {

View File

@@ -341,6 +341,30 @@ public class MediaOutputControllerTest extends SysuiTestCase {
verify(mCb).onDeviceListChanged();
}
@Test
public void advanced_onDeviceListUpdateWithConnectedDeviceRemote_verifyItemSize() {
when(mFlags.isEnabled(Flags.OUTPUT_SWITCHER_ADVANCED_LAYOUT)).thenReturn(true);
when(mMediaDevice1.getFeatures()).thenReturn(
ImmutableList.of(MediaRoute2Info.FEATURE_REMOTE_PLAYBACK));
when(mLocalMediaManager.getCurrentConnectedDevice()).thenReturn(mMediaDevice1);
mMediaOutputController.start(mCb);
reset(mCb);
mMediaOutputController.onDeviceListUpdate(mMediaDevices);
final List<MediaDevice> devices = new ArrayList<>();
for (MediaItem item : mMediaOutputController.getMediaItemList()) {
if (item.getMediaDevice().isPresent()) {
devices.add(item.getMediaDevice().get());
}
}
assertThat(devices.containsAll(mMediaDevices)).isTrue();
assertThat(devices.size()).isEqualTo(mMediaDevices.size());
assertThat(mMediaOutputController.getMediaItemList().size()).isEqualTo(
mMediaDevices.size() + 1);
verify(mCb).onDeviceListChanged();
}
@Test
public void advanced_categorizeMediaItems_withSuggestedDevice_verifyDeviceListSize() {
when(mFlags.isEnabled(Flags.OUTPUT_SWITCHER_ADVANCED_LAYOUT)).thenReturn(true);