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

Commit c07b4758 authored by Hugh Chen's avatar Hugh Chen
Browse files

Move isMediaOutputDisabled() from Utils to LocalMediaManager

- Move isMediaOutputDisabled() from Utils to LocalMediaManager.
  The isMediaOutputDisabled() is used to check whether should
  disable the entry point of media output, it's not a general
  method for Settings. To reduce the usage of Utils.java,
  it's better to let LocalMediaManager handle this method.
- Add test cases.

Bug: 169378895
Test: make -j42 RunSettingsRoboTests
Change-Id: I5dbed2ad4de6dca8105414f8b7d7ce7141e258bd
parent f0cdd9cd
Loading
Loading
Loading
Loading
+0 −33
Original line number Diff line number Diff line
@@ -18,10 +18,6 @@ package com.android.settings;

import static android.content.Intent.EXTRA_USER;
import static android.content.Intent.EXTRA_USER_ID;
import static android.media.MediaRoute2Info.TYPE_GROUP;
import static android.media.MediaRoute2Info.TYPE_REMOTE_SPEAKER;
import static android.media.MediaRoute2Info.TYPE_REMOTE_TV;
import static android.media.MediaRoute2Info.TYPE_UNKNOWN;
import static android.text.format.DateUtils.FORMAT_ABBREV_MONTH;
import static android.text.format.DateUtils.FORMAT_SHOW_DATE;

@@ -57,8 +53,6 @@ import android.graphics.drawable.Drawable;
import android.graphics.drawable.VectorDrawable;
import android.hardware.face.FaceManager;
import android.hardware.fingerprint.FingerprintManager;
import android.media.MediaRoute2Info;
import android.media.MediaRouter2Manager;
import android.net.ConnectivityManager;
import android.net.LinkProperties;
import android.net.Network;
@@ -1143,31 +1137,4 @@ public final class Utils extends com.android.settingslib.Utils {
        drawable.draw(canvas);
        return roundedBitmap;
    }

    /**
     * Returns {@code true} if needed to disable media output, otherwise returns {@code false}.
     */
    public static boolean isMediaOutputDisabled(
            MediaRouter2Manager router2Manager, String packageName) {
        boolean isMediaOutputDisabled = false;
        if (!TextUtils.isEmpty(packageName)) {
            final List<MediaRoute2Info> infos = router2Manager.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:
                        isMediaOutputDisabled = true;
                        break;
                    default:
                        isMediaOutputDisabled = false;
                        break;
                }
            }
        }
        return isMediaOutputDisabled;
    }
}
+4 −0
Original line number Diff line number Diff line
@@ -247,6 +247,10 @@ public class MediaDeviceUpdateWorker extends SliceBackgroundWorker

    }

    boolean shouldDisableMediaOutput(String packageName) {
        return mLocalMediaManager.shouldDisableMediaOutput(packageName);
    }

    private class DevicesChangedBroadcastReceiver extends BroadcastReceiver {
        @Override
        public void onReceive(Context context, Intent intent) {
+1 −1
Original line number Diff line number Diff line
@@ -122,7 +122,7 @@ public class RemoteMediaSlice implements CustomSliceable {
                    .setValue(info.getVolume()));

            final boolean isMediaOutputDisabled =
                    Utils.isMediaOutputDisabled(mRouterManager, info.getClientPackageName());
                    getWorker().shouldDisableMediaOutput(info.getClientPackageName());
            final SpannableString spannableTitle = new SpannableString(
                    TextUtils.isEmpty(appName) ? "" : appName);
            spannableTitle.setSpan(new ForegroundColorSpan(
+2 −2
Original line number Diff line number Diff line
@@ -131,8 +131,8 @@ public class RemoteVolumeGroupController extends BasePreferenceController implem
            seekBarPreference.setIcon(R.drawable.ic_volume_remote);
            mPreferenceCategory.addPreference(seekBarPreference);
            // Add output indicator
            final boolean isMediaOutputDisabled = Utils.isMediaOutputDisabled(
                    mRouterManager, info.getClientPackageName());
            final boolean isMediaOutputDisabled = mLocalMediaManager.shouldDisableMediaOutput(
                    info.getClientPackageName());
            final Preference preference = new Preference(mContext);
            preference.setKey(SWITCHER_PREFIX + info.getId());
            preference.setTitle(isMediaOutputDisabled ? appName : outputTitle);
+0 −31
Original line number Diff line number Diff line
@@ -40,8 +40,6 @@ import android.graphics.Color;
import android.graphics.drawable.BitmapDrawable;
import android.graphics.drawable.ColorDrawable;
import android.graphics.drawable.VectorDrawable;
import android.media.MediaRoute2Info;
import android.media.MediaRouter2Manager;
import android.net.ConnectivityManager;
import android.net.LinkAddress;
import android.net.LinkProperties;
@@ -301,33 +299,4 @@ public class UtilsTest {

        assertThat(Utils.isSettingsIntelligence(mContext)).isFalse();
    }

    @Test
    public void isMediaOutputDisabled_infosSizeEqual1_returnsTrue() {
        final MediaRouter2Manager router2Manager = mock(MediaRouter2Manager.class);
        final MediaRoute2Info info = mock(MediaRoute2Info.class);
        final List<MediaRoute2Info> infos = new ArrayList<>();
        infos.add(info);

        when(router2Manager.getAvailableRoutes(anyString())).thenReturn(infos);
        when(info.getType()).thenReturn(0);

        assertThat(Utils.isMediaOutputDisabled(router2Manager, "test")).isTrue();
    }

    @Test
    public void isMediaOutputDisabled_infosSizeOverThan1_returnsFalse() {
        final MediaRouter2Manager router2Manager = mock(MediaRouter2Manager.class);
        final MediaRoute2Info info = mock(MediaRoute2Info.class);
        final MediaRoute2Info info2 = mock(MediaRoute2Info.class);
        final List<MediaRoute2Info> infos = new ArrayList<>();
        infos.add(info);
        infos.add(info2);

        when(router2Manager.getAvailableRoutes(anyString())).thenReturn(infos);
        when(info.getType()).thenReturn(0);
        when(info2.getType()).thenReturn(0);

        assertThat(Utils.isMediaOutputDisabled(router2Manager, "test")).isFalse();
    }
}