Loading packages/SettingsLib/src/com/android/settingslib/media/InfoMediaManager.java +14 −1 Original line number Diff line number Diff line Loading @@ -182,6 +182,11 @@ public class InfoMediaManager extends MediaManager { return false; } boolean preferRouteListingOrdering() { return Build.VERSION.SDK_INT >= Build.VERSION_CODES.UPSIDE_DOWN_CAKE && Api34Impl.preferRouteListingOrdering(mRouterManager, mPackageName); } /** * Remove a {@code device} from current media. * Loading Loading @@ -616,7 +621,6 @@ public class InfoMediaManager extends MediaManager { return finalizedItemList; } @DoNotInline static synchronized List<MediaRoute2Info> filterDuplicatedIds(List<MediaRoute2Info> infos) { List<MediaRoute2Info> filteredInfos = new ArrayList<>(); Loading Loading @@ -653,5 +657,14 @@ public class InfoMediaManager extends MediaManager { } return sortedInfoList; } @DoNotInline static boolean preferRouteListingOrdering(MediaRouter2Manager mediaRouter2Manager, String packageName) { RouteListingPreference routeListingPreference = mediaRouter2Manager.getRouteListingPreference(packageName); return routeListingPreference != null && !routeListingPreference.getUseSystemOrdering(); } } } packages/SettingsLib/src/com/android/settingslib/media/LocalMediaManager.java +9 −0 Original line number Diff line number Diff line Loading @@ -209,6 +209,15 @@ public class LocalMediaManager implements BluetoothCallback { return mInfoMediaManager.isRoutingSessionAvailableForVolumeControl(); } /** * Returns if media app establishes a preferred route listing order. * * @return True if route list ordering exist and not using system ordering, false otherwise. */ public boolean isPreferenceRouteListingExist() { return mInfoMediaManager.preferRouteListingOrdering(); } /** * Start scan connected MediaDevice */ Loading packages/SettingsLib/tests/robotests/src/com/android/settingslib/media/InfoMediaManagerTest.java +27 −0 Original line number Diff line number Diff line Loading @@ -340,6 +340,33 @@ public class InfoMediaManagerTest { assertThat(mInfoMediaManager.mMediaDevices).hasSize(routes.size()); } @Test public void hasPreferenceRouteListing_oldSdkVersion_returnsFalse() { assertThat(mInfoMediaManager.preferRouteListingOrdering()).isFalse(); } @Test public void hasPreferenceRouteListing_newSdkVersionWithPreferenceExist_returnsTrue() { ReflectionHelpers.setStaticField(Build.VERSION.class, "SDK_INT", Build.VERSION_CODES.UPSIDE_DOWN_CAKE); when(mRouterManager.getRouteListingPreference(any())).thenReturn( new RouteListingPreference.Builder().setItems( ImmutableList.of()).setUseSystemOrdering(false).build()); mInfoMediaManager.mRouterManager = mRouterManager; assertThat(mInfoMediaManager.preferRouteListingOrdering()).isTrue(); } @Test public void hasPreferenceRouteListing_newSdkVersionWithPreferenceNotExist_returnsFalse() { ReflectionHelpers.setStaticField(Build.VERSION.class, "SDK_INT", Build.VERSION_CODES.UPSIDE_DOWN_CAKE); when(mRouterManager.getRouteListingPreference(any())).thenReturn(null); assertThat(mInfoMediaManager.preferRouteListingOrdering()).isFalse(); } private List<MediaRoute2Info> getRoutesListWithDuplicatedIds() { final List<MediaRoute2Info> routes = new ArrayList<>(); final MediaRoute2Info info = mock(MediaRoute2Info.class); Loading packages/SystemUI/src/com/android/systemui/media/dialog/MediaOutputController.java +9 −4 Original line number Diff line number Diff line Loading @@ -630,10 +630,11 @@ public class MediaOutputController implements LocalMediaManager.DeviceCallback, private void buildMediaItems(List<MediaDevice> devices) { synchronized (mMediaDevicesLock) { //TODO(b/257851968): do the organization only when there's no suggested sorted order // we get from application if (!isRouteProcessSupported() || (isRouteProcessSupported() && !mLocalMediaManager.isPreferenceRouteListingExist())) { attachRangeInfo(devices); Collections.sort(devices, Comparator.naturalOrder()); } // For the first time building list, to make sure the top device is the connected // device. if (mMediaItemList.isEmpty()) { Loading Loading @@ -751,6 +752,10 @@ public class MediaOutputController implements LocalMediaManager.DeviceCallback, return mFeatureFlags.isEnabled(Flags.OUTPUT_SWITCHER_ADVANCED_LAYOUT); } public boolean isRouteProcessSupported() { return mFeatureFlags.isEnabled(Flags.OUTPUT_SWITCHER_ROUTES_PROCESSING); } List<MediaDevice> getGroupMediaDevices() { final List<MediaDevice> selectedDevices = getSelectedMediaDevice(); final List<MediaDevice> selectableDevices = getSelectableMediaDevice(); Loading Loading
packages/SettingsLib/src/com/android/settingslib/media/InfoMediaManager.java +14 −1 Original line number Diff line number Diff line Loading @@ -182,6 +182,11 @@ public class InfoMediaManager extends MediaManager { return false; } boolean preferRouteListingOrdering() { return Build.VERSION.SDK_INT >= Build.VERSION_CODES.UPSIDE_DOWN_CAKE && Api34Impl.preferRouteListingOrdering(mRouterManager, mPackageName); } /** * Remove a {@code device} from current media. * Loading Loading @@ -616,7 +621,6 @@ public class InfoMediaManager extends MediaManager { return finalizedItemList; } @DoNotInline static synchronized List<MediaRoute2Info> filterDuplicatedIds(List<MediaRoute2Info> infos) { List<MediaRoute2Info> filteredInfos = new ArrayList<>(); Loading Loading @@ -653,5 +657,14 @@ public class InfoMediaManager extends MediaManager { } return sortedInfoList; } @DoNotInline static boolean preferRouteListingOrdering(MediaRouter2Manager mediaRouter2Manager, String packageName) { RouteListingPreference routeListingPreference = mediaRouter2Manager.getRouteListingPreference(packageName); return routeListingPreference != null && !routeListingPreference.getUseSystemOrdering(); } } }
packages/SettingsLib/src/com/android/settingslib/media/LocalMediaManager.java +9 −0 Original line number Diff line number Diff line Loading @@ -209,6 +209,15 @@ public class LocalMediaManager implements BluetoothCallback { return mInfoMediaManager.isRoutingSessionAvailableForVolumeControl(); } /** * Returns if media app establishes a preferred route listing order. * * @return True if route list ordering exist and not using system ordering, false otherwise. */ public boolean isPreferenceRouteListingExist() { return mInfoMediaManager.preferRouteListingOrdering(); } /** * Start scan connected MediaDevice */ Loading
packages/SettingsLib/tests/robotests/src/com/android/settingslib/media/InfoMediaManagerTest.java +27 −0 Original line number Diff line number Diff line Loading @@ -340,6 +340,33 @@ public class InfoMediaManagerTest { assertThat(mInfoMediaManager.mMediaDevices).hasSize(routes.size()); } @Test public void hasPreferenceRouteListing_oldSdkVersion_returnsFalse() { assertThat(mInfoMediaManager.preferRouteListingOrdering()).isFalse(); } @Test public void hasPreferenceRouteListing_newSdkVersionWithPreferenceExist_returnsTrue() { ReflectionHelpers.setStaticField(Build.VERSION.class, "SDK_INT", Build.VERSION_CODES.UPSIDE_DOWN_CAKE); when(mRouterManager.getRouteListingPreference(any())).thenReturn( new RouteListingPreference.Builder().setItems( ImmutableList.of()).setUseSystemOrdering(false).build()); mInfoMediaManager.mRouterManager = mRouterManager; assertThat(mInfoMediaManager.preferRouteListingOrdering()).isTrue(); } @Test public void hasPreferenceRouteListing_newSdkVersionWithPreferenceNotExist_returnsFalse() { ReflectionHelpers.setStaticField(Build.VERSION.class, "SDK_INT", Build.VERSION_CODES.UPSIDE_DOWN_CAKE); when(mRouterManager.getRouteListingPreference(any())).thenReturn(null); assertThat(mInfoMediaManager.preferRouteListingOrdering()).isFalse(); } private List<MediaRoute2Info> getRoutesListWithDuplicatedIds() { final List<MediaRoute2Info> routes = new ArrayList<>(); final MediaRoute2Info info = mock(MediaRoute2Info.class); Loading
packages/SystemUI/src/com/android/systemui/media/dialog/MediaOutputController.java +9 −4 Original line number Diff line number Diff line Loading @@ -630,10 +630,11 @@ public class MediaOutputController implements LocalMediaManager.DeviceCallback, private void buildMediaItems(List<MediaDevice> devices) { synchronized (mMediaDevicesLock) { //TODO(b/257851968): do the organization only when there's no suggested sorted order // we get from application if (!isRouteProcessSupported() || (isRouteProcessSupported() && !mLocalMediaManager.isPreferenceRouteListingExist())) { attachRangeInfo(devices); Collections.sort(devices, Comparator.naturalOrder()); } // For the first time building list, to make sure the top device is the connected // device. if (mMediaItemList.isEmpty()) { Loading Loading @@ -751,6 +752,10 @@ public class MediaOutputController implements LocalMediaManager.DeviceCallback, return mFeatureFlags.isEnabled(Flags.OUTPUT_SWITCHER_ADVANCED_LAYOUT); } public boolean isRouteProcessSupported() { return mFeatureFlags.isEnabled(Flags.OUTPUT_SWITCHER_ROUTES_PROCESSING); } List<MediaDevice> getGroupMediaDevices() { final List<MediaDevice> selectedDevices = getSelectedMediaDevice(); final List<MediaDevice> selectableDevices = getSelectableMediaDevice(); Loading