Loading packages/SystemUI/src/com/android/systemui/media/dialog/MediaSwitchingController.java +21 −6 Original line number Diff line number Diff line Loading @@ -648,6 +648,10 @@ public class MediaSwitchingController final MediaDevice connectedMediaDevice = needToHandleMutingExpectedDevice ? null : getCurrentConnectedMediaDevice(); Set<String> selectedDevicesIds = getSelectedMediaDevice().stream() .map(MediaDevice::getId) .collect(Collectors.toSet()); if (oldMediaItems.isEmpty()) { if (connectedMediaDevice == null) { if (DEBUG) { Loading @@ -656,12 +660,14 @@ public class MediaSwitchingController return categorizeMediaItemsLocked( /* connectedMediaDevice */ null, devices, selectedDevicesIds, needToHandleMutingExpectedDevice); } else { // selected device exist return categorizeMediaItemsLocked( connectedMediaDevice, devices, selectedDevicesIds, /* needToHandleMutingExpectedDevice */ false); } } Loading Loading @@ -695,9 +701,20 @@ public class MediaSwitchingController devices.removeAll(targetMediaDevices); targetMediaDevices.addAll(devices); } List<MediaItem> finalMediaItems = targetMediaDevices.stream() .map(MediaItem::createDeviceMediaItem) .collect(Collectors.toList()); List<MediaItem> finalMediaItems = new ArrayList<>(); boolean shouldAddFirstSeenSelectedDevice = com.android.media.flags.Flags.enableOutputSwitcherDeviceGrouping(); 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 @@ -724,11 +741,9 @@ public class MediaSwitchingController @GuardedBy("mMediaDevicesLock") private List<MediaItem> categorizeMediaItemsLocked(MediaDevice connectedMediaDevice, List<MediaDevice> devices, Set<String> selectedDevicesIds, boolean needToHandleMutingExpectedDevice) { List<MediaItem> finalMediaItems = new ArrayList<>(); Set<String> selectedDevicesIds = getSelectedMediaDevice().stream() .map(MediaDevice::getId) .collect(Collectors.toSet()); if (connectedMediaDevice != null) { selectedDevicesIds.add(connectedMediaDevice.getId()); } 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 −6 Original line number Diff line number Diff line Loading @@ -648,6 +648,10 @@ public class MediaSwitchingController final MediaDevice connectedMediaDevice = needToHandleMutingExpectedDevice ? null : getCurrentConnectedMediaDevice(); Set<String> selectedDevicesIds = getSelectedMediaDevice().stream() .map(MediaDevice::getId) .collect(Collectors.toSet()); if (oldMediaItems.isEmpty()) { if (connectedMediaDevice == null) { if (DEBUG) { Loading @@ -656,12 +660,14 @@ public class MediaSwitchingController return categorizeMediaItemsLocked( /* connectedMediaDevice */ null, devices, selectedDevicesIds, needToHandleMutingExpectedDevice); } else { // selected device exist return categorizeMediaItemsLocked( connectedMediaDevice, devices, selectedDevicesIds, /* needToHandleMutingExpectedDevice */ false); } } Loading Loading @@ -695,9 +701,20 @@ public class MediaSwitchingController devices.removeAll(targetMediaDevices); targetMediaDevices.addAll(devices); } List<MediaItem> finalMediaItems = targetMediaDevices.stream() .map(MediaItem::createDeviceMediaItem) .collect(Collectors.toList()); List<MediaItem> finalMediaItems = new ArrayList<>(); boolean shouldAddFirstSeenSelectedDevice = com.android.media.flags.Flags.enableOutputSwitcherDeviceGrouping(); 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 @@ -724,11 +741,9 @@ public class MediaSwitchingController @GuardedBy("mMediaDevicesLock") private List<MediaItem> categorizeMediaItemsLocked(MediaDevice connectedMediaDevice, List<MediaDevice> devices, Set<String> selectedDevicesIds, boolean needToHandleMutingExpectedDevice) { List<MediaItem> finalMediaItems = new ArrayList<>(); Set<String> selectedDevicesIds = getSelectedMediaDevice().stream() .map(MediaDevice::getId) .collect(Collectors.toSet()); if (connectedMediaDevice != null) { selectedDevicesIds.add(connectedMediaDevice.getId()); } 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