Loading packages/SettingsLib/src/com/android/settingslib/media/InfoMediaManager.java +1 −21 Original line number Diff line number Diff line Loading @@ -1085,26 +1085,6 @@ public abstract class InfoMediaManager { @RequiresApi(34) static class Api34Impl { @DoNotInline static List<RouteListingPreference.Item> composePreferenceRouteListing( RouteListingPreference routeListingPreference) { boolean preferRouteListingOrdering = com.android.media.flags.Flags.enableOutputSwitcherDeviceGrouping() && preferRouteListingOrdering(routeListingPreference); List<RouteListingPreference.Item> finalizedItemList = new ArrayList<>(); List<RouteListingPreference.Item> itemList = routeListingPreference.getItems(); for (RouteListingPreference.Item item : itemList) { // Put suggested devices on the top first before further organization if (!preferRouteListingOrdering && (item.getFlags() & RouteListingPreference.Item.FLAG_SUGGESTED) != 0) { finalizedItemList.add(0, item); } else { finalizedItemList.add(item); } } return finalizedItemList; } @DoNotInline static synchronized List<MediaRoute2Info> filterDuplicatedIds(List<MediaRoute2Info> infos) { List<MediaRoute2Info> filteredInfos = new ArrayList<>(); Loading Loading @@ -1153,7 +1133,7 @@ public abstract class InfoMediaManager { List<MediaRoute2Info> availableRoutes, RouteListingPreference routeListingPreference) { final List<RouteListingPreference.Item> routeListingPreferenceItems = Api34Impl.composePreferenceRouteListing(routeListingPreference); routeListingPreference.getItems(); Set<String> sortedRouteIds = new LinkedHashSet<>(); Loading packages/SettingsLib/src/com/android/settingslib/media/MediaDevice.java +6 −0 Original line number Diff line number Diff line Loading @@ -506,6 +506,12 @@ public abstract class MediaDevice implements Comparable<MediaDevice> { return 1; } if (isSuggestedDevice()) { return -1; } else if (another.isSuggestedDevice()) { return 1; } if (mType == another.mType) { // Check device is muting expected device if (isMutingExpectedDevice()) { Loading packages/SettingsLib/tests/robotests/src/com/android/settingslib/media/InfoMediaManagerTest.java +3 −27 Original line number Diff line number Diff line Loading @@ -372,9 +372,9 @@ public class InfoMediaManagerTest { assertThat(mInfoMediaManager.mMediaDevices).hasSize(4); assertThat(mInfoMediaManager.mMediaDevices.get(0).getId()).isEqualTo(TEST_ID); 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); assertThat(mInfoMediaManager.mMediaDevices.get(2).getId()).isEqualTo(TEST_ID_3); assertThat(mInfoMediaManager.mMediaDevices.get(3).getId()).isEqualTo(TEST_ID_4); assertThat(mInfoMediaManager.mMediaDevices.get(3).isSuggestedDevice()).isTrue(); } private RouteListingPreference setUpPreferenceList(boolean useSystemOrdering) { Loading Loading @@ -1550,30 +1550,6 @@ public class InfoMediaManagerTest { .isEqualTo(LocalMediaManager.MediaDeviceState.STATE_CONNECTED); } @EnableFlags(Flags.FLAG_ENABLE_OUTPUT_SWITCHER_DEVICE_GROUPING) @Test public void composePreferenceRouteListing_useSystemOrderingIsFalse() { RouteListingPreference routeListingPreference = setUpPreferenceList(false); List<RouteListingPreference.Item> routeOrder = Api34Impl.composePreferenceRouteListing(routeListingPreference); assertThat(routeOrder.get(0).getRouteId()).isEqualTo(TEST_ID_3); assertThat(routeOrder.get(1).getRouteId()).isEqualTo(TEST_ID_4); } @EnableFlags(Flags.FLAG_ENABLE_OUTPUT_SWITCHER_DEVICE_GROUPING) @Test public void composePreferenceRouteListing_useSystemOrderingIsTrue() { RouteListingPreference routeListingPreference = setUpPreferenceList(true); List<RouteListingPreference.Item> routeOrder = Api34Impl.composePreferenceRouteListing(routeListingPreference); assertThat(routeOrder.get(0).getRouteId()).isEqualTo(TEST_ID_4); assertThat(routeOrder.get(1).getRouteId()).isEqualTo(TEST_ID_3); } @EnableFlags(Flags.FLAG_ENABLE_OUTPUT_SWITCHER_DEVICE_GROUPING) @Test public void arrangeRouteListByPreference_useSystemOrderingIsFalse() { Loading packages/SettingsLib/tests/robotests/src/com/android/settingslib/media/MediaDeviceTest.java +35 −1 Original line number Diff line number Diff line Loading @@ -21,6 +21,7 @@ import static android.media.MediaRoute2Info.TYPE_REMOTE_SPEAKER; import static android.media.MediaRoute2Info.TYPE_WIRED_HEADPHONES; import static android.media.RouteListingPreference.Item.SELECTION_BEHAVIOR_GO_TO_APP; import static com.android.settingslib.media.LocalMediaManager.MediaDeviceState.STATE_SELECTED; import static com.android.settingslib.media.MediaDevice.SelectionBehavior.SELECTION_BEHAVIOR_TRANSFER; import static com.google.common.truth.Truth.assertThat; Loading Loading @@ -154,6 +155,9 @@ public class MediaDeviceTest { when(mBluetoothRouteInfo1.getType()).thenReturn(TYPE_BLUETOOTH_A2DP); when(mBluetoothRouteInfo2.getType()).thenReturn(TYPE_BLUETOOTH_A2DP); when(mBluetoothRouteInfo3.getType()).thenReturn(TYPE_BLUETOOTH_A2DP); when(mBluetoothRouteInfo1.getName()).thenReturn(DEVICE_NAME_1); when(mBluetoothRouteInfo2.getName()).thenReturn(DEVICE_NAME_2); when(mBluetoothRouteInfo3.getName()).thenReturn(DEVICE_NAME_3); when(mRouteInfo1.getId()).thenReturn(ROUTER_ID_1); when(mRouteInfo2.getId()).thenReturn(ROUTER_ID_2); when(mRouteInfo3.getId()).thenReturn(ROUTER_ID_3); Loading Loading @@ -381,6 +385,36 @@ public class MediaDeviceTest { assertThat(mMediaDevices.get(0)).isEqualTo(mBluetoothMediaDevice2); } @Test public void compareTo_suggestedDevice_comesBeforeNonSuggested() { mInfoMediaDevice2.setIsSuggested(true); mInfoMediaDevice1.setIsSuggested(false); mMediaDevices.add(mInfoMediaDevice1); mMediaDevices.add(mInfoMediaDevice2); assertThat(mMediaDevices.get(0)).isEqualTo(mInfoMediaDevice1); Collections.sort(mMediaDevices, COMPARATOR); assertThat(mMediaDevices.get(0)).isEqualTo(mInfoMediaDevice2); assertThat(mMediaDevices.get(1)).isEqualTo(mInfoMediaDevice1); } @Test public void compareTo_selectedAndSuggested_selectedIsFirst() { mInfoMediaDevice1.setIsSuggested(true); mInfoMediaDevice2.setState(STATE_SELECTED); mMediaDevices.add(mInfoMediaDevice1); mMediaDevices.add(mInfoMediaDevice2); assertThat(mMediaDevices.get(0)).isEqualTo(mInfoMediaDevice1); Collections.sort(mMediaDevices, COMPARATOR); assertThat(mMediaDevices.get(0)).isEqualTo(mInfoMediaDevice2); assertThat(mMediaDevices.get(1)).isEqualTo(mInfoMediaDevice1); } // 1.mInfoMediaDevice1: Last Selected device // 2.mBluetoothMediaDevice1: CarKit device // 3.mInfoMediaDevice2: * 2 times usage Loading Loading @@ -567,7 +601,7 @@ public class MediaDeviceTest { /* deselectable= */ true); MediaDevice mediaDevice = new PhoneMediaDevice(mContext, mRouteInfo1, /* dynamicRouteAttributes= */ dynamicRouteAttributes, /* item= */ null); null, /* item= */ null); assertThat(mediaDevice.isTransferable()).isFalse(); assertThat(mediaDevice.isSelected()).isFalse(); Loading Loading
packages/SettingsLib/src/com/android/settingslib/media/InfoMediaManager.java +1 −21 Original line number Diff line number Diff line Loading @@ -1085,26 +1085,6 @@ public abstract class InfoMediaManager { @RequiresApi(34) static class Api34Impl { @DoNotInline static List<RouteListingPreference.Item> composePreferenceRouteListing( RouteListingPreference routeListingPreference) { boolean preferRouteListingOrdering = com.android.media.flags.Flags.enableOutputSwitcherDeviceGrouping() && preferRouteListingOrdering(routeListingPreference); List<RouteListingPreference.Item> finalizedItemList = new ArrayList<>(); List<RouteListingPreference.Item> itemList = routeListingPreference.getItems(); for (RouteListingPreference.Item item : itemList) { // Put suggested devices on the top first before further organization if (!preferRouteListingOrdering && (item.getFlags() & RouteListingPreference.Item.FLAG_SUGGESTED) != 0) { finalizedItemList.add(0, item); } else { finalizedItemList.add(item); } } return finalizedItemList; } @DoNotInline static synchronized List<MediaRoute2Info> filterDuplicatedIds(List<MediaRoute2Info> infos) { List<MediaRoute2Info> filteredInfos = new ArrayList<>(); Loading Loading @@ -1153,7 +1133,7 @@ public abstract class InfoMediaManager { List<MediaRoute2Info> availableRoutes, RouteListingPreference routeListingPreference) { final List<RouteListingPreference.Item> routeListingPreferenceItems = Api34Impl.composePreferenceRouteListing(routeListingPreference); routeListingPreference.getItems(); Set<String> sortedRouteIds = new LinkedHashSet<>(); Loading
packages/SettingsLib/src/com/android/settingslib/media/MediaDevice.java +6 −0 Original line number Diff line number Diff line Loading @@ -506,6 +506,12 @@ public abstract class MediaDevice implements Comparable<MediaDevice> { return 1; } if (isSuggestedDevice()) { return -1; } else if (another.isSuggestedDevice()) { return 1; } if (mType == another.mType) { // Check device is muting expected device if (isMutingExpectedDevice()) { Loading
packages/SettingsLib/tests/robotests/src/com/android/settingslib/media/InfoMediaManagerTest.java +3 −27 Original line number Diff line number Diff line Loading @@ -372,9 +372,9 @@ public class InfoMediaManagerTest { assertThat(mInfoMediaManager.mMediaDevices).hasSize(4); assertThat(mInfoMediaManager.mMediaDevices.get(0).getId()).isEqualTo(TEST_ID); 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); assertThat(mInfoMediaManager.mMediaDevices.get(2).getId()).isEqualTo(TEST_ID_3); assertThat(mInfoMediaManager.mMediaDevices.get(3).getId()).isEqualTo(TEST_ID_4); assertThat(mInfoMediaManager.mMediaDevices.get(3).isSuggestedDevice()).isTrue(); } private RouteListingPreference setUpPreferenceList(boolean useSystemOrdering) { Loading Loading @@ -1550,30 +1550,6 @@ public class InfoMediaManagerTest { .isEqualTo(LocalMediaManager.MediaDeviceState.STATE_CONNECTED); } @EnableFlags(Flags.FLAG_ENABLE_OUTPUT_SWITCHER_DEVICE_GROUPING) @Test public void composePreferenceRouteListing_useSystemOrderingIsFalse() { RouteListingPreference routeListingPreference = setUpPreferenceList(false); List<RouteListingPreference.Item> routeOrder = Api34Impl.composePreferenceRouteListing(routeListingPreference); assertThat(routeOrder.get(0).getRouteId()).isEqualTo(TEST_ID_3); assertThat(routeOrder.get(1).getRouteId()).isEqualTo(TEST_ID_4); } @EnableFlags(Flags.FLAG_ENABLE_OUTPUT_SWITCHER_DEVICE_GROUPING) @Test public void composePreferenceRouteListing_useSystemOrderingIsTrue() { RouteListingPreference routeListingPreference = setUpPreferenceList(true); List<RouteListingPreference.Item> routeOrder = Api34Impl.composePreferenceRouteListing(routeListingPreference); assertThat(routeOrder.get(0).getRouteId()).isEqualTo(TEST_ID_4); assertThat(routeOrder.get(1).getRouteId()).isEqualTo(TEST_ID_3); } @EnableFlags(Flags.FLAG_ENABLE_OUTPUT_SWITCHER_DEVICE_GROUPING) @Test public void arrangeRouteListByPreference_useSystemOrderingIsFalse() { Loading
packages/SettingsLib/tests/robotests/src/com/android/settingslib/media/MediaDeviceTest.java +35 −1 Original line number Diff line number Diff line Loading @@ -21,6 +21,7 @@ import static android.media.MediaRoute2Info.TYPE_REMOTE_SPEAKER; import static android.media.MediaRoute2Info.TYPE_WIRED_HEADPHONES; import static android.media.RouteListingPreference.Item.SELECTION_BEHAVIOR_GO_TO_APP; import static com.android.settingslib.media.LocalMediaManager.MediaDeviceState.STATE_SELECTED; import static com.android.settingslib.media.MediaDevice.SelectionBehavior.SELECTION_BEHAVIOR_TRANSFER; import static com.google.common.truth.Truth.assertThat; Loading Loading @@ -154,6 +155,9 @@ public class MediaDeviceTest { when(mBluetoothRouteInfo1.getType()).thenReturn(TYPE_BLUETOOTH_A2DP); when(mBluetoothRouteInfo2.getType()).thenReturn(TYPE_BLUETOOTH_A2DP); when(mBluetoothRouteInfo3.getType()).thenReturn(TYPE_BLUETOOTH_A2DP); when(mBluetoothRouteInfo1.getName()).thenReturn(DEVICE_NAME_1); when(mBluetoothRouteInfo2.getName()).thenReturn(DEVICE_NAME_2); when(mBluetoothRouteInfo3.getName()).thenReturn(DEVICE_NAME_3); when(mRouteInfo1.getId()).thenReturn(ROUTER_ID_1); when(mRouteInfo2.getId()).thenReturn(ROUTER_ID_2); when(mRouteInfo3.getId()).thenReturn(ROUTER_ID_3); Loading Loading @@ -381,6 +385,36 @@ public class MediaDeviceTest { assertThat(mMediaDevices.get(0)).isEqualTo(mBluetoothMediaDevice2); } @Test public void compareTo_suggestedDevice_comesBeforeNonSuggested() { mInfoMediaDevice2.setIsSuggested(true); mInfoMediaDevice1.setIsSuggested(false); mMediaDevices.add(mInfoMediaDevice1); mMediaDevices.add(mInfoMediaDevice2); assertThat(mMediaDevices.get(0)).isEqualTo(mInfoMediaDevice1); Collections.sort(mMediaDevices, COMPARATOR); assertThat(mMediaDevices.get(0)).isEqualTo(mInfoMediaDevice2); assertThat(mMediaDevices.get(1)).isEqualTo(mInfoMediaDevice1); } @Test public void compareTo_selectedAndSuggested_selectedIsFirst() { mInfoMediaDevice1.setIsSuggested(true); mInfoMediaDevice2.setState(STATE_SELECTED); mMediaDevices.add(mInfoMediaDevice1); mMediaDevices.add(mInfoMediaDevice2); assertThat(mMediaDevices.get(0)).isEqualTo(mInfoMediaDevice1); Collections.sort(mMediaDevices, COMPARATOR); assertThat(mMediaDevices.get(0)).isEqualTo(mInfoMediaDevice2); assertThat(mMediaDevices.get(1)).isEqualTo(mInfoMediaDevice1); } // 1.mInfoMediaDevice1: Last Selected device // 2.mBluetoothMediaDevice1: CarKit device // 3.mInfoMediaDevice2: * 2 times usage Loading Loading @@ -567,7 +601,7 @@ public class MediaDeviceTest { /* deselectable= */ true); MediaDevice mediaDevice = new PhoneMediaDevice(mContext, mRouteInfo1, /* dynamicRouteAttributes= */ dynamicRouteAttributes, /* item= */ null); null, /* item= */ null); assertThat(mediaDevice.isTransferable()).isFalse(); assertThat(mediaDevice.isSelected()).isFalse(); Loading