Merge "MediaRouter: Rename requestID with uniqueRequestId" into rvc-dev am: 370d6454d1

Change-Id: Id3052da6826e9cc44e39e45c5cd44a7ee229eec1
This commit is contained in:
TreeHugger Robot
2020-03-31 13:01:51 +00:00
committed by Automerger Merge Worker

View File

@@ -1114,9 +1114,9 @@ class MediaRouter2ServiceImpl {
@Override @Override
public void onSessionCreated(@NonNull MediaRoute2Provider provider, public void onSessionCreated(@NonNull MediaRoute2Provider provider,
long requestId, @NonNull RoutingSessionInfo sessionInfo) { long uniqueRequestId, @NonNull RoutingSessionInfo sessionInfo) {
sendMessage(PooledLambda.obtainMessage(UserHandler::onSessionCreatedOnHandler, sendMessage(PooledLambda.obtainMessage(UserHandler::onSessionCreatedOnHandler,
this, provider, requestId, sessionInfo)); this, provider, uniqueRequestId, sessionInfo));
} }
@@ -1135,10 +1135,10 @@ class MediaRouter2ServiceImpl {
} }
@Override @Override
public void onRequestFailed(@NonNull MediaRoute2Provider provider, long requestId, public void onRequestFailed(@NonNull MediaRoute2Provider provider, long uniqueRequestId,
int reason) { int reason) {
sendMessage(PooledLambda.obtainMessage(UserHandler::onRequestFailedOnHandler, sendMessage(PooledLambda.obtainMessage(UserHandler::onRequestFailedOnHandler,
this, provider, requestId, reason)); this, provider, uniqueRequestId, reason));
} }
@Nullable @Nullable
@@ -1229,7 +1229,7 @@ class MediaRouter2ServiceImpl {
return -1; return -1;
} }
private void requestCreateSessionOnHandler(long requestId, private void requestCreateSessionOnHandler(long uniqueRequestId,
@NonNull RouterRecord routerRecord, @Nullable ManagerRecord managerRecord, @NonNull RouterRecord routerRecord, @Nullable ManagerRecord managerRecord,
@NonNull MediaRoute2Info route, @Nullable Bundle sessionHints) { @NonNull MediaRoute2Info route, @Nullable Bundle sessionHints) {
@@ -1237,20 +1237,21 @@ class MediaRouter2ServiceImpl {
if (provider == null) { if (provider == null) {
Slog.w(TAG, "Ignoring session creation request since no provider found for" Slog.w(TAG, "Ignoring session creation request since no provider found for"
+ " given route=" + route); + " given route=" + route);
notifySessionCreationFailedToRouter(routerRecord, toOriginalRequestId(requestId)); notifySessionCreationFailedToRouter(routerRecord,
toOriginalRequestId(uniqueRequestId));
return; return;
} }
SessionCreationRequest request = SessionCreationRequest request =
new SessionCreationRequest(routerRecord, requestId, route, managerRecord); new SessionCreationRequest(routerRecord, uniqueRequestId, route, managerRecord);
mSessionCreationRequests.add(request); mSessionCreationRequests.add(request);
provider.requestCreateSession(requestId, routerRecord.mPackageName, provider.requestCreateSession(uniqueRequestId, routerRecord.mPackageName,
route.getOriginalId(), sessionHints); route.getOriginalId(), sessionHints);
} }
// routerRecord can be null if the session is system's. // routerRecord can be null if the session is system's.
private void selectRouteOnHandler(long requestId, @Nullable RouterRecord routerRecord, private void selectRouteOnHandler(long uniqueRequestId, @Nullable RouterRecord routerRecord,
@NonNull String uniqueSessionId, @NonNull MediaRoute2Info route) { @NonNull String uniqueSessionId, @NonNull MediaRoute2Info route) {
if (!checkArgumentsForSessionControl(routerRecord, uniqueSessionId, route, if (!checkArgumentsForSessionControl(routerRecord, uniqueSessionId, route,
"selecting")) { "selecting")) {
@@ -1263,11 +1264,13 @@ class MediaRouter2ServiceImpl {
if (provider == null) { if (provider == null) {
return; return;
} }
provider.selectRoute(requestId, getOriginalId(uniqueSessionId), route.getOriginalId()); provider.selectRoute(uniqueRequestId, getOriginalId(uniqueSessionId),
route.getOriginalId());
} }
// routerRecord can be null if the session is system's. // routerRecord can be null if the session is system's.
private void deselectRouteOnHandler(long requestId, @Nullable RouterRecord routerRecord, private void deselectRouteOnHandler(long uniqueRequestId,
@Nullable RouterRecord routerRecord,
@NonNull String uniqueSessionId, @NonNull MediaRoute2Info route) { @NonNull String uniqueSessionId, @NonNull MediaRoute2Info route) {
if (!checkArgumentsForSessionControl(routerRecord, uniqueSessionId, route, if (!checkArgumentsForSessionControl(routerRecord, uniqueSessionId, route,
"deselecting")) { "deselecting")) {
@@ -1281,12 +1284,13 @@ class MediaRouter2ServiceImpl {
return; return;
} }
provider.deselectRoute(requestId, getOriginalId(uniqueSessionId), provider.deselectRoute(uniqueRequestId, getOriginalId(uniqueSessionId),
route.getOriginalId()); route.getOriginalId());
} }
// routerRecord can be null if the session is system's. // routerRecord can be null if the session is system's.
private void transferToRouteOnHandler(long requestId, @Nullable RouterRecord routerRecord, private void transferToRouteOnHandler(long uniqueRequestId,
@Nullable RouterRecord routerRecord,
@NonNull String uniqueSessionId, @NonNull MediaRoute2Info route) { @NonNull String uniqueSessionId, @NonNull MediaRoute2Info route) {
if (!checkArgumentsForSessionControl(routerRecord, uniqueSessionId, route, if (!checkArgumentsForSessionControl(routerRecord, uniqueSessionId, route,
"transferring to")) { "transferring to")) {
@@ -1299,7 +1303,7 @@ class MediaRouter2ServiceImpl {
if (provider == null) { if (provider == null) {
return; return;
} }
provider.transferToRoute(requestId, getOriginalId(uniqueSessionId), provider.transferToRoute(uniqueRequestId, getOriginalId(uniqueSessionId),
route.getOriginalId()); route.getOriginalId());
} }
@@ -1342,25 +1346,25 @@ class MediaRouter2ServiceImpl {
return true; return true;
} }
private void setRouteVolumeOnHandler(long requestId, @NonNull MediaRoute2Info route, private void setRouteVolumeOnHandler(long uniqueRequestId, @NonNull MediaRoute2Info route,
int volume) { int volume) {
final MediaRoute2Provider provider = findProvider(route.getProviderId()); final MediaRoute2Provider provider = findProvider(route.getProviderId());
if (provider == null) { if (provider == null) {
Slog.w(TAG, "setRouteVolume: couldn't find provider for route=" + route); Slog.w(TAG, "setRouteVolume: couldn't find provider for route=" + route);
return; return;
} }
provider.setRouteVolume(requestId, route.getOriginalId(), volume); provider.setRouteVolume(uniqueRequestId, route.getOriginalId(), volume);
} }
private void setSessionVolumeOnHandler(long requestId, @NonNull String uniqueSessionId, private void setSessionVolumeOnHandler(long uniqueRequestId,
int volume) { @NonNull String uniqueSessionId, int volume) {
final MediaRoute2Provider provider = findProvider(getProviderId(uniqueSessionId)); final MediaRoute2Provider provider = findProvider(getProviderId(uniqueSessionId));
if (provider == null) { if (provider == null) {
Slog.w(TAG, "setSessionVolume: couldn't find provider for session " Slog.w(TAG, "setSessionVolume: couldn't find provider for session "
+ "id=" + uniqueSessionId); + "id=" + uniqueSessionId);
return; return;
} }
provider.setSessionVolume(requestId, getOriginalId(uniqueSessionId), volume); provider.setSessionVolume(uniqueRequestId, getOriginalId(uniqueSessionId), volume);
} }
private void releaseSessionOnHandler(long uniqueRequestId, private void releaseSessionOnHandler(long uniqueRequestId,
@@ -1398,10 +1402,10 @@ class MediaRouter2ServiceImpl {
} }
private void onSessionCreatedOnHandler(@NonNull MediaRoute2Provider provider, private void onSessionCreatedOnHandler(@NonNull MediaRoute2Provider provider,
long requestId, @NonNull RoutingSessionInfo sessionInfo) { long uniqueRequestId, @NonNull RoutingSessionInfo sessionInfo) {
notifySessionCreatedToManagers(getManagers(), sessionInfo); notifySessionCreatedToManagers(getManagers(), sessionInfo);
if (requestId == REQUEST_ID_NONE) { if (uniqueRequestId == REQUEST_ID_NONE) {
// The session is created without any matching request. // The session is created without any matching request.
return; return;
} }
@@ -1409,7 +1413,7 @@ class MediaRouter2ServiceImpl {
SessionCreationRequest matchingRequest = null; SessionCreationRequest matchingRequest = null;
for (SessionCreationRequest request : mSessionCreationRequests) { for (SessionCreationRequest request : mSessionCreationRequests) {
if (request.mRequestId == requestId if (request.mUniqueRequestId == uniqueRequestId
&& TextUtils.equals( && TextUtils.equals(
request.mRoute.getProviderId(), provider.getUniqueId())) { request.mRoute.getProviderId(), provider.getUniqueId())) {
matchingRequest = request; matchingRequest = request;
@@ -1419,7 +1423,7 @@ class MediaRouter2ServiceImpl {
if (matchingRequest == null) { if (matchingRequest == null) {
Slog.w(TAG, "Ignoring session creation result for unknown request. " Slog.w(TAG, "Ignoring session creation result for unknown request. "
+ "requestId=" + requestId + ", sessionInfo=" + sessionInfo); + "uniqueRequestId=" + uniqueRequestId + ", sessionInfo=" + sessionInfo);
return; return;
} }
@@ -1428,7 +1432,7 @@ class MediaRouter2ServiceImpl {
if (sessionInfo == null) { if (sessionInfo == null) {
// Failed // Failed
notifySessionCreationFailedToRouter(matchingRequest.mRouterRecord, notifySessionCreationFailedToRouter(matchingRequest.mRouterRecord,
toOriginalRequestId(requestId)); toOriginalRequestId(uniqueRequestId));
return; return;
} }
@@ -1438,15 +1442,15 @@ class MediaRouter2ServiceImpl {
if (!sessionInfo.getSelectedRoutes().contains(originalRouteId)) { if (!sessionInfo.getSelectedRoutes().contains(originalRouteId)) {
Slog.w(TAG, "Created session doesn't match the original request." Slog.w(TAG, "Created session doesn't match the original request."
+ " originalRouteId=" + originalRouteId + " originalRouteId=" + originalRouteId
+ ", requestId=" + requestId + ", sessionInfo=" + sessionInfo); + ", uniqueRequestId=" + uniqueRequestId + ", sessionInfo=" + sessionInfo);
notifySessionCreationFailedToRouter(matchingRequest.mRouterRecord, notifySessionCreationFailedToRouter(matchingRequest.mRouterRecord,
toOriginalRequestId(requestId)); toOriginalRequestId(uniqueRequestId));
return; return;
} }
// Succeeded // Succeeded
notifySessionCreatedToRouter(matchingRequest.mRouterRecord, notifySessionCreatedToRouter(matchingRequest.mRouterRecord,
toOriginalRequestId(requestId), sessionInfo); toOriginalRequestId(uniqueRequestId), sessionInfo);
mSessionToRouterMap.put(sessionInfo.getId(), routerRecord); mSessionToRouterMap.put(sessionInfo.getId(), routerRecord);
} }
@@ -1487,16 +1491,16 @@ class MediaRouter2ServiceImpl {
} }
private void onRequestFailedOnHandler(@NonNull MediaRoute2Provider provider, private void onRequestFailedOnHandler(@NonNull MediaRoute2Provider provider,
long requestId, int reason) { long uniqueRequestId, int reason) {
if (handleSessionCreationRequestFailed(provider, requestId, reason)) { if (handleSessionCreationRequestFailed(provider, uniqueRequestId, reason)) {
return; return;
} }
final int requesterId = toRequesterId(requestId); final int requesterId = toRequesterId(uniqueRequestId);
for (ManagerRecord manager : getManagerRecords()) { for (ManagerRecord manager : getManagerRecords()) {
if (manager.mManagerId == requesterId) { if (manager.mManagerId == requesterId) {
notifyRequestFailedToManager( notifyRequestFailedToManager(
manager.mManager, toOriginalRequestId(requestId), reason); manager.mManager, toOriginalRequestId(uniqueRequestId), reason);
return; return;
} }
} }
@@ -1505,16 +1509,17 @@ class MediaRouter2ServiceImpl {
// TODO: Notify router too when the related callback is introduced. // TODO: Notify router too when the related callback is introduced.
} }
// TODO: Find a way to prevent providers from notifying error on random requestId. // TODO: Find a way to prevent providers from notifying error on random uniqueRequestId.
// Solutions can be: // Solutions can be:
// 1) Record the other type of requests too (not only session creation request) // 1) Record the other type of requests too (not only session creation request)
// 2) Throw exception on providers when they try to notify error on random requestId. // 2) Throw exception on providers when they try to notify error on
// random uniqueRequestId.
private boolean handleSessionCreationRequestFailed(@NonNull MediaRoute2Provider provider, private boolean handleSessionCreationRequestFailed(@NonNull MediaRoute2Provider provider,
long requestId, int reason) { long uniqueRequestId, int reason) {
// Check whether the failure is about creating a session // Check whether the failure is about creating a session
SessionCreationRequest matchingRequest = null; SessionCreationRequest matchingRequest = null;
for (SessionCreationRequest request : mSessionCreationRequests) { for (SessionCreationRequest request : mSessionCreationRequests) {
if (request.mRequestId == requestId && TextUtils.equals( if (request.mUniqueRequestId == uniqueRequestId && TextUtils.equals(
request.mRoute.getProviderId(), provider.getUniqueId())) { request.mRoute.getProviderId(), provider.getUniqueId())) {
matchingRequest = request; matchingRequest = request;
break; break;
@@ -1532,10 +1537,10 @@ class MediaRouter2ServiceImpl {
// The call should be made by either MediaRouter2 or MediaRouter2Manager. // The call should be made by either MediaRouter2 or MediaRouter2Manager.
if (matchingRequest.mRequestedManagerRecord == null) { if (matchingRequest.mRequestedManagerRecord == null) {
notifySessionCreationFailedToRouter( notifySessionCreationFailedToRouter(
matchingRequest.mRouterRecord, toOriginalRequestId(requestId)); matchingRequest.mRouterRecord, toOriginalRequestId(uniqueRequestId));
} else { } else {
notifyRequestFailedToManager(matchingRequest.mRequestedManagerRecord.mManager, notifyRequestFailedToManager(matchingRequest.mRequestedManagerRecord.mManager,
toOriginalRequestId(requestId), reason); toOriginalRequestId(uniqueRequestId), reason);
} }
return true; return true;
} }
@@ -1811,16 +1816,16 @@ class MediaRouter2ServiceImpl {
final class SessionCreationRequest { final class SessionCreationRequest {
public final RouterRecord mRouterRecord; public final RouterRecord mRouterRecord;
public final long mRequestId; public final long mUniqueRequestId;
public final MediaRoute2Info mRoute; public final MediaRoute2Info mRoute;
public final ManagerRecord mRequestedManagerRecord; public final ManagerRecord mRequestedManagerRecord;
// requestedManagerRecord is not null only when the request is made by manager. // requestedManagerRecord is not null only when the request is made by manager.
SessionCreationRequest(@NonNull RouterRecord routerRecord, long requestId, SessionCreationRequest(@NonNull RouterRecord routerRecord, long uniqueRequestId,
@NonNull MediaRoute2Info route, @NonNull MediaRoute2Info route,
@Nullable ManagerRecord requestedManagerRecord) { @Nullable ManagerRecord requestedManagerRecord) {
mRouterRecord = routerRecord; mRouterRecord = routerRecord;
mRequestId = requestId; mUniqueRequestId = uniqueRequestId;
mRoute = route; mRoute = route;
mRequestedManagerRecord = requestedManagerRecord; mRequestedManagerRecord = requestedManagerRecord;
} }