[Output Switcher] Not add "Connect a device" option when output is

remote

Bug: 274145212
Test: atest MediaOutputAdapterTest MediaOutputControllerTest MediaOutputBaseDialogTest MediaOutputDialogTest
Change-Id: Ic9128e0f36fe2e3a809f3ea3eb1caa0b713c2520
This commit is contained in:
shaoweishen
2023-04-20 07:50:52 +00:00
committed by Shaowei Shen
parent cf71476fd8
commit edc39d4df6
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);