diff options
| author | 2020-05-21 11:33:45 +0800 | |
|---|---|---|
| committer | 2020-05-26 07:25:40 +0000 | |
| commit | cc9f93a172cbfef60661cfcd59dddaa32674ff79 (patch) | |
| tree | 186565dd58a4251aa007cda456b5d2ce19da5495 | |
| parent | 2cdbcea8ba29bbb8d50511a9fa6e5bd2763fb153 (diff) | |
Add getDeselectableMediaDevice()
-Add test case
Bug: 157098549
Test: make -j50 RunSettingsLibRoboTests
Change-Id: I47682997af51844e7811dd108297b7c13a60cd53
4 files changed, 72 insertions, 0 deletions
diff --git a/packages/SettingsLib/src/com/android/settingslib/media/InfoMediaManager.java b/packages/SettingsLib/src/com/android/settingslib/media/InfoMediaManager.java index 008a433bb7a4..79e5b35da2fd 100644 --- a/packages/SettingsLib/src/com/android/settingslib/media/InfoMediaManager.java +++ b/packages/SettingsLib/src/com/android/settingslib/media/InfoMediaManager.java @@ -219,6 +219,33 @@ public class InfoMediaManager extends MediaManager { } /** + * 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. * * @return list of MediaDevice diff --git a/packages/SettingsLib/src/com/android/settingslib/media/LocalMediaManager.java b/packages/SettingsLib/src/com/android/settingslib/media/LocalMediaManager.java index 7d95f1992aaf..4325c2e701cb 100644 --- a/packages/SettingsLib/src/com/android/settingslib/media/LocalMediaManager.java +++ b/packages/SettingsLib/src/com/android/settingslib/media/LocalMediaManager.java @@ -308,6 +308,15 @@ public class LocalMediaManager implements BluetoothCallback { } /** + * 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. */ public boolean releaseSession() { diff --git a/packages/SettingsLib/tests/robotests/src/com/android/settingslib/media/InfoMediaManagerTest.java b/packages/SettingsLib/tests/robotests/src/com/android/settingslib/media/InfoMediaManagerTest.java index 734866f49a53..320108573d09 100644 --- a/packages/SettingsLib/tests/robotests/src/com/android/settingslib/media/InfoMediaManagerTest.java +++ b/packages/SettingsLib/tests/robotests/src/com/android/settingslib/media/InfoMediaManagerTest.java @@ -416,6 +416,31 @@ public class InfoMediaManagerTest { } @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); } diff --git a/packages/SettingsLib/tests/robotests/testutils/com/android/settingslib/testutils/shadow/ShadowRouter2Manager.java b/packages/SettingsLib/tests/robotests/testutils/com/android/settingslib/testutils/shadow/ShadowRouter2Manager.java index db0cb0668a2f..5bb550053a12 100644 --- a/packages/SettingsLib/tests/robotests/testutils/com/android/settingslib/testutils/shadow/ShadowRouter2Manager.java +++ b/packages/SettingsLib/tests/robotests/testutils/com/android/settingslib/testutils/shadow/ShadowRouter2Manager.java @@ -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)); |