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

Commit 470b661c authored by Iván Budnik's avatar Iván Budnik
Browse files

Inline shouldDisableMediaOutput into Settings app

This allows the removal of a MediaRouter2Manager reference in
SettingsLib. Eventually, the inlined methods should be replaced with an
appropriate long-term alternative through SettingsLib.

This is a non-functional change.

Bug: 192657812
Test: Presubmit
Change-Id: I9f5dd6720fd95389335fec9e0689a40d88d30d46
parent de9926a7
Loading
Loading
Loading
Loading
+11 −1
Original line number Diff line number Diff line
@@ -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) {
+0 −8
Original line number Diff line number Diff line
@@ -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()) {
+5 −2
Original line number Diff line number Diff line
@@ -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) {
+3 −0
Original line number Diff line number Diff line
@@ -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);
+1 −1
Original line number Diff line number Diff line
@@ -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);