Loading packages/SettingsLib/src/com/android/settingslib/media/InfoMediaManager.java +6 −6 Original line number Diff line number Diff line Loading @@ -71,6 +71,7 @@ import java.util.List; import java.util.Map; import java.util.Set; import java.util.concurrent.ConcurrentHashMap; import java.util.stream.Collectors; /** InfoMediaManager provide interface to get InfoMediaDevice list. */ @RequiresApi(Build.VERSION_CODES.R) Loading Loading @@ -719,20 +720,19 @@ public abstract 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).toList()); } return sortedInfoList; } Loading packages/SettingsLib/src/com/android/settingslib/media/ManagerInfoMediaManager.java +11 −4 Original line number Diff line number Diff line Loading @@ -43,6 +43,7 @@ public class ManagerInfoMediaManager extends InfoMediaManager { /* package */ final RouterManagerCallback mMediaRouterCallback = new RouterManagerCallback(); @VisibleForTesting /* package */ MediaRouter2Manager mRouterManager; boolean mIsScanning = false; private final Executor mExecutor = Executors.newSingleThreadExecutor(); Loading @@ -58,14 +59,20 @@ public class ManagerInfoMediaManager extends InfoMediaManager { @Override protected void startScanOnRouter() { if (!mIsScanning) { mRouterManager.registerCallback(mExecutor, mMediaRouterCallback); mRouterManager.registerScanRequest(); mIsScanning = true; } } @Override public void stopScan() { if (mIsScanning) { mRouterManager.unregisterCallback(mMediaRouterCallback); mRouterManager.unregisterScanRequest(); mIsScanning = false; } } @Override Loading packages/SettingsLib/tests/robotests/src/com/android/settingslib/media/InfoMediaManagerTest.java +29 −6 Original line number Diff line number Diff line Loading @@ -114,6 +114,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<>(); Loading Loading @@ -328,11 +345,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 Loading Loading @@ -406,8 +424,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(packageName); availableRoutes.add(availableInfo4); when(mRouterManager.getAvailableRoutes(packageName)).thenReturn(availableRoutes); return availableRoutes; } Loading Loading
packages/SettingsLib/src/com/android/settingslib/media/InfoMediaManager.java +6 −6 Original line number Diff line number Diff line Loading @@ -71,6 +71,7 @@ import java.util.List; import java.util.Map; import java.util.Set; import java.util.concurrent.ConcurrentHashMap; import java.util.stream.Collectors; /** InfoMediaManager provide interface to get InfoMediaDevice list. */ @RequiresApi(Build.VERSION_CODES.R) Loading Loading @@ -719,20 +720,19 @@ public abstract 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).toList()); } return sortedInfoList; } Loading
packages/SettingsLib/src/com/android/settingslib/media/ManagerInfoMediaManager.java +11 −4 Original line number Diff line number Diff line Loading @@ -43,6 +43,7 @@ public class ManagerInfoMediaManager extends InfoMediaManager { /* package */ final RouterManagerCallback mMediaRouterCallback = new RouterManagerCallback(); @VisibleForTesting /* package */ MediaRouter2Manager mRouterManager; boolean mIsScanning = false; private final Executor mExecutor = Executors.newSingleThreadExecutor(); Loading @@ -58,14 +59,20 @@ public class ManagerInfoMediaManager extends InfoMediaManager { @Override protected void startScanOnRouter() { if (!mIsScanning) { mRouterManager.registerCallback(mExecutor, mMediaRouterCallback); mRouterManager.registerScanRequest(); mIsScanning = true; } } @Override public void stopScan() { if (mIsScanning) { mRouterManager.unregisterCallback(mMediaRouterCallback); mRouterManager.unregisterScanRequest(); mIsScanning = false; } } @Override Loading
packages/SettingsLib/tests/robotests/src/com/android/settingslib/media/InfoMediaManagerTest.java +29 −6 Original line number Diff line number Diff line Loading @@ -114,6 +114,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<>(); Loading Loading @@ -328,11 +345,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 Loading Loading @@ -406,8 +424,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(packageName); availableRoutes.add(availableInfo4); when(mRouterManager.getAvailableRoutes(packageName)).thenReturn(availableRoutes); return availableRoutes; } Loading