Merge "MediaRouter: Rename requestID with uniqueRequestId" into rvc-dev am: 370d6454d1
Change-Id: Id3052da6826e9cc44e39e45c5cd44a7ee229eec1
This commit is contained in:
@@ -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;
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user