Merge "Inline shouldDisableMediaOutput into Settings app" into main
This commit is contained in:
@@ -23,6 +23,7 @@ import android.content.Context;
|
||||
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 @@ public class MediaDeviceUpdateWorker extends SliceBackgroundWorker
|
||||
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 @@ public class MediaDeviceUpdateWorker extends SliceBackgroundWorker
|
||||
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 @@ public class MediaDeviceUpdateWorker extends SliceBackgroundWorker
|
||||
}
|
||||
|
||||
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) {
|
||||
|
@@ -25,7 +25,6 @@ import android.app.PendingIntent;
|
||||
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.TextUtils;
|
||||
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 @@ public class RemoteMediaSlice implements CustomSliceable {
|
||||
|
||||
private MediaDeviceUpdateWorker mWorker;
|
||||
|
||||
@VisibleForTesting
|
||||
MediaRouter2Manager mRouterManager;
|
||||
|
||||
public RemoteMediaSlice(Context context) {
|
||||
mContext = context;
|
||||
}
|
||||
@@ -105,9 +100,6 @@ public class RemoteMediaSlice implements CustomSliceable {
|
||||
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()) {
|
||||
|
@@ -136,8 +136,11 @@ public class RemoteVolumeGroupController extends BasePreferenceController implem
|
||||
|
||||
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) {
|
||||
|
@@ -31,6 +31,7 @@ import android.content.Context;
|
||||
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 @@ public class MediaDeviceUpdateWorkerTest {
|
||||
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 @@ public class MediaDeviceUpdateWorkerTest {
|
||||
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);
|
||||
|
@@ -89,10 +89,10 @@ public class RemoteMediaSliceTest {
|
||||
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);
|
||||
|
Reference in New Issue
Block a user