[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;
|
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.
|
* Remove a {@code device} from current media.
|
||||||
*
|
*
|
||||||
@@ -616,7 +621,6 @@ public class InfoMediaManager extends MediaManager {
|
|||||||
return finalizedItemList;
|
return finalizedItemList;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@DoNotInline
|
@DoNotInline
|
||||||
static synchronized List<MediaRoute2Info> filterDuplicatedIds(List<MediaRoute2Info> infos) {
|
static synchronized List<MediaRoute2Info> filterDuplicatedIds(List<MediaRoute2Info> infos) {
|
||||||
List<MediaRoute2Info> filteredInfos = new ArrayList<>();
|
List<MediaRoute2Info> filteredInfos = new ArrayList<>();
|
||||||
@@ -653,5 +657,14 @@ public class InfoMediaManager extends MediaManager {
|
|||||||
}
|
}
|
||||||
return sortedInfoList;
|
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();
|
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
|
* Start scan connected MediaDevice
|
||||||
*/
|
*/
|
||||||
|
|||||||
@@ -340,6 +340,33 @@ public class InfoMediaManagerTest {
|
|||||||
assertThat(mInfoMediaManager.mMediaDevices).hasSize(routes.size());
|
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() {
|
private List<MediaRoute2Info> getRoutesListWithDuplicatedIds() {
|
||||||
final List<MediaRoute2Info> routes = new ArrayList<>();
|
final List<MediaRoute2Info> routes = new ArrayList<>();
|
||||||
final MediaRoute2Info info = mock(MediaRoute2Info.class);
|
final MediaRoute2Info info = mock(MediaRoute2Info.class);
|
||||||
|
|||||||
@@ -630,10 +630,11 @@ public class MediaOutputController implements LocalMediaManager.DeviceCallback,
|
|||||||
|
|
||||||
private void buildMediaItems(List<MediaDevice> devices) {
|
private void buildMediaItems(List<MediaDevice> devices) {
|
||||||
synchronized (mMediaDevicesLock) {
|
synchronized (mMediaDevicesLock) {
|
||||||
//TODO(b/257851968): do the organization only when there's no suggested sorted order
|
if (!isRouteProcessSupported() || (isRouteProcessSupported()
|
||||||
// we get from application
|
&& !mLocalMediaManager.isPreferenceRouteListingExist())) {
|
||||||
attachRangeInfo(devices);
|
attachRangeInfo(devices);
|
||||||
Collections.sort(devices, Comparator.naturalOrder());
|
Collections.sort(devices, Comparator.naturalOrder());
|
||||||
|
}
|
||||||
// For the first time building list, to make sure the top device is the connected
|
// For the first time building list, to make sure the top device is the connected
|
||||||
// device.
|
// device.
|
||||||
if (mMediaItemList.isEmpty()) {
|
if (mMediaItemList.isEmpty()) {
|
||||||
@@ -751,6 +752,10 @@ public class MediaOutputController implements LocalMediaManager.DeviceCallback,
|
|||||||
return mFeatureFlags.isEnabled(Flags.OUTPUT_SWITCHER_ADVANCED_LAYOUT);
|
return mFeatureFlags.isEnabled(Flags.OUTPUT_SWITCHER_ADVANCED_LAYOUT);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public boolean isRouteProcessSupported() {
|
||||||
|
return mFeatureFlags.isEnabled(Flags.OUTPUT_SWITCHER_ROUTES_PROCESSING);
|
||||||
|
}
|
||||||
|
|
||||||
List<MediaDevice> getGroupMediaDevices() {
|
List<MediaDevice> getGroupMediaDevices() {
|
||||||
final List<MediaDevice> selectedDevices = getSelectedMediaDevice();
|
final List<MediaDevice> selectedDevices = getSelectedMediaDevice();
|
||||||
final List<MediaDevice> selectableDevices = getSelectableMediaDevice();
|
final List<MediaDevice> selectableDevices = getSelectableMediaDevice();
|
||||||
|
|||||||
Reference in New Issue
Block a user