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

Commit e0327bce authored by Shaowei Shen's avatar Shaowei Shen Committed by Automerger Merge Worker
Browse files

Merge "[Output Switcher] Not add "Connect a device" option when output is...

Merge "[Output Switcher] Not add "Connect a device" option when output is remote" into udc-dev am: 2a6e68c1

Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/22747944



Change-Id: Id653c5ae1d0032d610ce148aa03d570f461cd634
Signed-off-by: default avatarAutomerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
parents c69ce739 2a6e68c1
Loading
Loading
Loading
Loading
+9 −2
Original line number Diff line number Diff line
@@ -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())) {
+24 −0
Original line number Diff line number Diff line
@@ -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);