From c07b47584330ba388b2e26db2ff14d5c9aeca422 Mon Sep 17 00:00:00 2001 From: Hugh Chen Date: Fri, 25 Sep 2020 15:15:01 +0800 Subject: [PATCH] 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 --- src/com/android/settings/Utils.java | 33 ------------------- .../media/MediaDeviceUpdateWorker.java | 4 +++ .../settings/media/RemoteMediaSlice.java | 2 +- .../RemoteVolumeGroupController.java | 4 +-- .../src/com/android/settings/UtilsTest.java | 31 ----------------- 5 files changed, 7 insertions(+), 67 deletions(-) diff --git a/src/com/android/settings/Utils.java b/src/com/android/settings/Utils.java index 71c016f6f47..a7e0eece410 100644 --- a/src/com/android/settings/Utils.java +++ b/src/com/android/settings/Utils.java @@ -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 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; - } } diff --git a/src/com/android/settings/media/MediaDeviceUpdateWorker.java b/src/com/android/settings/media/MediaDeviceUpdateWorker.java index 1288cf51c0b..a5dec14362e 100644 --- a/src/com/android/settings/media/MediaDeviceUpdateWorker.java +++ b/src/com/android/settings/media/MediaDeviceUpdateWorker.java @@ -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) { diff --git a/src/com/android/settings/media/RemoteMediaSlice.java b/src/com/android/settings/media/RemoteMediaSlice.java index 419826966da..9ed6f4ebd0d 100644 --- a/src/com/android/settings/media/RemoteMediaSlice.java +++ b/src/com/android/settings/media/RemoteMediaSlice.java @@ -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( diff --git a/src/com/android/settings/notification/RemoteVolumeGroupController.java b/src/com/android/settings/notification/RemoteVolumeGroupController.java index bb62a567d58..320862c6075 100644 --- a/src/com/android/settings/notification/RemoteVolumeGroupController.java +++ b/src/com/android/settings/notification/RemoteVolumeGroupController.java @@ -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); diff --git a/tests/robotests/src/com/android/settings/UtilsTest.java b/tests/robotests/src/com/android/settings/UtilsTest.java index 303fb1bacce..2aa8418227f 100644 --- a/tests/robotests/src/com/android/settings/UtilsTest.java +++ b/tests/robotests/src/com/android/settings/UtilsTest.java @@ -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 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 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(); - } }