Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 1ddbe049 authored by Derek Jedral's avatar Derek Jedral Committed by Android (Google) Code Review
Browse files

Merge "Isolate changes for output switcher grouping behind flag" into main

parents 350141e1 3dcf4e9a
Loading
Loading
Loading
Loading
+21 −0
Original line number Diff line number Diff line
@@ -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;
+19 −0
Original line number Diff line number Diff line
@@ -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()) {