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

Commit 40cb0e77 authored by TreeHugger Robot's avatar TreeHugger Robot Committed by Android (Google) Code Review
Browse files

Merge "Get route info without pacakage name"

parents 749e585a 0d202040
Loading
Loading
Loading
Loading
+32 −14
Original line number Diff line number Diff line
@@ -40,15 +40,16 @@ public class InfoMediaManager extends MediaManager {
    final Executor mExecutor = Executors.newSingleThreadExecutor();
    @VisibleForTesting
    MediaRouter2Manager mRouterManager;
    @VisibleForTesting
    String mPackageName;

    private String mPackageName;
    private MediaDevice mCurrentConnectedDevice;

    public InfoMediaManager(Context context, String packageName, Notification notification) {
        super(context, notification);

        mRouterManager = MediaRouter2Manager.getInstance(context);
        if (packageName != null) {
        if (!TextUtils.isEmpty(packageName)) {
            mPackageName = packageName;
        }
    }
@@ -57,6 +58,7 @@ public class InfoMediaManager extends MediaManager {
    public void startScan() {
        mMediaDevices.clear();
        mRouterManager.registerCallback(mExecutor, mMediaRouterCallback);
        refreshDevices();
    }

    @VisibleForTesting
@@ -79,11 +81,26 @@ public class InfoMediaManager extends MediaManager {
        return mCurrentConnectedDevice;
    }

    class RouterManagerCallback extends MediaRouter2Manager.Callback {

    private void refreshDevices() {
        mMediaDevices.clear();
        mCurrentConnectedDevice = null;
        if (TextUtils.isEmpty(mPackageName)) {
            buildAllRoutes();
        } else {
            buildAvailableRoutes();
        }
        dispatchDeviceListAdded();
    }

    private void buildAllRoutes() {
        for (MediaRoute2Info route : mRouterManager.getAllRoutes()) {
            final MediaDevice device = new InfoMediaDevice(mContext, mRouterManager, route,
                    mPackageName);
            mMediaDevices.add(device);
        }
    }

    private void buildAvailableRoutes() {
        for (MediaRoute2Info route : mRouterManager.getAvailableRoutes(mPackageName)) {
            final MediaDevice device = new InfoMediaDevice(mContext, mRouterManager, route,
                    mPackageName);
@@ -92,9 +109,10 @@ public class InfoMediaManager extends MediaManager {
            }
            mMediaDevices.add(device);
        }
            dispatchDeviceListAdded();
    }

    class RouterManagerCallback extends MediaRouter2Manager.Callback {

        @Override
        public void onRoutesAdded(List<MediaRoute2Info> routes) {
            refreshDevices();
+4 −9
Original line number Diff line number Diff line
@@ -18,7 +18,6 @@ package com.android.settingslib.media;
import android.app.Notification;
import android.bluetooth.BluetoothProfile;
import android.content.Context;
import android.text.TextUtils;
import android.util.Log;

import androidx.annotation.IntDef;
@@ -162,11 +161,9 @@ public class LocalMediaManager implements BluetoothCallback {
        mMediaDevices.clear();
        mBluetoothMediaManager.registerCallback(mMediaDeviceCallback);
        mBluetoothMediaManager.startScan();
        if (!TextUtils.isEmpty(mPackageName)) {
        mInfoMediaManager.registerCallback(mMediaDeviceCallback);
        mInfoMediaManager.startScan();
    }
    }

    private void addPhoneDeviceIfNecessary() {
        // add phone device to list if there have any Bluetooth device and cast device.
@@ -208,11 +205,9 @@ public class LocalMediaManager implements BluetoothCallback {
    public void stopScan() {
        mBluetoothMediaManager.unregisterCallback(mMediaDeviceCallback);
        mBluetoothMediaManager.stopScan();
        if (!TextUtils.isEmpty(mPackageName)) {
        mInfoMediaManager.unregisterCallback(mMediaDeviceCallback);
        mInfoMediaManager.stopScan();
    }
    }

    /**
     * Find the MediaDevice through id.
+22 −1
Original line number Diff line number Diff line
@@ -74,7 +74,7 @@ public class InfoMediaManagerTest {
    }

    @Test
    public void onRouteAdded_shouldAddMediaDevice() {
    public void onRouteAdded_getAvailableRoutes_shouldAddMediaDevice() {
        final MediaRoute2Info info = mock(MediaRoute2Info.class);
        when(info.getId()).thenReturn(TEST_ID);
        when(info.getClientPackageName()).thenReturn(TEST_PACKAGE_NAME);
@@ -94,6 +94,27 @@ public class InfoMediaManagerTest {
        assertThat(mInfoMediaManager.mMediaDevices).hasSize(routes.size());
    }

    @Test
    public void onRouteAdded_buildAllRoutes_shouldAddMediaDevice() {
        final MediaRoute2Info info = mock(MediaRoute2Info.class);
        when(info.getId()).thenReturn(TEST_ID);
        when(info.getClientPackageName()).thenReturn(TEST_PACKAGE_NAME);

        final List<MediaRoute2Info> routes = new ArrayList<>();
        routes.add(info);
        when(mRouterManager.getAllRoutes()).thenReturn(routes);

        final MediaDevice mediaDevice = mInfoMediaManager.findMediaDevice(TEST_ID);
        assertThat(mediaDevice).isNull();

        mInfoMediaManager.mPackageName = "";
        mInfoMediaManager.mMediaRouterCallback.onRoutesAdded(routes);

        final MediaDevice infoDevice = mInfoMediaManager.mMediaDevices.get(0);
        assertThat(infoDevice.getId()).isEqualTo(TEST_ID);
        assertThat(mInfoMediaManager.mMediaDevices).hasSize(routes.size());
    }

    @Test
    public void onControlCategoriesChanged_samePackageName_shouldAddMediaDevice() {
        final MediaRoute2Info info = mock(MediaRoute2Info.class);