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

Commit b021f78a authored by Santiago Seifert's avatar Santiago Seifert Committed by Android (Google) Code Review
Browse files

Merge "Propagate UserHandle from SysUI to the MediaRouterService" into main

parents 726607cc c5f09e6e
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -2713,7 +2713,7 @@ public final class MediaRouter2 {

            List<RoutingSessionInfo> sessionInfos = getRoutingSessions();
            RoutingSessionInfo targetSession = sessionInfos.get(sessionInfos.size() - 1);
            transfer(targetSession, route, Process.myUserHandle(), mContext.getPackageName());
            transfer(targetSession, route, mClientUser, mContext.getPackageName());
        }

        @Override
+15 −3
Original line number Diff line number Diff line
@@ -52,6 +52,7 @@ import android.media.MediaRoute2Info;
import android.media.RouteListingPreference;
import android.media.RoutingSessionInfo;
import android.os.Build;
import android.os.UserHandle;
import android.text.TextUtils;
import android.util.Log;

@@ -131,6 +132,7 @@ public abstract class InfoMediaManager {
    protected final List<MediaDevice> mMediaDevices = new CopyOnWriteArrayList<>();
    @NonNull protected final Context mContext;
    @NonNull protected final String mPackageName;
    @NonNull protected final UserHandle mUserHandle;
    private final Collection<MediaDeviceCallback> mCallbacks = new CopyOnWriteArrayList<>();
    private MediaDevice mCurrentConnectedDevice;
    private final LocalBluetoothManager mBluetoothManager;
@@ -140,16 +142,19 @@ public abstract class InfoMediaManager {
    /* package */ InfoMediaManager(
            @NonNull Context context,
            @NonNull String packageName,
            @NonNull UserHandle userHandle,
            @NonNull LocalBluetoothManager localBluetoothManager) {
        mContext = context;
        mBluetoothManager = localBluetoothManager;
        mPackageName = packageName;
        mUserHandle = userHandle;
    }

    /** Creates an instance of InfoMediaManager. */
    public static InfoMediaManager createInstance(
            Context context,
            @Nullable String packageName,
            @Nullable UserHandle userHandle,
            LocalBluetoothManager localBluetoothManager) {

        // The caller is only interested in system routes (headsets, built-in speakers, etc), and is
@@ -159,16 +164,23 @@ public abstract class InfoMediaManager {
            packageName = context.getPackageName();
        }

        if (userHandle == null) {
            userHandle = android.os.Process.myUserHandle();
        }

        if (Flags.useMediaRouter2ForInfoMediaManager()) {
            try {
                return new RouterInfoMediaManager(context, packageName, localBluetoothManager);
                return new RouterInfoMediaManager(
                        context, packageName, userHandle, localBluetoothManager);
            } catch (PackageNotAvailableException ex) {
                // TODO: b/293578081 - Propagate this exception to callers for proper handling.
                Log.w(TAG, "Returning a no-op InfoMediaManager for package " + packageName);
                return new NoOpInfoMediaManager(context, packageName, localBluetoothManager);
                return new NoOpInfoMediaManager(
                        context, packageName, userHandle, localBluetoothManager);
            }
        } else {
            return new ManagerInfoMediaManager(context, packageName, localBluetoothManager);
            return new ManagerInfoMediaManager(
                    context, packageName, userHandle, localBluetoothManager);
        }
    }

+4 −1
Original line number Diff line number Diff line
@@ -138,7 +138,10 @@ public class LocalMediaManager implements BluetoothCallback {
        }

        mInfoMediaManager =
                InfoMediaManager.createInstance(context, packageName, mLocalBluetoothManager);
                // TODO: b/321969740 - Take the userHandle as a parameter and pass it through. The
                // package name is not sufficient to unambiguously identify an app.
                InfoMediaManager.createInstance(
                        context, packageName, /* userHandle */ null, mLocalBluetoothManager);
    }

    /**
+4 −3
Original line number Diff line number Diff line
@@ -21,6 +21,7 @@ import android.media.MediaRoute2Info;
import android.media.MediaRouter2Manager;
import android.media.RouteListingPreference;
import android.media.RoutingSessionInfo;
import android.os.UserHandle;
import android.text.TextUtils;
import android.util.Log;

@@ -53,8 +54,9 @@ public class ManagerInfoMediaManager extends InfoMediaManager {
    /* package */ ManagerInfoMediaManager(
            Context context,
            @NonNull String packageName,
            @NonNull UserHandle userHandle,
            LocalBluetoothManager localBluetoothManager) {
        super(context, packageName, localBluetoothManager);
        super(context, packageName, userHandle, localBluetoothManager);

        mRouterManager = MediaRouter2Manager.getInstance(context);
    }
@@ -87,8 +89,7 @@ public class ManagerInfoMediaManager extends InfoMediaManager {

    @Override
    protected void transferToRoute(@NonNull MediaRoute2Info route) {
        // TODO: b/279555229 - provide real user handle of a caller.
        mRouterManager.transfer(mPackageName, route, android.os.Process.myUserHandle());
        mRouterManager.transfer(mPackageName, route, mUserHandle);
    }

    @Override
+3 −1
Original line number Diff line number Diff line
@@ -20,6 +20,7 @@ import android.content.Context;
import android.media.MediaRoute2Info;
import android.media.RouteListingPreference;
import android.media.RoutingSessionInfo;
import android.os.UserHandle;

import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
@@ -58,8 +59,9 @@ import java.util.List;
    NoOpInfoMediaManager(
            Context context,
            @NonNull String packageName,
            @NonNull UserHandle userHandle,
            LocalBluetoothManager localBluetoothManager) {
        super(context, packageName, localBluetoothManager);
        super(context, packageName, userHandle, localBluetoothManager);
    }

    @Override
Loading