Add getDeselectableMediaDevice()

-Add test case

Bug: 157098549
Test: make -j50 RunSettingsLibRoboTests
Change-Id: I47682997af51844e7811dd108297b7c13a60cd53
This commit is contained in:
Tim Peng
2020-05-21 11:33:45 +08:00
committed by tim peng
parent 2cdbcea8ba
commit cc9f93a172
4 changed files with 72 additions and 0 deletions

View File

@@ -218,6 +218,33 @@ public class InfoMediaManager extends MediaManager {
return deviceList;
}
/**
* Get the MediaDevice list that can be removed from current media session.
*
* @return list of MediaDevice
*/
List<MediaDevice> getDeselectableMediaDevice() {
final List<MediaDevice> deviceList = new ArrayList<>();
if (TextUtils.isEmpty(mPackageName)) {
Log.d(TAG, "getDeselectableMediaDevice() package name is null or empty!");
return deviceList;
}
final RoutingSessionInfo info = getRoutingSessionInfo();
if (info != null) {
for (MediaRoute2Info route : mRouterManager.getDeselectableRoutes(info)) {
deviceList.add(new InfoMediaDevice(mContext, mRouterManager,
route, mPackageName));
Log.d(TAG, route.getName() + " is deselectable for " + mPackageName);
}
return deviceList;
}
Log.d(TAG, "getDeselectableMediaDevice() cannot found deselectable MediaDevice from : "
+ mPackageName);
return deviceList;
}
/**
* Get the MediaDevice list that has been selected to current media.
*

View File

@@ -307,6 +307,15 @@ public class LocalMediaManager implements BluetoothCallback {
return mInfoMediaManager.getSelectableMediaDevice();
}
/**
* Get the MediaDevice list that can be removed from current media session.
*
* @return list of MediaDevice
*/
public List<MediaDevice> getDeselectableMediaDevice() {
return mInfoMediaManager.getDeselectableMediaDevice();
}
/**
* Release session to stop playing media on MediaDevice.
*/

View File

@@ -415,6 +415,31 @@ public class InfoMediaManagerTest {
assertThat(mInfoMediaManager.getSelectableMediaDevice()).isEmpty();
}
@Test
public void getDeselectableMediaDevice_packageNameIsNull_returnFalse() {
mInfoMediaManager.mPackageName = null;
assertThat(mInfoMediaManager.getDeselectableMediaDevice()).isEmpty();
}
@Test
public void getDeselectableMediaDevice_checkList() {
final List<RoutingSessionInfo> routingSessionInfos = new ArrayList<>();
final RoutingSessionInfo info = mock(RoutingSessionInfo.class);
routingSessionInfos.add(info);
final List<MediaRoute2Info> mediaRoute2Infos = new ArrayList<>();
final MediaRoute2Info mediaRoute2Info = mock(MediaRoute2Info.class);
mediaRoute2Infos.add(mediaRoute2Info);
mShadowRouter2Manager.setRoutingSessions(routingSessionInfos);
mShadowRouter2Manager.setDeselectableRoutes(mediaRoute2Infos);
when(mediaRoute2Info.getName()).thenReturn(TEST_NAME);
final List<MediaDevice> mediaDevices = mInfoMediaManager.getDeselectableMediaDevice();
assertThat(mediaDevices.size()).isEqualTo(1);
assertThat(mediaDevices.get(0).getName()).isEqualTo(TEST_NAME);
}
@Test
public void adjustSessionVolume_routingSessionInfoIsNull_noCrash() {
mInfoMediaManager.adjustSessionVolume(null, 10);

View File

@@ -15,6 +15,7 @@
*/
package com.android.settingslib.testutils.shadow;
import android.annotation.NonNull;
import android.media.MediaRoute2Info;
import android.media.MediaRouter2Manager;
import android.media.RoutingSessionInfo;
@@ -31,6 +32,7 @@ public class ShadowRouter2Manager {
private List<MediaRoute2Info> mAvailableRoutes;
private List<MediaRoute2Info> mAllRoutes;
private List<MediaRoute2Info> mDeselectableRoutes;
private List<RoutingSessionInfo> mActiveSessions;
private List<RoutingSessionInfo> mRoutingSessions;
@@ -70,6 +72,15 @@ public class ShadowRouter2Manager {
mRoutingSessions = infos;
}
@Implementation
public List<MediaRoute2Info> getDeselectableRoutes(@NonNull RoutingSessionInfo sessionInfo) {
return mDeselectableRoutes;
}
public void setDeselectableRoutes(List<MediaRoute2Info> routes) {
mDeselectableRoutes = routes;
}
public static ShadowRouter2Manager getShadow() {
return (ShadowRouter2Manager) Shadow.extract(
MediaRouter2Manager.getInstance(RuntimeEnvironment.application));