[Output Switcher] Fix list order for preference am: 7c9c5f29f7

Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/23710185

Change-Id: I8110a5fc3b486d2dac05aa3d9ef8e71240c72c18
Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
This commit is contained in:
shaoweishen
2023-06-28 07:08:12 +00:00
committed by Automerger Merge Worker
2 changed files with 53 additions and 23 deletions

View File

@@ -91,6 +91,7 @@ public class InfoMediaManager extends MediaManager {
MediaRouter2Manager mRouterManager; MediaRouter2Manager mRouterManager;
@VisibleForTesting @VisibleForTesting
String mPackageName; String mPackageName;
boolean mIsScanning = false;
private MediaDevice mCurrentConnectedDevice; private MediaDevice mCurrentConnectedDevice;
private LocalBluetoothManager mBluetoothManager; private LocalBluetoothManager mBluetoothManager;
@@ -110,22 +111,29 @@ public class InfoMediaManager extends MediaManager {
@Override @Override
public void startScan() { public void startScan() {
mMediaDevices.clear(); if (!mIsScanning) {
mRouterManager.registerCallback(mExecutor, mMediaRouterCallback); mMediaDevices.clear();
mRouterManager.registerScanRequest(); mRouterManager.registerCallback(mExecutor, mMediaRouterCallback);
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.UPSIDE_DOWN_CAKE mRouterManager.registerScanRequest();
&& !TextUtils.isEmpty(mPackageName)) { mIsScanning = true;
RouteListingPreference routeListingPreference = if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.UPSIDE_DOWN_CAKE
mRouterManager.getRouteListingPreference(mPackageName); && !TextUtils.isEmpty(mPackageName)) {
Api34Impl.onRouteListingPreferenceUpdated(routeListingPreference, mPreferenceItemMap); RouteListingPreference routeListingPreference =
mRouterManager.getRouteListingPreference(mPackageName);
Api34Impl.onRouteListingPreferenceUpdated(routeListingPreference,
mPreferenceItemMap);
}
refreshDevices();
} }
refreshDevices();
} }
@Override @Override
public void stopScan() { public void stopScan() {
mRouterManager.unregisterCallback(mMediaRouterCallback); if (mIsScanning) {
mRouterManager.unregisterScanRequest(); mRouterManager.unregisterCallback(mMediaRouterCallback);
mRouterManager.unregisterScanRequest();
mIsScanning = false;
}
} }
/** /**
@@ -701,20 +709,19 @@ public class InfoMediaManager extends MediaManager {
List<MediaRoute2Info> selectedRouteInfos, List<MediaRoute2Info> infolist, List<MediaRoute2Info> selectedRouteInfos, List<MediaRoute2Info> infolist,
List<RouteListingPreference.Item> preferenceRouteListing) { List<RouteListingPreference.Item> preferenceRouteListing) {
final List<MediaRoute2Info> sortedInfoList = new ArrayList<>(selectedRouteInfos); final List<MediaRoute2Info> sortedInfoList = new ArrayList<>(selectedRouteInfos);
infolist.removeAll(selectedRouteInfos);
sortedInfoList.addAll(infolist.stream().filter(
MediaRoute2Info::isSystemRoute).collect(Collectors.toList()));
for (RouteListingPreference.Item item : preferenceRouteListing) { for (RouteListingPreference.Item item : preferenceRouteListing) {
for (MediaRoute2Info info : infolist) { for (MediaRoute2Info info : infolist) {
if (item.getRouteId().equals(info.getId()) if (item.getRouteId().equals(info.getId())
&& !selectedRouteInfos.contains(info)) { && !selectedRouteInfos.contains(info)
&& !info.isSystemRoute()) {
sortedInfoList.add(info); sortedInfoList.add(info);
break; break;
} }
} }
} }
if (sortedInfoList.size() != infolist.size()) {
infolist.removeAll(sortedInfoList);
sortedInfoList.addAll(infolist.stream().filter(
MediaRoute2Info::isSystemRoute).collect(Collectors.toList()));
}
return sortedInfoList; return sortedInfoList;
} }

View File

@@ -113,6 +113,23 @@ public class InfoMediaManagerTest {
mInfoMediaManager.mRouterManager = MediaRouter2Manager.getInstance(mContext); mInfoMediaManager.mRouterManager = MediaRouter2Manager.getInstance(mContext);
} }
@Test
public void stopScan_notStartFirst_notCallsUnregister() {
mInfoMediaManager.mRouterManager = mRouterManager;
mInfoMediaManager.stopScan();
verify(mRouterManager, never()).unregisterScanRequest();
}
@Test
public void stopScan_startFirst_callsUnregister() {
mInfoMediaManager.mRouterManager = mRouterManager;
mInfoMediaManager.startScan();
mInfoMediaManager.stopScan();
verify(mRouterManager).unregisterScanRequest();
}
@Test @Test
public void onRouteAdded_getAvailableRoutes_shouldAddMediaDevice() { public void onRouteAdded_getAvailableRoutes_shouldAddMediaDevice() {
final List<RoutingSessionInfo> routingSessionInfos = new ArrayList<>(); final List<RoutingSessionInfo> routingSessionInfos = new ArrayList<>();
@@ -327,11 +344,12 @@ public class InfoMediaManagerTest {
routeListingPreference); routeListingPreference);
mInfoMediaManager.mMediaRouterCallback.onRoutesUpdated(); mInfoMediaManager.mMediaRouterCallback.onRoutesUpdated();
assertThat(mInfoMediaManager.mMediaDevices).hasSize(3); assertThat(mInfoMediaManager.mMediaDevices).hasSize(4);
assertThat(mInfoMediaManager.mMediaDevices.get(0).getId()).isEqualTo(TEST_ID); assertThat(mInfoMediaManager.mMediaDevices.get(0).getId()).isEqualTo(TEST_ID);
assertThat(mInfoMediaManager.mMediaDevices.get(1).getId()).isEqualTo(TEST_ID_4); assertThat(mInfoMediaManager.mMediaDevices.get(1).getId()).isEqualTo(TEST_ID_1);
assertThat(mInfoMediaManager.mMediaDevices.get(1).isSuggestedDevice()).isTrue(); assertThat(mInfoMediaManager.mMediaDevices.get(2).getId()).isEqualTo(TEST_ID_4);
assertThat(mInfoMediaManager.mMediaDevices.get(2).getId()).isEqualTo(TEST_ID_3); assertThat(mInfoMediaManager.mMediaDevices.get(2).isSuggestedDevice()).isTrue();
assertThat(mInfoMediaManager.mMediaDevices.get(3).getId()).isEqualTo(TEST_ID_3);
} }
@Test @Test
@@ -405,8 +423,13 @@ public class InfoMediaManagerTest {
when(availableInfo3.getClientPackageName()).thenReturn(packageName); when(availableInfo3.getClientPackageName()).thenReturn(packageName);
availableRoutes.add(availableInfo3); availableRoutes.add(availableInfo3);
when(mRouterManager.getAvailableRoutes(packageName)).thenReturn( final MediaRoute2Info availableInfo4 = mock(MediaRoute2Info.class);
availableRoutes); when(availableInfo4.getId()).thenReturn(TEST_ID_1);
when(availableInfo4.isSystemRoute()).thenReturn(true);
when(availableInfo4.getClientPackageName()).thenReturn(TEST_PACKAGE_NAME);
availableRoutes.add(availableInfo4);
when(mRouterManager.getAvailableRoutes(packageName)).thenReturn(availableRoutes);
return availableRoutes; return availableRoutes;
} }