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

Commit 933f02b4 authored by Chung Tang's avatar Chung Tang Committed by Android (Google) Code Review
Browse files

Merge "[OutputSwitcher] Fix InfoMediaManager to return correct media devices list" into main

parents 155500eb ae46a5f7
Loading
Loading
Loading
Loading
+42 −18
Original line number Diff line number Diff line
@@ -586,10 +586,14 @@ public abstract class InfoMediaManager {

        final List<MediaDevice> deviceList = new ArrayList<>();
        for (MediaRoute2Info route : getSelectableRoutes(info)) {
            if (com.android.media.flags.Flags.enableOutputSwitcherPersonalAudioSharing()) {
                deviceList.add(createMediaDeviceFromRoute(route));
            } else {
                deviceList.add(
                        new InfoMediaDevice(
                                mContext, route, mPreferenceItemMap.get(route.getId())));
            }
        }
        return deviceList;
    }

@@ -603,8 +607,13 @@ public abstract class InfoMediaManager {

        final List<MediaDevice> deviceList = new ArrayList<>();
        for (MediaRoute2Info route : getTransferableRoutes(info)) {
            if (com.android.media.flags.Flags.enableOutputSwitcherPersonalAudioSharing()) {
                deviceList.add(createMediaDeviceFromRoute(route));
            } else {
                deviceList.add(
                    new InfoMediaDevice(mContext, route, mPreferenceItemMap.get(route.getId())));
                        new InfoMediaDevice(
                                mContext, route, mPreferenceItemMap.get(route.getId())));
            }
        }
        return deviceList;
    }
@@ -619,9 +628,13 @@ public abstract class InfoMediaManager {

        final List<MediaDevice> deviceList = new ArrayList<>();
        for (MediaRoute2Info route : getDeselectableRoutes(info)) {
            if (com.android.media.flags.Flags.enableOutputSwitcherPersonalAudioSharing()) {
                deviceList.add(createMediaDeviceFromRoute(route));
            } else {
                deviceList.add(
                        new InfoMediaDevice(
                                mContext, route, mPreferenceItemMap.get(route.getId())));
            }
            Log.d(TAG, route.getName() + " is deselectable for " + mPackageName);
        }
        return deviceList;
@@ -637,10 +650,14 @@ public abstract class InfoMediaManager {

        final List<MediaDevice> deviceList = new ArrayList<>();
        for (MediaRoute2Info route : getSelectedRoutes(info)) {
            if (com.android.media.flags.Flags.enableOutputSwitcherPersonalAudioSharing()) {
                deviceList.add(createMediaDeviceFromRoute(route));
            } else {
                deviceList.add(
                        new InfoMediaDevice(
                                mContext, route, mPreferenceItemMap.get(route.getId())));
            }
        }
        return deviceList;
    }

@@ -887,6 +904,17 @@ public abstract class InfoMediaManager {
    @SuppressWarnings("NewApi")
    @VisibleForTesting
    void addMediaDevice(@NonNull MediaRoute2Info route, @NonNull RoutingSessionInfo activeSession) {
        MediaDevice mediaDevice = createMediaDeviceFromRoute(route);
        if (mediaDevice != null) {
            if (activeSession.getSelectedRoutes().contains(route.getId())) {
                setDeviceState(mediaDevice, STATE_SELECTED);
            }
            mMediaDevices.add(mediaDevice);
        }
    }

    @Nullable
    private MediaDevice createMediaDeviceFromRoute(@NonNull MediaRoute2Info route) {
        final int deviceType = route.getType();
        MediaDevice mediaDevice = null;
        if (isInfoMediaDevice(deviceType)) {
@@ -920,14 +948,10 @@ public abstract class InfoMediaManager {
                    new ComplexMediaDevice(mContext, route, mPreferenceItemMap.get(route.getId()));

        } else {
            Log.w(TAG, "addMediaDevice() unknown device type : " + deviceType);
        }
        if (mediaDevice != null) {
            if (activeSession.getSelectedRoutes().contains(route.getId())) {
                setDeviceState(mediaDevice, STATE_SELECTED);
            }
            mMediaDevices.add(mediaDevice);
            Log.w(TAG, "createRouteToMediaDevice() unknown device type : " + deviceType);
        }

        return mediaDevice;
    }

    /** Updates the state of the device and updates liteners of the updated device state. */