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

Commit 594cdbbf authored by tim peng's avatar tim peng Committed by Automerger Merge Worker
Browse files

Merge "Add getDeselectableMediaDevice()" into rvc-dev am: f28c0b6f

Change-Id: I02c80d9d75aca245dd47c7601a5c7a99ba78b42a
parents 9de671b3 f28c0b6f
Loading
Loading
Loading
Loading
+27 −0
Original line number Diff line number Diff line
@@ -218,6 +218,33 @@ public class InfoMediaManager extends MediaManager {
        return deviceList;
    }

    /**
     * Get the MediaDevice list that can be removed from current media session.
     *
     * @return list of MediaDevice
     */
    List<MediaDevice> getDeselectableMediaDevice() {
        final List<MediaDevice> deviceList = new ArrayList<>();
        if (TextUtils.isEmpty(mPackageName)) {
            Log.d(TAG, "getDeselectableMediaDevice() package name is null or empty!");
            return deviceList;
        }

        final RoutingSessionInfo info = getRoutingSessionInfo();
        if (info != null) {
            for (MediaRoute2Info route : mRouterManager.getDeselectableRoutes(info)) {
                deviceList.add(new InfoMediaDevice(mContext, mRouterManager,
                        route, mPackageName));
                Log.d(TAG, route.getName() + " is deselectable for " + mPackageName);
            }
            return deviceList;
        }
        Log.d(TAG, "getDeselectableMediaDevice() cannot found deselectable MediaDevice from : "
                + mPackageName);

        return deviceList;
    }

    /**
     * Get the MediaDevice list that has been selected to current media.
     *
+9 −0
Original line number Diff line number Diff line
@@ -307,6 +307,15 @@ public class LocalMediaManager implements BluetoothCallback {
        return mInfoMediaManager.getSelectableMediaDevice();
    }

    /**
     * Get the MediaDevice list that can be removed from current media session.
     *
     * @return list of MediaDevice
     */
    public List<MediaDevice> getDeselectableMediaDevice() {
        return mInfoMediaManager.getDeselectableMediaDevice();
    }

    /**
     * Release session to stop playing media on MediaDevice.
     */
+25 −0
Original line number Diff line number Diff line
@@ -415,6 +415,31 @@ public class InfoMediaManagerTest {
        assertThat(mInfoMediaManager.getSelectableMediaDevice()).isEmpty();
    }

    @Test
    public void getDeselectableMediaDevice_packageNameIsNull_returnFalse() {
        mInfoMediaManager.mPackageName = null;

        assertThat(mInfoMediaManager.getDeselectableMediaDevice()).isEmpty();
    }

    @Test
    public void getDeselectableMediaDevice_checkList() {
        final List<RoutingSessionInfo> routingSessionInfos = new ArrayList<>();
        final RoutingSessionInfo info = mock(RoutingSessionInfo.class);
        routingSessionInfos.add(info);
        final List<MediaRoute2Info> mediaRoute2Infos = new ArrayList<>();
        final MediaRoute2Info mediaRoute2Info = mock(MediaRoute2Info.class);
        mediaRoute2Infos.add(mediaRoute2Info);
        mShadowRouter2Manager.setRoutingSessions(routingSessionInfos);
        mShadowRouter2Manager.setDeselectableRoutes(mediaRoute2Infos);
        when(mediaRoute2Info.getName()).thenReturn(TEST_NAME);

        final List<MediaDevice> mediaDevices = mInfoMediaManager.getDeselectableMediaDevice();

        assertThat(mediaDevices.size()).isEqualTo(1);
        assertThat(mediaDevices.get(0).getName()).isEqualTo(TEST_NAME);
    }

    @Test
    public void adjustSessionVolume_routingSessionInfoIsNull_noCrash() {
        mInfoMediaManager.adjustSessionVolume(null, 10);
+11 −0
Original line number Diff line number Diff line
@@ -15,6 +15,7 @@
 */
package com.android.settingslib.testutils.shadow;

import android.annotation.NonNull;
import android.media.MediaRoute2Info;
import android.media.MediaRouter2Manager;
import android.media.RoutingSessionInfo;
@@ -31,6 +32,7 @@ public class ShadowRouter2Manager {

    private List<MediaRoute2Info> mAvailableRoutes;
    private List<MediaRoute2Info> mAllRoutes;
    private List<MediaRoute2Info> mDeselectableRoutes;
    private List<RoutingSessionInfo> mActiveSessions;
    private List<RoutingSessionInfo> mRoutingSessions;

@@ -70,6 +72,15 @@ public class ShadowRouter2Manager {
        mRoutingSessions = infos;
    }

    @Implementation
    public List<MediaRoute2Info> getDeselectableRoutes(@NonNull RoutingSessionInfo sessionInfo) {
        return mDeselectableRoutes;
    }

    public void setDeselectableRoutes(List<MediaRoute2Info> routes) {
        mDeselectableRoutes = routes;
    }

    public static ShadowRouter2Manager getShadow() {
        return (ShadowRouter2Manager) Shadow.extract(
                MediaRouter2Manager.getInstance(RuntimeEnvironment.application));