Merge "Get route info without pacakage name"
This commit is contained in:
committed by
Android (Google) Code Review
commit
40cb0e7706
@@ -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,21 +81,37 @@ public class InfoMediaManager extends MediaManager {
|
||||
return mCurrentConnectedDevice;
|
||||
}
|
||||
|
||||
class RouterManagerCallback extends MediaRouter2Manager.Callback {
|
||||
|
||||
private void refreshDevices() {
|
||||
mMediaDevices.clear();
|
||||
mCurrentConnectedDevice = null;
|
||||
for (MediaRoute2Info route : mRouterManager.getAvailableRoutes(mPackageName)) {
|
||||
final MediaDevice device = new InfoMediaDevice(mContext, mRouterManager, route,
|
||||
mPackageName);
|
||||
if (TextUtils.equals(route.getClientPackageName(), mPackageName)) {
|
||||
mCurrentConnectedDevice = device;
|
||||
}
|
||||
mMediaDevices.add(device);
|
||||
}
|
||||
dispatchDeviceListAdded();
|
||||
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);
|
||||
if (TextUtils.equals(route.getClientPackageName(), mPackageName)) {
|
||||
mCurrentConnectedDevice = device;
|
||||
}
|
||||
mMediaDevices.add(device);
|
||||
}
|
||||
}
|
||||
|
||||
class RouterManagerCallback extends MediaRouter2Manager.Callback {
|
||||
|
||||
@Override
|
||||
public void onRoutesAdded(List<MediaRoute2Info> routes) {
|
||||
|
||||
@@ -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,10 +161,8 @@ public class LocalMediaManager implements BluetoothCallback {
|
||||
mMediaDevices.clear();
|
||||
mBluetoothMediaManager.registerCallback(mMediaDeviceCallback);
|
||||
mBluetoothMediaManager.startScan();
|
||||
if (!TextUtils.isEmpty(mPackageName)) {
|
||||
mInfoMediaManager.registerCallback(mMediaDeviceCallback);
|
||||
mInfoMediaManager.startScan();
|
||||
}
|
||||
mInfoMediaManager.registerCallback(mMediaDeviceCallback);
|
||||
mInfoMediaManager.startScan();
|
||||
}
|
||||
|
||||
private void addPhoneDeviceIfNecessary() {
|
||||
@@ -208,10 +205,8 @@ public class LocalMediaManager implements BluetoothCallback {
|
||||
public void stopScan() {
|
||||
mBluetoothMediaManager.unregisterCallback(mMediaDeviceCallback);
|
||||
mBluetoothMediaManager.stopScan();
|
||||
if (!TextUtils.isEmpty(mPackageName)) {
|
||||
mInfoMediaManager.unregisterCallback(mMediaDeviceCallback);
|
||||
mInfoMediaManager.stopScan();
|
||||
}
|
||||
mInfoMediaManager.unregisterCallback(mMediaDeviceCallback);
|
||||
mInfoMediaManager.stopScan();
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -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);
|
||||
|
||||
Reference in New Issue
Block a user