aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndroid Build Coastguard Worker <android-build-coastguard-worker@google.com>2021-08-13 06:15:17 +0000
committerGerrit Code Review <noreply-gerritcodereview@google.com>2021-08-13 06:15:17 +0000
commit1249582b9e956bc7d75fcbdb75a9ffbacc9874fc (patch)
tree82331f581d82ac5cbc459bb37cb269ce18ab32c4
parent646808104c4544ac61f06ec841367961618f5889 (diff)
parent0611bade4c5d7db17b488c9a1025fb241055fd4b (diff)
downloadsupport-1249582b9e956bc7d75fcbdb75a9ffbacc9874fc.tar.gz
Merge "Merge cherrypicks of [1795547, 1795548] into androidx-mediarouter-release" into androidx-mediarouter-release
-rw-r--r--buildSrc/src/main/kotlin/androidx/build/LibraryVersions.kt2
-rw-r--r--mediarouter/mediarouter/src/main/java/androidx/mediarouter/media/MediaRoute2ProviderServiceAdapter.java42
2 files changed, 36 insertions, 8 deletions
diff --git a/buildSrc/src/main/kotlin/androidx/build/LibraryVersions.kt b/buildSrc/src/main/kotlin/androidx/build/LibraryVersions.kt
index 17469a93644..89a3599901c 100644
--- a/buildSrc/src/main/kotlin/androidx/build/LibraryVersions.kt
+++ b/buildSrc/src/main/kotlin/androidx/build/LibraryVersions.kt
@@ -78,7 +78,7 @@ object LibraryVersions {
val LOADER = Version("1.2.0-alpha01")
val MEDIA = Version("1.3.0-alpha01")
val MEDIA2 = Version("1.1.0-alpha02")
- val MEDIAROUTER = Version("1.2.4")
+ val MEDIAROUTER = Version("1.2.5")
val NAVIGATION = Version("2.4.0-alpha01")
val PAGING = Version("3.0.0-alpha07")
val PALETTE = Version("1.1.0-alpha01")
diff --git a/mediarouter/mediarouter/src/main/java/androidx/mediarouter/media/MediaRoute2ProviderServiceAdapter.java b/mediarouter/mediarouter/src/main/java/androidx/mediarouter/media/MediaRoute2ProviderServiceAdapter.java
index a2796299f8e..966ceb4b332 100644
--- a/mediarouter/mediarouter/src/main/java/androidx/mediarouter/media/MediaRoute2ProviderServiceAdapter.java
+++ b/mediarouter/mediarouter/src/main/java/androidx/mediarouter/media/MediaRoute2ProviderServiceAdapter.java
@@ -292,10 +292,15 @@ class MediaRoute2ProviderServiceAdapter extends MediaRoute2ProviderService {
List<MediaRouteDescriptor> routeDescriptors =
(descriptor == null) ? Collections.emptyList() : descriptor.getRoutes();
- Map<String, MediaRouteDescriptor> descriptorMap =
- routeDescriptors.stream().filter(Objects::nonNull)
- // Ignores duplicated route IDs.
- .collect(Collectors.toMap(r -> r.getId(), r -> r, (fst, snd) -> fst));
+ Map<String, MediaRouteDescriptor> descriptorMap = new ArrayMap<>();
+ for (MediaRouteDescriptor desc : routeDescriptors) {
+ // If duplicate ids exist, the last one survives.
+ // Aligned with MediaRouter implementation.
+ if (desc == null) {
+ continue;
+ }
+ descriptorMap.put(desc.getId(), desc);
+ }
updateStaticSessions(descriptorMap);
// Handle duplicated IDs
@@ -487,11 +492,18 @@ class MediaRoute2ProviderServiceAdapter extends MediaRoute2ProviderService {
RoutingSessionInfo.Builder builder =
new RoutingSessionInfo.Builder(sessionId, packageName)
- .addSelectedRoute(routeId)
.setName(descriptor.getName())
.setVolumeHandling(descriptor.getVolumeHandling())
.setVolume(descriptor.getVolume())
.setVolumeMax(descriptor.getVolumeMax());
+
+ if (descriptor.getGroupMemberIds().isEmpty()) {
+ builder.addSelectedRoute(routeId);
+ } else {
+ for (String memberId : descriptor.getGroupMemberIds()) {
+ builder.addSelectedRoute(memberId);
+ }
+ }
sessionRecord.setSessionInfo(builder.build());
}
@@ -586,7 +598,7 @@ class MediaRoute2ProviderServiceAdapter extends MediaRoute2ProviderService {
}
@Override
- public boolean onControlRequest(Intent intent,
+ public boolean onControlRequest(@NonNull Intent intent,
MediaRouter.ControlRequestCallback callback) {
return mRouteController.onControlRequest(intent, callback);
}
@@ -602,11 +614,12 @@ class MediaRoute2ProviderServiceAdapter extends MediaRoute2ProviderService {
}
@Override
- public void onRemoveMemberRoute(String routeId) {
+ public void onRemoveMemberRoute(@NonNull String routeId) {
// Do nothing.
}
}
+ @RequiresApi(api = Build.VERSION_CODES.R)
final class SessionRecord {
/**
* A flag indicating whether the session is created from
@@ -707,6 +720,16 @@ class MediaRoute2ProviderServiceAdapter extends MediaRoute2ProviderService {
.setVolumeMax(groupRoute.getVolumeMax())
.setVolumeHandling(groupRoute.getVolumeHandling());
+ builder.clearSelectedRoutes();
+
+ if (groupRoute.getGroupMemberIds().isEmpty()) {
+ builder.addSelectedRoute(mRouteId);
+ } else {
+ for (String memberRouteId : groupRoute.getGroupMemberIds()) {
+ builder.addSelectedRoute(memberRouteId);
+ }
+ }
+
Bundle controlHints = sessionInfo.getControlHints();
if (controlHints == null) {
Log.w(TAG, "updateSessionInfo: controlHints is null. "
@@ -752,6 +775,11 @@ class MediaRoute2ProviderServiceAdapter extends MediaRoute2ProviderService {
}
}
+ if (DEBUG) {
+ Log.d(TAG, "updateSessionInfo: groupRoute=" + groupRoute
+ + ", sessionInfo=" + mSessionInfo);
+ }
+
if ((mFlags & (SESSION_FLAG_MR2 | SESSION_FLAG_DYNAMIC))
== (SESSION_FLAG_MR2 | SESSION_FLAG_DYNAMIC) && groupRoute != null) {
updateMemberRouteControllers(groupRoute.getId(), sessionInfo, mSessionInfo);