diff options
| author | 2021-03-17 06:29:55 +0000 | |
|---|---|---|
| committer | 2021-03-17 06:29:55 +0000 | |
| commit | a85407a4cb7200aded750e56c51a753a0373a54f (patch) | |
| tree | 5ba5dda8c5a2bcf6d2f3d5a6b317eac2dab94dbc | |
| parent | 40c904fb8b09e662739c40d1c390f7861a1855e6 (diff) | |
| parent | 6d5d00219542ed847a19d5b56a9e240bd63b990f (diff) | |
Merge "System MR2: Set clientPackageName on system routing session" into sc-dev
| -rw-r--r-- | media/java/android/media/MediaRouter2.java | 32 |
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); |