summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Hyundo Moon <hdmoon@google.com> 2021-03-17 06:29:55 +0000
committer Android (Google) Code Review <android-gerrit@google.com> 2021-03-17 06:29:55 +0000
commita85407a4cb7200aded750e56c51a753a0373a54f (patch)
tree5ba5dda8c5a2bcf6d2f3d5a6b317eac2dab94dbc
parent40c904fb8b09e662739c40d1c390f7861a1855e6 (diff)
parent6d5d00219542ed847a19d5b56a9e240bd63b990f (diff)
Merge "System MR2: Set clientPackageName on system routing session" into sc-dev
-rw-r--r--media/java/android/media/MediaRouter2.java32
1 files changed, 27 insertions, 5 deletions
diff --git a/media/java/android/media/MediaRouter2.java b/media/java/android/media/MediaRouter2.java
index 9566e1c7aa01..02fa0401e586 100644
--- a/media/java/android/media/MediaRouter2.java
+++ b/media/java/android/media/MediaRouter2.java
@@ -259,7 +259,8 @@ public final class MediaRouter2 {
mClientPackageName = clientPackageName;
mManagerCallback = new ManagerCallback();
mHandler = new Handler(Looper.getMainLooper());
- mSystemController = new SystemRoutingController(sManager.getSystemRoutingSession());
+ mSystemController = new SystemRoutingController(
+ ensureClientPackageNameForSystemSession(sManager.getSystemRoutingSession()));
mDiscoveryPreference = new RouteDiscoveryPreference.Builder(
sManager.getPreferredFeatures(clientPackageName), true).build();
updateAllRoutesFromManager();
@@ -691,7 +692,8 @@ public final class MediaRouter2 {
for (RoutingSessionInfo session : sessions) {
RoutingController controller;
if (session.isSystemSession()) {
- mSystemController.setRoutingSessionInfo(session);
+ mSystemController.setRoutingSessionInfo(
+ ensureClientPackageNameForSystemSession(session));
controller = mSystemController;
} else {
controller = new RoutingController(session);
@@ -1019,6 +1021,23 @@ public final class MediaRouter2 {
sManager.registerCallback(Runnable::run, mManagerCallback);
}
+ /**
+ * Returns a {@link RoutingSessionInfo} which has the client package name.
+ * The client package name is set only when the given sessionInfo doesn't have it.
+ * Should only used for system media routers.
+ */
+ private RoutingSessionInfo ensureClientPackageNameForSystemSession(
+ @NonNull RoutingSessionInfo sessionInfo) {
+ if (!sessionInfo.isSystemSession()
+ || !TextUtils.isEmpty(sessionInfo.getClientPackageName())) {
+ return sessionInfo;
+ }
+
+ return new RoutingSessionInfo.Builder(sessionInfo)
+ .setClientPackageName(mClientPackageName)
+ .build();
+ }
+
private List<MediaRoute2Info> filterRoutes(List<MediaRoute2Info> routes,
RouteDiscoveryPreference discoveryRequest) {
return routes.stream()
@@ -1942,7 +1961,8 @@ public final class MediaRouter2 {
RoutingController oldController;
if (oldSession.isSystemSession()) {
- mSystemController.setRoutingSessionInfo(oldSession);
+ mSystemController.setRoutingSessionInfo(
+ ensureClientPackageNameForSystemSession(oldSession));
oldController = mSystemController;
} else {
oldController = new RoutingController(oldSession);
@@ -1950,7 +1970,8 @@ public final class MediaRouter2 {
RoutingController newController;
if (newSession.isSystemSession()) {
- mSystemController.setRoutingSessionInfo(newSession);
+ mSystemController.setRoutingSessionInfo(
+ ensureClientPackageNameForSystemSession(newSession));
newController = mSystemController;
} else {
newController = new RoutingController(newSession);
@@ -1978,7 +1999,8 @@ public final class MediaRouter2 {
RoutingController controller;
if (session.isSystemSession()) {
- mSystemController.setRoutingSessionInfo(session);
+ mSystemController.setRoutingSessionInfo(
+ ensureClientPackageNameForSystemSession(session));
controller = mSystemController;
} else {
controller = new RoutingController(session);