Merge "System MR2: Set clientPackageName on system routing session" into sc-dev

This commit is contained in:
Hyundo Moon
2021-03-17 06:29:55 +00:00
committed by Android (Google) Code Review

View File

@@ -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);