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

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

Merge "[Output Switcher] Add preference route listing check" into tm-qpr-dev am: dc590194

parents 5068cb17 dc590194
Loading
Loading
Loading
Loading
+4 −0
Original line number Original line Diff line number Diff line
@@ -190,6 +190,10 @@ public class InfoMediaManager extends MediaManager {
        return !isGroup;
        return !isGroup;
    }
    }


    boolean preferRouteListingOrdering() {
        return false;
    }

    /**
    /**
     * Remove a {@code device} from current media.
     * Remove a {@code device} from current media.
     *
     *
+9 −0
Original line number Original line Diff line number Diff line
@@ -212,6 +212,15 @@ public class LocalMediaManager implements BluetoothCallback {
        return mInfoMediaManager.isRoutingSessionAvailableForVolumeControl();
        return mInfoMediaManager.isRoutingSessionAvailableForVolumeControl();
    }
    }


    /**
     * Returns if media app establishes a preferred route listing order.
     *
     * @return True if route list ordering exist and not using system ordering, false otherwise.
     */
    public boolean isPreferenceRouteListingExist() {
        return mInfoMediaManager.preferRouteListingOrdering();
    }

    /**
    /**
     * Start scan connected MediaDevice
     * Start scan connected MediaDevice
     */
     */
+9 −4
Original line number Original line Diff line number Diff line
@@ -630,10 +630,11 @@ public class MediaOutputController implements LocalMediaManager.DeviceCallback,


    private void buildMediaItems(List<MediaDevice> devices) {
    private void buildMediaItems(List<MediaDevice> devices) {
        synchronized (mMediaDevicesLock) {
        synchronized (mMediaDevicesLock) {
            //TODO(b/257851968): do the organization only when there's no suggested sorted order
            if (!isRouteProcessSupported() || (isRouteProcessSupported()
            // we get from application
                    && !mLocalMediaManager.isPreferenceRouteListingExist())) {
                attachRangeInfo(devices);
                attachRangeInfo(devices);
                Collections.sort(devices, Comparator.naturalOrder());
                Collections.sort(devices, Comparator.naturalOrder());
            }
            // For the first time building list, to make sure the top device is the connected
            // For the first time building list, to make sure the top device is the connected
            // device.
            // device.
            if (mMediaItemList.isEmpty()) {
            if (mMediaItemList.isEmpty()) {
@@ -751,6 +752,10 @@ public class MediaOutputController implements LocalMediaManager.DeviceCallback,
        return mFeatureFlags.isEnabled(Flags.OUTPUT_SWITCHER_ADVANCED_LAYOUT);
        return mFeatureFlags.isEnabled(Flags.OUTPUT_SWITCHER_ADVANCED_LAYOUT);
    }
    }


    public boolean isRouteProcessSupported() {
        return mFeatureFlags.isEnabled(Flags.OUTPUT_SWITCHER_ROUTES_PROCESSING);
    }

    List<MediaDevice> getGroupMediaDevices() {
    List<MediaDevice> getGroupMediaDevices() {
        final List<MediaDevice> selectedDevices = getSelectedMediaDevice();
        final List<MediaDevice> selectedDevices = getSelectedMediaDevice();
        final List<MediaDevice> selectableDevices = getSelectableMediaDevice();
        final List<MediaDevice> selectableDevices = getSelectableMediaDevice();
+34 −4
Original line number Original line Diff line number Diff line
@@ -149,7 +149,9 @@ public class MediaOutputControllerTest extends SysuiTestCase {
                Optional.of(mNearbyMediaDevicesManager), mAudioManager, mPowerExemptionManager,
                Optional.of(mNearbyMediaDevicesManager), mAudioManager, mPowerExemptionManager,
                mKeyguardManager, mFlags);
                mKeyguardManager, mFlags);
        when(mFlags.isEnabled(Flags.OUTPUT_SWITCHER_ADVANCED_LAYOUT)).thenReturn(false);
        when(mFlags.isEnabled(Flags.OUTPUT_SWITCHER_ADVANCED_LAYOUT)).thenReturn(false);
        when(mFlags.isEnabled(Flags.OUTPUT_SWITCHER_ROUTES_PROCESSING)).thenReturn(false);
        mLocalMediaManager = spy(mMediaOutputController.mLocalMediaManager);
        mLocalMediaManager = spy(mMediaOutputController.mLocalMediaManager);
        when(mLocalMediaManager.isPreferenceRouteListingExist()).thenReturn(false);
        mMediaOutputController.mLocalMediaManager = mLocalMediaManager;
        mMediaOutputController.mLocalMediaManager = mLocalMediaManager;
        MediaDescription.Builder builder = new MediaDescription.Builder();
        MediaDescription.Builder builder = new MediaDescription.Builder();
        builder.setTitle(TEST_SONG);
        builder.setTitle(TEST_SONG);
@@ -167,9 +169,9 @@ public class MediaOutputControllerTest extends SysuiTestCase {




        when(mNearbyDevice1.getMediaRoute2Id()).thenReturn(TEST_DEVICE_1_ID);
        when(mNearbyDevice1.getMediaRoute2Id()).thenReturn(TEST_DEVICE_1_ID);
        when(mNearbyDevice1.getRangeZone()).thenReturn(NearbyDevice.RANGE_CLOSE);
        when(mNearbyDevice1.getRangeZone()).thenReturn(NearbyDevice.RANGE_FAR);
        when(mNearbyDevice2.getMediaRoute2Id()).thenReturn(TEST_DEVICE_2_ID);
        when(mNearbyDevice2.getMediaRoute2Id()).thenReturn(TEST_DEVICE_2_ID);
        when(mNearbyDevice2.getRangeZone()).thenReturn(NearbyDevice.RANGE_FAR);
        when(mNearbyDevice2.getRangeZone()).thenReturn(NearbyDevice.RANGE_CLOSE);
        mNearbyDevices.add(mNearbyDevice1);
        mNearbyDevices.add(mNearbyDevice1);
        mNearbyDevices.add(mNearbyDevice2);
        mNearbyDevices.add(mNearbyDevice2);
    }
    }
@@ -274,8 +276,20 @@ public class MediaOutputControllerTest extends SysuiTestCase {
        mMediaOutputController.onDevicesUpdated(mNearbyDevices);
        mMediaOutputController.onDevicesUpdated(mNearbyDevices);
        mMediaOutputController.onDeviceListUpdate(mMediaDevices);
        mMediaOutputController.onDeviceListUpdate(mMediaDevices);


        verify(mMediaDevice1).setRangeZone(NearbyDevice.RANGE_CLOSE);
        verify(mMediaDevice1).setRangeZone(NearbyDevice.RANGE_FAR);
        verify(mMediaDevice2).setRangeZone(NearbyDevice.RANGE_FAR);
        verify(mMediaDevice2).setRangeZone(NearbyDevice.RANGE_CLOSE);
    }

    @Test
    public void onDeviceListUpdate_withNearbyDevices_rankByRangeInformation()
            throws RemoteException {
        mMediaOutputController.start(mCb);
        reset(mCb);

        mMediaOutputController.onDevicesUpdated(mNearbyDevices);
        mMediaOutputController.onDeviceListUpdate(mMediaDevices);

        assertThat(mMediaDevices.get(0).getId()).isEqualTo(TEST_DEVICE_1_ID);
    }
    }


    @Test
    @Test
@@ -291,6 +305,22 @@ public class MediaOutputControllerTest extends SysuiTestCase {
        verify(mCb).onDeviceListChanged();
        verify(mCb).onDeviceListChanged();
    }
    }


    @Test
    public void routeProcessSupport_onDeviceListUpdate_preferenceExist_NotUpdatesRangeInformation()
            throws RemoteException {
        when(mLocalMediaManager.isPreferenceRouteListingExist()).thenReturn(true);
        when(mFlags.isEnabled(Flags.OUTPUT_SWITCHER_ROUTES_PROCESSING)).thenReturn(true);
        when(mFlags.isEnabled(Flags.OUTPUT_SWITCHER_ADVANCED_LAYOUT)).thenReturn(true);
        mMediaOutputController.start(mCb);
        reset(mCb);

        mMediaOutputController.onDevicesUpdated(mNearbyDevices);
        mMediaOutputController.onDeviceListUpdate(mMediaDevices);

        verify(mMediaDevice1, never()).setRangeZone(anyInt());
        verify(mMediaDevice2, never()).setRangeZone(anyInt());
    }

    @Test
    @Test
    public void advanced_onDeviceListUpdate_verifyDeviceListCallback() {
    public void advanced_onDeviceListUpdate_verifyDeviceListCallback() {
        when(mFlags.isEnabled(Flags.OUTPUT_SWITCHER_ADVANCED_LAYOUT)).thenReturn(true);
        when(mFlags.isEnabled(Flags.OUTPUT_SWITCHER_ADVANCED_LAYOUT)).thenReturn(true);