Loading packages/SystemUI/src/com/android/systemui/media/dialog/MediaSwitchingController.java +21 −0 Original line number Diff line number Diff line Loading @@ -698,6 +698,27 @@ public class MediaSwitchingController List<MediaItem> finalMediaItems = targetMediaDevices.stream() .map(MediaItem::createDeviceMediaItem) .collect(Collectors.toList()); boolean shouldAddFirstSeenSelectedDevice = com.android.media.flags.Flags.enableOutputSwitcherDeviceGrouping(); if (shouldAddFirstSeenSelectedDevice) { finalMediaItems.clear(); Set<String> selectedDevicesIds = getSelectedMediaDevice().stream() .map(MediaDevice::getId) .collect(Collectors.toSet()); for (MediaDevice targetMediaDevice : targetMediaDevices) { if (shouldAddFirstSeenSelectedDevice && selectedDevicesIds.contains(targetMediaDevice.getId())) { finalMediaItems.add(MediaItem.createDeviceMediaItem( targetMediaDevice, /* isFirstDeviceInGroup */ true)); shouldAddFirstSeenSelectedDevice = false; } else { finalMediaItems.add(MediaItem.createDeviceMediaItem( targetMediaDevice, /* isFirstDeviceInGroup */ false)); } } } dividerItems.forEach(finalMediaItems::add); attachConnectNewDeviceItemIfNeeded(finalMediaItems); return finalMediaItems; Loading packages/SystemUI/tests/src/com/android/systemui/media/dialog/MediaSwitchingControllerTest.java +19 −0 Original line number Diff line number Diff line Loading @@ -1573,6 +1573,25 @@ public class MediaSwitchingControllerTest extends SysuiTestCase { assertThat(items.get(1).isFirstDeviceInGroup()).isFalse(); } @EnableFlags(Flags.FLAG_ENABLE_OUTPUT_SWITCHER_DEVICE_GROUPING) @Test public void deviceListUpdateWithDifferentDevices_firstSelectedDeviceIsFirstDeviceInGroup() { when(mLocalMediaManager.isPreferenceRouteListingExist()).thenReturn(true); doReturn(mMediaDevices) .when(mLocalMediaManager) .getSelectedMediaDevice(); mMediaSwitchingController.start(mCb); reset(mCb); mMediaSwitchingController.getMediaItemList().clear(); mMediaSwitchingController.onDeviceListUpdate(mMediaDevices); mMediaDevices.clear(); mMediaDevices.add(mMediaDevice2); mMediaSwitchingController.onDeviceListUpdate(mMediaDevices); List<MediaItem> items = mMediaSwitchingController.getMediaItemList(); assertThat(items.get(0).isFirstDeviceInGroup()).isTrue(); } private int getNumberOfConnectDeviceButtons() { int numberOfConnectDeviceButtons = 0; for (MediaItem item : mMediaSwitchingController.getMediaItemList()) { Loading Loading
packages/SystemUI/src/com/android/systemui/media/dialog/MediaSwitchingController.java +21 −0 Original line number Diff line number Diff line Loading @@ -698,6 +698,27 @@ public class MediaSwitchingController List<MediaItem> finalMediaItems = targetMediaDevices.stream() .map(MediaItem::createDeviceMediaItem) .collect(Collectors.toList()); boolean shouldAddFirstSeenSelectedDevice = com.android.media.flags.Flags.enableOutputSwitcherDeviceGrouping(); if (shouldAddFirstSeenSelectedDevice) { finalMediaItems.clear(); Set<String> selectedDevicesIds = getSelectedMediaDevice().stream() .map(MediaDevice::getId) .collect(Collectors.toSet()); for (MediaDevice targetMediaDevice : targetMediaDevices) { if (shouldAddFirstSeenSelectedDevice && selectedDevicesIds.contains(targetMediaDevice.getId())) { finalMediaItems.add(MediaItem.createDeviceMediaItem( targetMediaDevice, /* isFirstDeviceInGroup */ true)); shouldAddFirstSeenSelectedDevice = false; } else { finalMediaItems.add(MediaItem.createDeviceMediaItem( targetMediaDevice, /* isFirstDeviceInGroup */ false)); } } } dividerItems.forEach(finalMediaItems::add); attachConnectNewDeviceItemIfNeeded(finalMediaItems); return finalMediaItems; Loading
packages/SystemUI/tests/src/com/android/systemui/media/dialog/MediaSwitchingControllerTest.java +19 −0 Original line number Diff line number Diff line Loading @@ -1573,6 +1573,25 @@ public class MediaSwitchingControllerTest extends SysuiTestCase { assertThat(items.get(1).isFirstDeviceInGroup()).isFalse(); } @EnableFlags(Flags.FLAG_ENABLE_OUTPUT_SWITCHER_DEVICE_GROUPING) @Test public void deviceListUpdateWithDifferentDevices_firstSelectedDeviceIsFirstDeviceInGroup() { when(mLocalMediaManager.isPreferenceRouteListingExist()).thenReturn(true); doReturn(mMediaDevices) .when(mLocalMediaManager) .getSelectedMediaDevice(); mMediaSwitchingController.start(mCb); reset(mCb); mMediaSwitchingController.getMediaItemList().clear(); mMediaSwitchingController.onDeviceListUpdate(mMediaDevices); mMediaDevices.clear(); mMediaDevices.add(mMediaDevice2); mMediaSwitchingController.onDeviceListUpdate(mMediaDevices); List<MediaItem> items = mMediaSwitchingController.getMediaItemList(); assertThat(items.get(0).isFirstDeviceInGroup()).isTrue(); } private int getNumberOfConnectDeviceButtons() { int numberOfConnectDeviceButtons = 0; for (MediaItem item : mMediaSwitchingController.getMediaItemList()) { Loading