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

Commit 0b0d0adc authored by Iván Budnik's avatar Iván Budnik Committed by Android (Google) Code Review
Browse files

Merge "Fix NPE for system routing on MediaRouter2Manager-based InfoMediaManager" into main

parents 2555784b 6f83d172
Loading
Loading
Loading
Loading
+13 −4
Original line number Diff line number Diff line
@@ -98,15 +98,16 @@ public abstract class InfoMediaManager extends MediaManager {
    private final Map<String, RouteListingPreference.Item> mPreferenceItemMap =
            new ConcurrentHashMap<>();

    public InfoMediaManager(Context context, String packageName, Notification notification,
    public InfoMediaManager(
            Context context,
            @NonNull String packageName,
            Notification notification,
            LocalBluetoothManager localBluetoothManager) {
        super(context, notification);

        mBluetoothManager = localBluetoothManager;
        if (!TextUtils.isEmpty(packageName)) {
        mPackageName = packageName;
    }
    }

    /** Creates an instance of InfoMediaManager. */
    public static InfoMediaManager createInstance(
@@ -114,6 +115,14 @@ public abstract class InfoMediaManager extends MediaManager {
            String packageName,
            Notification notification,
            LocalBluetoothManager localBluetoothManager) {

        // The caller is only interested in system routes (headsets, built-in speakers, etc), and is
        // not interested in a specific app's routing. The media routing APIs still require a
        // package name, so we use the package name of the calling app.
        if (TextUtils.isEmpty(packageName)) {
            packageName = context.getPackageName();
        }

        if (Flags.useMediaRouter2ForInfoMediaManager()) {
            try {
                return new RouterInfoMediaManager(
+0 −5
Original line number Diff line number Diff line
@@ -71,11 +71,6 @@ public final class RouterInfoMediaManager extends InfoMediaManager {
            LocalBluetoothManager localBluetoothManager) throws PackageNotAvailableException {
        super(context, packageName, notification, localBluetoothManager);

        // TODO: b/291277292 - Change optional package name for a mandatory uid.
        if (packageName == null) {
            packageName = context.getPackageName();
        }

        mRouter = MediaRouter2.getInstance(context, packageName);

        if (mRouter == null) {
+9 −11
Original line number Diff line number Diff line
@@ -71,13 +71,13 @@ import com.android.settingslib.bluetooth.CachedBluetoothDeviceManager;
import com.android.settingslib.bluetooth.LocalBluetoothManager;
import com.android.settingslib.media.LocalMediaManager;
import com.android.settingslib.media.MediaDevice;
import com.android.systemui.res.R;
import com.android.systemui.SysuiTestCase;
import com.android.systemui.animation.ActivityLaunchAnimator;
import com.android.systemui.animation.DialogLaunchAnimator;
import com.android.systemui.flags.FeatureFlags;
import com.android.systemui.media.nearby.NearbyMediaDevicesManager;
import com.android.systemui.plugins.ActivityStarter;
import com.android.systemui.res.R;
import com.android.systemui.settings.UserTracker;
import com.android.systemui.statusbar.notification.collection.NotificationEntry;
import com.android.systemui.statusbar.notification.collection.notifcollection.CommonNotifCollection;
@@ -584,7 +584,7 @@ public class MediaOutputControllerTest extends SysuiTestCase {
    }

    @Test
    public void addDeviceToPlayMedia_triggersFromLocalMediaManager() {
    public void addDeviceToPlayMedia_callsLocalMediaManager() {
        MediaOutputController testMediaOutputController = new MediaOutputController(mSpyContext,
                null,
                mMediaSessionManager, mLocalBluetoothManager, mStarter,
@@ -592,16 +592,15 @@ public class MediaOutputControllerTest extends SysuiTestCase {
                mNearbyMediaDevicesManager, mAudioManager, mPowerExemptionManager,
                mKeyguardManager, mFlags, mUserTracker);

        LocalMediaManager testLocalMediaManager = spy(testMediaOutputController.mLocalMediaManager);
        testMediaOutputController.mLocalMediaManager = testLocalMediaManager;
        LocalMediaManager mockLocalMediaManager = mock(LocalMediaManager.class);
        testMediaOutputController.mLocalMediaManager = mockLocalMediaManager;

        testMediaOutputController.addDeviceToPlayMedia(mMediaDevice2);

        verify(testLocalMediaManager).addDeviceToPlayMedia(mMediaDevice2);
        verify(mockLocalMediaManager).addDeviceToPlayMedia(mMediaDevice2);
    }

    @Test
    public void removeDeviceFromPlayMedia_triggersFromLocalMediaManager() {
    public void removeDeviceFromPlayMedia_callsLocalMediaManager() {
        MediaOutputController testMediaOutputController = new MediaOutputController(mSpyContext,
                null,
                mMediaSessionManager, mLocalBluetoothManager, mStarter,
@@ -609,12 +608,11 @@ public class MediaOutputControllerTest extends SysuiTestCase {
                mNearbyMediaDevicesManager, mAudioManager, mPowerExemptionManager,
                mKeyguardManager, mFlags, mUserTracker);

        LocalMediaManager testLocalMediaManager = spy(testMediaOutputController.mLocalMediaManager);
        testMediaOutputController.mLocalMediaManager = testLocalMediaManager;
        LocalMediaManager mockLocalMediaManager = mock(LocalMediaManager.class);
        testMediaOutputController.mLocalMediaManager = mockLocalMediaManager;

        testMediaOutputController.removeDeviceFromPlayMedia(mMediaDevice2);

        verify(testLocalMediaManager).removeDeviceFromPlayMedia(mMediaDevice2);
        verify(mockLocalMediaManager).removeDeviceFromPlayMedia(mMediaDevice2);
    }

    @Test