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

Commit 3dcf4e9a authored by Derek Jedral's avatar Derek Jedral
Browse files

Isolate changes for output switcher grouping behind flag

The changes in b/31912901 seem to be causing crashes. This change looks
like it should've been a no-op for the non-flagged changed, but moved it
behind a flag anyway to isolate the issue.

Fixes: 399104884
Test: local test, atest
Flag: com.android.media.flags.enable_output_switcher_device_grouping
Change-Id: Ibf4fbf9bd696b4aadc7633b2da602e3a544b7ba0
parent 08328b6c
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()) {