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

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

Change-Id: I6c29f10318a384e23f49fbf067b6d754dbb22062
Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
This commit is contained in:
shaoweishen
2023-06-28 07:48:49 +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;
@VisibleForTesting
String mPackageName;
boolean mIsScanning = false;
private MediaDevice mCurrentConnectedDevice;
private LocalBluetoothManager mBluetoothManager;
@@ -110,22 +111,29 @@ public class InfoMediaManager extends MediaManager {
@Override
public void startScan() {
mMediaDevices.clear();
mRouterManager.registerCallback(mExecutor, mMediaRouterCallback);
mRouterManager.registerScanRequest();
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.UPSIDE_DOWN_CAKE
&& !TextUtils.isEmpty(mPackageName)) {
RouteListingPreference routeListingPreference =
mRouterManager.getRouteListingPreference(mPackageName);
Api34Impl.onRouteListingPreferenceUpdated(routeListingPreference, mPreferenceItemMap);
if (!mIsScanning) {
mMediaDevices.clear();
mRouterManager.registerCallback(mExecutor, mMediaRouterCallback);
mRouterManager.registerScanRequest();
mIsScanning = true;
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.UPSIDE_DOWN_CAKE
&& !TextUtils.isEmpty(mPackageName)) {
RouteListingPreference routeListingPreference =
mRouterManager.getRouteListingPreference(mPackageName);
Api34Impl.onRouteListingPreferenceUpdated(routeListingPreference,
mPreferenceItemMap);
}
refreshDevices();
}
refreshDevices();
}
@Override
public void stopScan() {
mRouterManager.unregisterCallback(mMediaRouterCallback);
mRouterManager.unregisterScanRequest();
if (mIsScanning) {
mRouterManager.unregisterCallback(mMediaRouterCallback);
mRouterManager.unregisterScanRequest();
mIsScanning = false;
}
}
/**
@@ -701,20 +709,19 @@ public class InfoMediaManager extends MediaManager {
List<MediaRoute2Info> selectedRouteInfos, List<MediaRoute2Info> infolist,
List<RouteListingPreference.Item> preferenceRouteListing) {
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 (MediaRoute2Info info : infolist) {
if (item.getRouteId().equals(info.getId())
&& !selectedRouteInfos.contains(info)) {
&& !selectedRouteInfos.contains(info)
&& !info.isSystemRoute()) {
sortedInfoList.add(info);
break;
}
}
}
if (sortedInfoList.size() != infolist.size()) {
infolist.removeAll(sortedInfoList);
sortedInfoList.addAll(infolist.stream().filter(
MediaRoute2Info::isSystemRoute).collect(Collectors.toList()));
}
return sortedInfoList;
}

View File

@@ -113,6 +113,23 @@ public class InfoMediaManagerTest {
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
public void onRouteAdded_getAvailableRoutes_shouldAddMediaDevice() {
final List<RoutingSessionInfo> routingSessionInfos = new ArrayList<>();
@@ -327,11 +344,12 @@ public class InfoMediaManagerTest {
routeListingPreference);
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(1).getId()).isEqualTo(TEST_ID_4);
assertThat(mInfoMediaManager.mMediaDevices.get(1).isSuggestedDevice()).isTrue();
assertThat(mInfoMediaManager.mMediaDevices.get(2).getId()).isEqualTo(TEST_ID_3);
assertThat(mInfoMediaManager.mMediaDevices.get(1).getId()).isEqualTo(TEST_ID_1);
assertThat(mInfoMediaManager.mMediaDevices.get(2).getId()).isEqualTo(TEST_ID_4);
assertThat(mInfoMediaManager.mMediaDevices.get(2).isSuggestedDevice()).isTrue();
assertThat(mInfoMediaManager.mMediaDevices.get(3).getId()).isEqualTo(TEST_ID_3);
}
@Test
@@ -405,8 +423,13 @@ public class InfoMediaManagerTest {
when(availableInfo3.getClientPackageName()).thenReturn(packageName);
availableRoutes.add(availableInfo3);
when(mRouterManager.getAvailableRoutes(packageName)).thenReturn(
availableRoutes);
final MediaRoute2Info availableInfo4 = mock(MediaRoute2Info.class);
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;
}