Merge "Inline shouldDisableMediaOutput into Settings app" into main
diff --git a/src/com/android/settings/media/MediaDeviceUpdateWorker.java b/src/com/android/settings/media/MediaDeviceUpdateWorker.java
index f420f53..6fa512e 100644
--- a/src/com/android/settings/media/MediaDeviceUpdateWorker.java
+++ b/src/com/android/settings/media/MediaDeviceUpdateWorker.java
@@ -23,6 +23,7 @@
import android.content.Intent;
import android.content.IntentFilter;
import android.media.AudioManager;
+import android.media.MediaRouter2Manager;
import android.media.RoutingSessionInfo;
import android.net.Uri;
import android.os.UserHandle;
@@ -59,6 +60,8 @@
protected final Collection<MediaDevice> mMediaDevices = new CopyOnWriteArrayList<>();
private final DevicesChangedBroadcastReceiver mReceiver;
private final String mPackageName;
+ @VisibleForTesting
+ MediaRouter2Manager mManager;
private boolean mIsTouched;
private MediaDevice mTopDevice;
@@ -82,6 +85,11 @@
mLocalMediaManager = new LocalMediaManager(mContext, mPackageName, null);
}
+ // Delaying initialization to allow mocking in Roboelectric tests.
+ if (mManager == null) {
+ mManager = MediaRouter2Manager.getInstance(mContext);
+ }
+
mLocalMediaManager.registerCallback(this);
final IntentFilter intentFilter = new IntentFilter(STREAM_DEVICES_CHANGED_ACTION);
mContext.registerReceiver(mReceiver, intentFilter);
@@ -259,7 +267,9 @@
}
boolean shouldDisableMediaOutput(String packageName) {
- return mLocalMediaManager.shouldDisableMediaOutput(packageName);
+ // TODO: b/291277292 - Remove references to MediaRouter2Manager and implement long-term
+ // solution in SettingsLib.
+ return mManager.getTransferableRoutes(packageName).isEmpty();
}
boolean shouldEnableVolumeSeekBar(RoutingSessionInfo sessionInfo) {
diff --git a/src/com/android/settings/media/RemoteMediaSlice.java b/src/com/android/settings/media/RemoteMediaSlice.java
index f856188..193a6c7 100644
--- a/src/com/android/settings/media/RemoteMediaSlice.java
+++ b/src/com/android/settings/media/RemoteMediaSlice.java
@@ -25,7 +25,6 @@
import android.content.Context;
import android.content.Intent;
import android.graphics.Bitmap;
-import android.media.MediaRouter2Manager;
import android.media.RoutingSessionInfo;
import android.net.Uri;
import android.text.SpannableString;
@@ -33,7 +32,6 @@
import android.text.style.ForegroundColorSpan;
import android.util.Log;
-import androidx.annotation.VisibleForTesting;
import androidx.core.graphics.drawable.IconCompat;
import androidx.slice.Slice;
import androidx.slice.builders.ListBuilder;
@@ -67,9 +65,6 @@
private MediaDeviceUpdateWorker mWorker;
- @VisibleForTesting
- MediaRouter2Manager mRouterManager;
-
public RemoteMediaSlice(Context context) {
mContext = context;
}
@@ -105,9 +100,6 @@
Log.e(TAG, "Unable to get the slice worker.");
return listBuilder.build();
}
- if (mRouterManager == null) {
- mRouterManager = MediaRouter2Manager.getInstance(mContext);
- }
// Only displaying remote devices
final List<RoutingSessionInfo> infos = getWorker().getActiveRemoteMediaDevice();
if (infos.isEmpty()) {
diff --git a/src/com/android/settings/notification/RemoteVolumeGroupController.java b/src/com/android/settings/notification/RemoteVolumeGroupController.java
index 47a12d0..a943d5f 100644
--- a/src/com/android/settings/notification/RemoteVolumeGroupController.java
+++ b/src/com/android/settings/notification/RemoteVolumeGroupController.java
@@ -136,8 +136,11 @@
Preference switcherPreference = mPreferenceCategory.findPreference(
SWITCHER_PREFIX + info.getId());
- final boolean isMediaOutputDisabled = mLocalMediaManager.shouldDisableMediaOutput(
- info.getClientPackageName());
+
+ // TODO: b/291277292 - Remove references to MediaRouter2Manager and implement long-term
+ // solution in SettingsLib.
+ final boolean isMediaOutputDisabled =
+ mRouterManager.getTransferableRoutes(info.getClientPackageName()).isEmpty();
final CharSequence outputTitle = mContext.getString(R.string.media_output_label_title,
appName);
if (switcherPreference != null) {
diff --git a/tests/robotests/src/com/android/settings/media/MediaDeviceUpdateWorkerTest.java b/tests/robotests/src/com/android/settings/media/MediaDeviceUpdateWorkerTest.java
index 7a3243b..73b5ab0 100644
--- a/tests/robotests/src/com/android/settings/media/MediaDeviceUpdateWorkerTest.java
+++ b/tests/robotests/src/com/android/settings/media/MediaDeviceUpdateWorkerTest.java
@@ -31,6 +31,7 @@
import android.content.Intent;
import android.media.AudioManager;
import android.media.MediaRoute2ProviderService;
+import android.media.MediaRouter2Manager;
import android.media.RoutingSessionInfo;
import android.net.Uri;
@@ -92,6 +93,7 @@
MockitoAnnotations.initMocks(this);
mContext = spy(RuntimeEnvironment.application);
mMediaDeviceUpdateWorker = new MediaDeviceUpdateWorker(mContext, URI);
+ mMediaDeviceUpdateWorker.mManager = mock(MediaRouter2Manager.class);
mResolver = mock(ContentResolver.class);
mShadowApplication = ShadowApplication.getInstance();
mAudioManager = mContext.getSystemService(AudioManager.class);
@@ -234,6 +236,7 @@
when(mLocalBluetoothManager.getEventManager()).thenReturn(mBluetoothEventManager);
mMediaDeviceUpdateWorker = new MediaDeviceUpdateWorker(mContext, URI1);
+ mMediaDeviceUpdateWorker.mManager = mock(MediaRouter2Manager.class);
mMediaDeviceUpdateWorker.mLocalMediaManager = mock(LocalMediaManager.class);
when(mMediaDeviceUpdateWorker.mLocalMediaManager.getPackageName())
.thenReturn(TEST_DEVICE_PACKAGE_NAME1);
diff --git a/tests/robotests/src/com/android/settings/media/RemoteMediaSliceTest.java b/tests/robotests/src/com/android/settings/media/RemoteMediaSliceTest.java
index 81001d7..d995793 100644
--- a/tests/robotests/src/com/android/settings/media/RemoteMediaSliceTest.java
+++ b/tests/robotests/src/com/android/settings/media/RemoteMediaSliceTest.java
@@ -89,10 +89,10 @@
SliceProvider.setSpecs(SliceLiveData.SUPPORTED_SPECS);
mRemoteMediaSlice = new RemoteMediaSlice(mContext);
- mRemoteMediaSlice.mRouterManager = mock(MediaRouter2Manager.class);
sMediaDeviceUpdateWorker = spy(new MediaDeviceUpdateWorker(mContext,
REMOTE_MEDIA_SLICE_URI));
sMediaDeviceUpdateWorker.mLocalMediaManager = mLocalMediaManager;
+ sMediaDeviceUpdateWorker.mManager = mock(MediaRouter2Manager.class);
final RoutingSessionInfo remoteSessionInfo = mock(RoutingSessionInfo.class);
when(remoteSessionInfo.getId()).thenReturn(TEST_SESSION_1_ID);
when(remoteSessionInfo.getName()).thenReturn(TEST_SESSION_1_NAME);