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

Commit 6be96e07 authored by TreeHugger Robot's avatar TreeHugger Robot Committed by Android (Google) Code Review
Browse files

Merge "Add shouldDisableMediaOutput() on LocalMediaManager"

parents 2113fd06 a7829a3f
Loading
Loading
Loading
Loading
+30 −0
Original line number Diff line number Diff line
@@ -361,6 +361,36 @@ public class InfoMediaManager extends MediaManager {
        return null;
    }

    boolean shouldDisableMediaOutput(String packageName) {
        boolean shouldDisableMediaOutput = false;
        if (TextUtils.isEmpty(packageName)) {
            Log.w(TAG, "shouldDisableMediaOutput() package name is null or empty!");
            return false;
        }
        final List<MediaRoute2Info> infos = mRouterManager.getAvailableRoutes(packageName);
        if (infos.size() == 1) {
            final MediaRoute2Info info = infos.get(0);
            final int deviceType = info.getType();
            switch (deviceType) {
                case TYPE_UNKNOWN:
                case TYPE_REMOTE_TV:
                case TYPE_REMOTE_SPEAKER:
                case TYPE_GROUP:
                    shouldDisableMediaOutput = true;
                    break;
                default:
                    shouldDisableMediaOutput = false;
                    break;
            }
        }
        if (DEBUG) {
            Log.d(TAG, "shouldDisableMediaOutput() MediaRoute2Info size : " + infos.size()
                    + ", package name : " + packageName + ", shouldDisableMediaOutput : "
                    + shouldDisableMediaOutput);
        }
        return shouldDisableMediaOutput;
    }

    private void refreshDevices() {
        mMediaDevices.clear();
        mCurrentConnectedDevice = null;
+7 −0
Original line number Diff line number Diff line
@@ -402,6 +402,13 @@ public class LocalMediaManager implements BluetoothCallback {
        return mPackageName;
    }

    /**
     * Returns {@code true} if needed to disable media output, otherwise returns {@code false}.
     */
    public boolean shouldDisableMediaOutput(String packageName) {
        return mInfoMediaManager.shouldDisableMediaOutput(packageName);
    }

    @VisibleForTesting
    MediaDevice updateCurrentConnectedDevice() {
        MediaDevice connectedDevice = null;
+44 −0
Original line number Diff line number Diff line
@@ -27,6 +27,7 @@ import static android.media.MediaRoute2ProviderService.REASON_UNKNOWN_ERROR;
import static com.google.common.truth.Truth.assertThat;

import static org.mockito.ArgumentMatchers.any;
import static org.mockito.ArgumentMatchers.anyString;
import static org.mockito.Mockito.doReturn;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.spy;
@@ -721,4 +722,47 @@ public class InfoMediaManagerTest {

        assertThat(mInfoMediaManager.mMediaDevices.size()).isEqualTo(0);
    }

    @Test
    public void shouldDisableMediaOutput_infosSizeEqual1_returnsTrue() {
        final MediaRoute2Info info = mock(MediaRoute2Info.class);
        final List<MediaRoute2Info> infos = new ArrayList<>();
        infos.add(info);
        mShadowRouter2Manager.setAvailableRoutes(infos);

        when(mRouterManager.getAvailableRoutes(anyString())).thenReturn(infos);
        when(info.getType()).thenReturn(TYPE_REMOTE_SPEAKER);

        assertThat(mInfoMediaManager.shouldDisableMediaOutput("test")).isTrue();
    }

    @Test
    public void shouldDisableMediaOutput_infosSizeEqual1AndNotCastDevice_returnsFalse() {
        final MediaRoute2Info info = mock(MediaRoute2Info.class);
        final List<MediaRoute2Info> infos = new ArrayList<>();
        infos.add(info);
        mShadowRouter2Manager.setAvailableRoutes(infos);

        when(mRouterManager.getAvailableRoutes(anyString())).thenReturn(infos);
        when(info.getType()).thenReturn(TYPE_BUILTIN_SPEAKER);

        assertThat(mInfoMediaManager.shouldDisableMediaOutput("test")).isFalse();
    }


    @Test
    public void shouldDisableMediaOutput_infosSizeOverThan1_returnsFalse() {
        final MediaRoute2Info info = mock(MediaRoute2Info.class);
        final MediaRoute2Info info2 = mock(MediaRoute2Info.class);
        final List<MediaRoute2Info> infos = new ArrayList<>();
        infos.add(info);
        infos.add(info2);
        mShadowRouter2Manager.setAvailableRoutes(infos);

        when(mRouterManager.getAvailableRoutes(anyString())).thenReturn(infos);
        when(info.getType()).thenReturn(TYPE_REMOTE_SPEAKER);
        when(info2.getType()).thenReturn(TYPE_REMOTE_SPEAKER);

        assertThat(mInfoMediaManager.shouldDisableMediaOutput("test")).isFalse();
    }
}