[Output Switcher] Implements method for checking preference list
complete the implementation of checking preference list, wrap method under AdvancedRoutesProcessor Test: make RunSettingsLibRoboTests -j40 Bug: b/257851968 Change-Id: I0445ecb0528fe090709e984a7d2165b6d901bd9c
This commit is contained in:
committed by
Shaowei Shen
parent
c50be49679
commit
0f2032479f
@@ -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.
|
||||
*
|
||||
@@ -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<>();
|
||||
@@ -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();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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
|
||||
*/
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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
|
||||
attachRangeInfo(devices);
|
||||
Collections.sort(devices, Comparator.naturalOrder());
|
||||
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()) {
|
||||
@@ -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();
|
||||
|
||||
Reference in New Issue
Block a user