Merge "Update InfoMediaManager.devices when a session is released" into udc-dev am: e8bca0fde3
Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/22931118 Change-Id: Idb9a97e6cf252100849bad7ed75bc234af776d67 Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
This commit is contained in:
@@ -50,6 +50,7 @@ import android.text.TextUtils;
|
|||||||
import android.util.Log;
|
import android.util.Log;
|
||||||
|
|
||||||
import androidx.annotation.DoNotInline;
|
import androidx.annotation.DoNotInline;
|
||||||
|
import androidx.annotation.NonNull;
|
||||||
import androidx.annotation.RequiresApi;
|
import androidx.annotation.RequiresApi;
|
||||||
|
|
||||||
import com.android.internal.annotations.VisibleForTesting;
|
import com.android.internal.annotations.VisibleForTesting;
|
||||||
@@ -637,6 +638,11 @@ public class InfoMediaManager extends MediaManager {
|
|||||||
refreshDevices();
|
refreshDevices();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onSessionReleased(@NonNull RoutingSessionInfo session) {
|
||||||
|
refreshDevices();
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onRouteListingPreferenceUpdated(
|
public void onRouteListingPreferenceUpdated(
|
||||||
String packageName,
|
String packageName,
|
||||||
|
|||||||
@@ -140,6 +140,56 @@ public class InfoMediaManagerTest {
|
|||||||
assertThat(mInfoMediaManager.mMediaDevices).hasSize(routes.size());
|
assertThat(mInfoMediaManager.mMediaDevices).hasSize(routes.size());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void onSessionReleased_shouldUpdateConnectedDevice() {
|
||||||
|
final List<RoutingSessionInfo> routingSessionInfos = new ArrayList<>();
|
||||||
|
final RoutingSessionInfo sessionInfo1 = mock(RoutingSessionInfo.class);
|
||||||
|
routingSessionInfos.add(sessionInfo1);
|
||||||
|
final RoutingSessionInfo sessionInfo2 = mock(RoutingSessionInfo.class);
|
||||||
|
routingSessionInfos.add(sessionInfo2);
|
||||||
|
|
||||||
|
final List<String> selectedRoutesSession1 = new ArrayList<>();
|
||||||
|
selectedRoutesSession1.add(TEST_ID_1);
|
||||||
|
when(sessionInfo1.getSelectedRoutes()).thenReturn(selectedRoutesSession1);
|
||||||
|
|
||||||
|
final List<String> selectedRoutesSession2 = new ArrayList<>();
|
||||||
|
selectedRoutesSession2.add(TEST_ID_2);
|
||||||
|
when(sessionInfo2.getSelectedRoutes()).thenReturn(selectedRoutesSession2);
|
||||||
|
|
||||||
|
mShadowRouter2Manager.setRoutingSessions(routingSessionInfos);
|
||||||
|
|
||||||
|
final MediaRoute2Info info1 = mock(MediaRoute2Info.class);
|
||||||
|
when(info1.getId()).thenReturn(TEST_ID_1);
|
||||||
|
when(info1.getClientPackageName()).thenReturn(TEST_PACKAGE_NAME);
|
||||||
|
|
||||||
|
final MediaRoute2Info info2 = mock(MediaRoute2Info.class);
|
||||||
|
when(info2.getId()).thenReturn(TEST_ID_2);
|
||||||
|
when(info2.getClientPackageName()).thenReturn(TEST_PACKAGE_NAME);
|
||||||
|
|
||||||
|
final List<MediaRoute2Info> routes = new ArrayList<>();
|
||||||
|
routes.add(info1);
|
||||||
|
routes.add(info2);
|
||||||
|
mShadowRouter2Manager.setAllRoutes(routes);
|
||||||
|
mShadowRouter2Manager.setTransferableRoutes(routes);
|
||||||
|
|
||||||
|
final MediaDevice mediaDevice1 = mInfoMediaManager.findMediaDevice(TEST_ID_1);
|
||||||
|
assertThat(mediaDevice1).isNull();
|
||||||
|
final MediaDevice mediaDevice2 = mInfoMediaManager.findMediaDevice(TEST_ID_2);
|
||||||
|
assertThat(mediaDevice2).isNull();
|
||||||
|
|
||||||
|
mInfoMediaManager.mMediaRouterCallback.onRoutesUpdated();
|
||||||
|
final MediaDevice infoDevice1 = mInfoMediaManager.mMediaDevices.get(0);
|
||||||
|
assertThat(infoDevice1.getId()).isEqualTo(TEST_ID_1);
|
||||||
|
final MediaDevice infoDevice2 = mInfoMediaManager.mMediaDevices.get(1);
|
||||||
|
assertThat(infoDevice2.getId()).isEqualTo(TEST_ID_2);
|
||||||
|
// The active routing session is the last one in the list, which maps to infoDevice2.
|
||||||
|
assertThat(mInfoMediaManager.getCurrentConnectedDevice()).isEqualTo(infoDevice2);
|
||||||
|
|
||||||
|
routingSessionInfos.remove(sessionInfo2);
|
||||||
|
mInfoMediaManager.mMediaRouterCallback.onSessionReleased(sessionInfo2);
|
||||||
|
assertThat(mInfoMediaManager.getCurrentConnectedDevice()).isEqualTo(infoDevice1);
|
||||||
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void onRouteAdded_buildAllRoutes_shouldAddMediaDevice() {
|
public void onRouteAdded_buildAllRoutes_shouldAddMediaDevice() {
|
||||||
final MediaRoute2Info info = mock(MediaRoute2Info.class);
|
final MediaRoute2Info info = mock(MediaRoute2Info.class);
|
||||||
|
|||||||
Reference in New Issue
Block a user