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
This commit is contained in:
Hugh Chen
2020-09-25 15:15:01 +08:00
parent f0cdd9cdb4
commit c07b475843
5 changed files with 7 additions and 67 deletions

View File

@@ -18,10 +18,6 @@ package com.android.settings;
import static android.content.Intent.EXTRA_USER; import static android.content.Intent.EXTRA_USER;
import static android.content.Intent.EXTRA_USER_ID; 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_ABBREV_MONTH;
import static android.text.format.DateUtils.FORMAT_SHOW_DATE; 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.graphics.drawable.VectorDrawable;
import android.hardware.face.FaceManager; import android.hardware.face.FaceManager;
import android.hardware.fingerprint.FingerprintManager; import android.hardware.fingerprint.FingerprintManager;
import android.media.MediaRoute2Info;
import android.media.MediaRouter2Manager;
import android.net.ConnectivityManager; import android.net.ConnectivityManager;
import android.net.LinkProperties; import android.net.LinkProperties;
import android.net.Network; import android.net.Network;
@@ -1143,31 +1137,4 @@ public final class Utils extends com.android.settingslib.Utils {
drawable.draw(canvas); drawable.draw(canvas);
return roundedBitmap; 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;
}
} }

View File

@@ -247,6 +247,10 @@ public class MediaDeviceUpdateWorker extends SliceBackgroundWorker
} }
boolean shouldDisableMediaOutput(String packageName) {
return mLocalMediaManager.shouldDisableMediaOutput(packageName);
}
private class DevicesChangedBroadcastReceiver extends BroadcastReceiver { private class DevicesChangedBroadcastReceiver extends BroadcastReceiver {
@Override @Override
public void onReceive(Context context, Intent intent) { public void onReceive(Context context, Intent intent) {

View File

@@ -122,7 +122,7 @@ public class RemoteMediaSlice implements CustomSliceable {
.setValue(info.getVolume())); .setValue(info.getVolume()));
final boolean isMediaOutputDisabled = final boolean isMediaOutputDisabled =
Utils.isMediaOutputDisabled(mRouterManager, info.getClientPackageName()); getWorker().shouldDisableMediaOutput(info.getClientPackageName());
final SpannableString spannableTitle = new SpannableString( final SpannableString spannableTitle = new SpannableString(
TextUtils.isEmpty(appName) ? "" : appName); TextUtils.isEmpty(appName) ? "" : appName);
spannableTitle.setSpan(new ForegroundColorSpan( spannableTitle.setSpan(new ForegroundColorSpan(

View File

@@ -131,8 +131,8 @@ public class RemoteVolumeGroupController extends BasePreferenceController implem
seekBarPreference.setIcon(R.drawable.ic_volume_remote); seekBarPreference.setIcon(R.drawable.ic_volume_remote);
mPreferenceCategory.addPreference(seekBarPreference); mPreferenceCategory.addPreference(seekBarPreference);
// Add output indicator // Add output indicator
final boolean isMediaOutputDisabled = Utils.isMediaOutputDisabled( final boolean isMediaOutputDisabled = mLocalMediaManager.shouldDisableMediaOutput(
mRouterManager, info.getClientPackageName()); info.getClientPackageName());
final Preference preference = new Preference(mContext); final Preference preference = new Preference(mContext);
preference.setKey(SWITCHER_PREFIX + info.getId()); preference.setKey(SWITCHER_PREFIX + info.getId());
preference.setTitle(isMediaOutputDisabled ? appName : outputTitle); preference.setTitle(isMediaOutputDisabled ? appName : outputTitle);

View File

@@ -40,8 +40,6 @@ import android.graphics.Color;
import android.graphics.drawable.BitmapDrawable; import android.graphics.drawable.BitmapDrawable;
import android.graphics.drawable.ColorDrawable; import android.graphics.drawable.ColorDrawable;
import android.graphics.drawable.VectorDrawable; import android.graphics.drawable.VectorDrawable;
import android.media.MediaRoute2Info;
import android.media.MediaRouter2Manager;
import android.net.ConnectivityManager; import android.net.ConnectivityManager;
import android.net.LinkAddress; import android.net.LinkAddress;
import android.net.LinkProperties; import android.net.LinkProperties;
@@ -301,33 +299,4 @@ public class UtilsTest {
assertThat(Utils.isSettingsIntelligence(mContext)).isFalse(); 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();
}
} }