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

Commit 70228dd5 authored by Iván Budnik's avatar Iván Budnik
Browse files

Use new public API for getting proxy MediaRouter2 instance

The change is also pre-work for plumbing the UserHandle from the caller
and allowing cross-user Output Switcher.

Bug: 321969740
Test: adb shell device_config put media_solutions
com.android.settingslib.media.flags.enable_cross_user_routing_in_media_router2
and test manually.

Change-Id: I985e97c9e53e6977dfa103aefa1f61b55b9d7459
parent bf7e3de0
Loading
Loading
Loading
Loading
+19 −5
Original line number Diff line number Diff line
@@ -26,11 +26,13 @@ import android.media.MediaRouter2Manager;
import android.media.RouteDiscoveryPreference;
import android.media.RouteListingPreference;
import android.media.RoutingSessionInfo;
import android.os.Process;
import android.text.TextUtils;

import androidx.annotation.NonNull;
import androidx.annotation.Nullable;

import com.android.media.flags.Flags;
import com.android.settingslib.bluetooth.LocalBluetoothManager;

import java.util.ArrayList;
@@ -62,21 +64,33 @@ public final class RouterInfoMediaManager extends InfoMediaManager {
                refreshDevices();
            };

    // TODO: b/192657812 - Create factory method in InfoMediaManager to return
    //      RouterInfoMediaManager or ManagerInfoMediaManager based on flag.
    // TODO (b/321969740): Plumb target UserHandle between UMO and RouterInfoMediaManager.
    public RouterInfoMediaManager(
            Context context,
            String packageName,
            Notification notification,
            LocalBluetoothManager localBluetoothManager) throws PackageNotAvailableException {
            LocalBluetoothManager localBluetoothManager)
            throws PackageNotAvailableException {
        super(context, packageName, notification, localBluetoothManager);

        mRouter = MediaRouter2.getInstance(context, packageName);
        MediaRouter2 router = null;

        if (mRouter == null) {
        if (Flags.enableCrossUserRoutingInMediaRouter2()) {
            try {
                router = MediaRouter2.getInstance(context, packageName, Process.myUserHandle());
            } catch (IllegalArgumentException ex) {
                // Do nothing
            }
        } else {
            router = MediaRouter2.getInstance(context, packageName);
        }
        if (router == null) {
            throw new PackageNotAvailableException(
                    "Package name " + packageName + " does not exist.");
        }
        // We have to defer initialization because mRouter is final.
        mRouter = router;

        mRouterManager = MediaRouter2Manager.getInstance(context);
    }