Merge "[Output Switcher] Not add "Connect a device" option when output is remote" into udc-dev
This commit is contained in:
@@ -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())) {
|
||||
|
||||
@@ -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);
|
||||
|
||||
Reference in New Issue
Block a user