Put requestId first in notifySessionCreated() arguments

For consistency, this CL applies the same changes also to the
internal methods.

Bug: 150922531
Test: CTS and mediaroutertest (Passed except already failing methods)
Change-Id: Iac0ab78464b16212cb3ad46519f5892e8d1b69d9
This commit is contained in:
Hyundo Moon
2020-03-06 17:19:42 +09:00
parent ac8a5397bc
commit f8e49f4bf7
14 changed files with 259 additions and 249 deletions

View File

@@ -26908,7 +26908,7 @@ package android.media {
method @Nullable public final android.media.RoutingSessionInfo getSessionInfo(@NonNull String);
method public final void notifyRequestFailed(long, int);
method public final void notifyRoutes(@NonNull java.util.Collection<android.media.MediaRoute2Info>);
method public final void notifySessionCreated(@NonNull android.media.RoutingSessionInfo, long);
method public final void notifySessionCreated(long, @NonNull android.media.RoutingSessionInfo);
method public final void notifySessionReleased(@NonNull String);
method public final void notifySessionUpdated(@NonNull android.media.RoutingSessionInfo);
method @CallSuper @Nullable public android.os.IBinder onBind(@NonNull android.content.Intent);

View File

@@ -29,13 +29,13 @@ oneway interface IMediaRoute2ProviderService {
// MediaRoute2ProviderService#MediaRoute2ProviderServiceStub for readability.
void setCallback(IMediaRoute2ProviderServiceCallback callback);
void updateDiscoveryPreference(in RouteDiscoveryPreference discoveryPreference);
void setRouteVolume(String routeId, int volume, long requestId);
void setRouteVolume(long requestId, String routeId, int volume);
void requestCreateSession(String packageName, String routeId, long requestId,
void requestCreateSession(long requestId, String packageName, String routeId,
in @nullable Bundle sessionHints);
void selectRoute(String sessionId, String routeId, long requestId);
void deselectRoute(String sessionId, String routeId, long requestId);
void transferToRoute(String sessionId, String routeId, long requestId);
void setSessionVolume(String sessionId, int volume, long requestId);
void releaseSession(String sessionId, long requestId);
void selectRoute(long requestId, String sessionId, String routeId);
void deselectRoute(long requestId, String sessionId, String routeId);
void transferToRoute(long requestId, String sessionId, String routeId);
void setSessionVolume(long requestId, String sessionId, int volume);
void releaseSession(long requestId, String sessionId);
}

View File

@@ -27,7 +27,7 @@ import android.os.Bundle;
oneway interface IMediaRoute2ProviderServiceCallback {
// TODO: Change it to updateRoutes?
void updateState(in MediaRoute2ProviderInfo providerInfo);
void notifySessionCreated(in RoutingSessionInfo sessionInfo, long requestId);
void notifySessionCreated(long requestId, in RoutingSessionInfo sessionInfo);
void notifySessionUpdated(in RoutingSessionInfo sessionInfo);
void notifySessionReleased(in RoutingSessionInfo sessionInfo);
void notifyRequestFailed(long requestId, int reason);

View File

@@ -28,7 +28,7 @@ oneway interface IMediaRouter2 {
void notifyRoutesAdded(in List<MediaRoute2Info> routes);
void notifyRoutesRemoved(in List<MediaRoute2Info> routes);
void notifyRoutesChanged(in List<MediaRoute2Info> routes);
void notifySessionCreated(in @nullable RoutingSessionInfo sessionInfo, int requestId);
void notifySessionCreated(int requestId, in @nullable RoutingSessionInfo sessionInfo);
void notifySessionInfoChanged(in RoutingSessionInfo sessionInfo);
void notifySessionReleased(in RoutingSessionInfo sessionInfo);
}

View File

@@ -57,8 +57,8 @@ interface IMediaRouterService {
in RouteDiscoveryPreference preference);
void setRouteVolumeWithRouter2(IMediaRouter2 router, in MediaRoute2Info route, int volume);
void requestCreateSessionWithRouter2(IMediaRouter2 router, in MediaRoute2Info route,
int requestId, in @nullable Bundle sessionHints);
void requestCreateSessionWithRouter2(IMediaRouter2 router, int requestId,
in MediaRoute2Info route, in @nullable Bundle sessionHints);
void selectRouteWithRouter2(IMediaRouter2 router, String sessionId, in MediaRoute2Info route);
void deselectRouteWithRouter2(IMediaRouter2 router, String sessionId, in MediaRoute2Info route);
void transferToRouteWithRouter2(IMediaRouter2 router, String sessionId,
@@ -70,18 +70,18 @@ interface IMediaRouterService {
List<RoutingSessionInfo> getActiveSessions(IMediaRouter2Manager manager);
void registerManager(IMediaRouter2Manager manager, String packageName);
void unregisterManager(IMediaRouter2Manager manager);
void setRouteVolumeWithManager(IMediaRouter2Manager manager, in MediaRoute2Info route,
int volume, int requestId);
void setRouteVolumeWithManager(IMediaRouter2Manager manager, int requestId,
in MediaRoute2Info route, int volume);
void requestCreateSessionWithManager(IMediaRouter2Manager manager, String packageName,
in @nullable MediaRoute2Info route, int requestId);
void selectRouteWithManager(IMediaRouter2Manager manager, String sessionId,
in MediaRoute2Info route, int requestId);
void deselectRouteWithManager(IMediaRouter2Manager manager, String sessionId,
in MediaRoute2Info route, int requestId);
void transferToRouteWithManager(IMediaRouter2Manager manager, String sessionId,
in MediaRoute2Info route, int requestId);
void setSessionVolumeWithManager(IMediaRouter2Manager manager, String sessionId, int volume,
int requestId);
void releaseSessionWithManager(IMediaRouter2Manager manager, String sessionId, int requestId);
void requestCreateSessionWithManager(IMediaRouter2Manager manager, int requestId,
String packageName, in @nullable MediaRoute2Info route);
void selectRouteWithManager(IMediaRouter2Manager manager, int requestId,
String sessionId, in MediaRoute2Info route);
void deselectRouteWithManager(IMediaRouter2Manager manager, int requestId,
String sessionId, in MediaRoute2Info route);
void transferToRouteWithManager(IMediaRouter2Manager manager, int requestId,
String sessionId, in MediaRoute2Info route);
void setSessionVolumeWithManager(IMediaRouter2Manager manager, int requestId,
String sessionId, int volume);
void releaseSessionWithManager(IMediaRouter2Manager manager, int requestId, String sessionId);
}

View File

@@ -78,11 +78,11 @@ public abstract class MediaRoute2ProviderService extends Service {
public static final String SERVICE_INTERFACE = "android.media.MediaRoute2ProviderService";
/**
* The request ID to pass {@link #notifySessionCreated(RoutingSessionInfo, long)}
* The request ID to pass {@link #notifySessionCreated(long, RoutingSessionInfo)}
* when {@link MediaRoute2ProviderService} created a session although there was no creation
* request.
*
* @see #notifySessionCreated(RoutingSessionInfo, long)
* @see #notifySessionCreated(long, RoutingSessionInfo)
*/
public static final long REQUEST_ID_NONE = 0;
@@ -218,16 +218,16 @@ public abstract class MediaRoute2ProviderService extends Service {
* If this session is created without any creation request, use {@link #REQUEST_ID_NONE}
* as the request ID.
*
* @param sessionInfo information of the new session.
* The {@link RoutingSessionInfo#getId() id} of the session must be unique.
* @param requestId id of the previous request to create this session provided in
* {@link #onCreateSession(long, String, String, Bundle)}. Can be
* {@link #REQUEST_ID_NONE} if this session is created without any request.
* @param sessionInfo information of the new session.
* The {@link RoutingSessionInfo#getId() id} of the session must be unique.
* @see #onCreateSession(long, String, String, Bundle)
* @see #getSessionInfo(String)
*/
public final void notifySessionCreated(@NonNull RoutingSessionInfo sessionInfo,
long requestId) {
public final void notifySessionCreated(long requestId,
@NonNull RoutingSessionInfo sessionInfo) {
Objects.requireNonNull(sessionInfo, "sessionInfo must not be null");
String sessionId = sessionInfo.getId();
@@ -247,7 +247,7 @@ public abstract class MediaRoute2ProviderService extends Service {
// TODO: Calling binder calls in multiple thread may cause timing issue.
// Consider to change implementations to avoid the problems.
// For example, post binder calls, always send all sessions at once, etc.
mRemoteCallback.notifySessionCreated(sessionInfo, requestId);
mRemoteCallback.notifySessionCreated(requestId, sessionInfo);
} catch (RemoteException ex) {
Log.w(TAG, "Failed to notify session created.");
}
@@ -337,7 +337,7 @@ public abstract class MediaRoute2ProviderService extends Service {
* Called when the service receives a request to create a session.
* <p>
* You should create and maintain your own session and notifies the client of
* session info. Call {@link #notifySessionCreated(RoutingSessionInfo, long)}
* session info. Call {@link #notifySessionCreated(long, RoutingSessionInfo)}
* with the given {@code requestId} to notify the information of a new session.
* The created session must have the same route feature and must include the given route
* specified by {@code routeId}.
@@ -504,7 +504,7 @@ public abstract class MediaRoute2ProviderService extends Service {
}
@Override
public void setRouteVolume(String routeId, int volume, long requestId) {
public void setRouteVolume(long requestId, String routeId, int volume) {
if (!checkCallerisSystem()) {
return;
}
@@ -513,7 +513,7 @@ public abstract class MediaRoute2ProviderService extends Service {
}
@Override
public void requestCreateSession(String packageName, String routeId, long requestId,
public void requestCreateSession(long requestId, String packageName, String routeId,
@Nullable Bundle requestCreateSession) {
if (!checkCallerisSystem()) {
return;
@@ -524,7 +524,7 @@ public abstract class MediaRoute2ProviderService extends Service {
}
@Override
public void selectRoute(String sessionId, String routeId, long requestId) {
public void selectRoute(long requestId, String sessionId, String routeId) {
if (!checkCallerisSystem()) {
return;
}
@@ -537,7 +537,7 @@ public abstract class MediaRoute2ProviderService extends Service {
}
@Override
public void deselectRoute(String sessionId, String routeId, long requestId) {
public void deselectRoute(long requestId, String sessionId, String routeId) {
if (!checkCallerisSystem()) {
return;
}
@@ -550,7 +550,7 @@ public abstract class MediaRoute2ProviderService extends Service {
}
@Override
public void transferToRoute(String sessionId, String routeId, long requestId) {
public void transferToRoute(long requestId, String sessionId, String routeId) {
if (!checkCallerisSystem()) {
return;
}
@@ -563,7 +563,7 @@ public abstract class MediaRoute2ProviderService extends Service {
}
@Override
public void setSessionVolume(String sessionId, int volume, long requestId) {
public void setSessionVolume(long requestId, String sessionId, int volume) {
if (!checkCallerisSystem()) {
return;
}
@@ -572,7 +572,7 @@ public abstract class MediaRoute2ProviderService extends Service {
}
@Override
public void releaseSession(String sessionId, long requestId) {
public void releaseSession(long requestId, String sessionId) {
if (!checkCallerisSystem()) {
return;
}

View File

@@ -429,11 +429,11 @@ public class MediaRouter2 {
if (stub != null) {
try {
mMediaRouterService.requestCreateSessionWithRouter2(
stub, route, requestId, controllerHints);
stub, requestId, route, controllerHints);
} catch (RemoteException ex) {
Log.e(TAG, "transfer: Unable to request to create controller.", ex);
mHandler.sendMessage(obtainMessage(MediaRouter2::createControllerOnHandler,
MediaRouter2.this, null, requestId));
MediaRouter2.this, requestId, null));
}
}
}
@@ -559,7 +559,7 @@ public class MediaRouter2 {
* <p>
* Pass {@code null} to sessionInfo for the failure case.
*/
void createControllerOnHandler(@Nullable RoutingSessionInfo sessionInfo, int requestId) {
void createControllerOnHandler(int requestId, @Nullable RoutingSessionInfo sessionInfo) {
ControllerCreationRequest matchingRequest = null;
for (ControllerCreationRequest request : mControllerCreationRequests) {
if (request.mRequestId == requestId) {
@@ -1378,9 +1378,9 @@ public class MediaRouter2 {
}
@Override
public void notifySessionCreated(@Nullable RoutingSessionInfo sessionInfo, int requestId) {
public void notifySessionCreated(int requestId, @Nullable RoutingSessionInfo sessionInfo) {
mHandler.sendMessage(obtainMessage(MediaRouter2::createControllerOnHandler,
MediaRouter2.this, sessionInfo, requestId));
MediaRouter2.this, requestId, sessionInfo));
}
@Override

View File

@@ -329,7 +329,7 @@ public class MediaRouter2Manager {
try {
int requestId = mNextRequestId.getAndIncrement();
mMediaRouterService.requestCreateSessionWithManager(
client, sessionInfo.getClientPackageName(), route, requestId);
client, requestId, sessionInfo.getClientPackageName(), route);
} catch (RemoteException ex) {
Log.e(TAG, "Unable to select media route", ex);
}
@@ -373,7 +373,7 @@ public class MediaRouter2Manager {
if (client != null) {
try {
int requestId = mNextRequestId.getAndIncrement();
mMediaRouterService.setRouteVolumeWithManager(client, route, volume, requestId);
mMediaRouterService.setRouteVolumeWithManager(client, requestId, route, volume);
} catch (RemoteException ex) {
Log.e(TAG, "Unable to send control request.", ex);
}
@@ -406,7 +406,7 @@ public class MediaRouter2Manager {
try {
int requestId = mNextRequestId.getAndIncrement();
mMediaRouterService.setSessionVolumeWithManager(
client, sessionInfo.getId(), volume, requestId);
client, requestId, sessionInfo.getId(), volume);
} catch (RemoteException ex) {
Log.e(TAG, "Unable to send control request.", ex);
}
@@ -594,7 +594,7 @@ public class MediaRouter2Manager {
try {
int requestId = mNextRequestId.getAndIncrement();
mMediaRouterService.selectRouteWithManager(
mClient, sessionInfo.getId(), route, requestId);
mClient, requestId, sessionInfo.getId(), route);
} catch (RemoteException ex) {
Log.e(TAG, "selectRoute: Failed to send a request.", ex);
}
@@ -639,7 +639,7 @@ public class MediaRouter2Manager {
try {
int requestId = mNextRequestId.getAndIncrement();
mMediaRouterService.deselectRouteWithManager(
mClient, sessionInfo.getId(), route, requestId);
mClient, requestId, sessionInfo.getId(), route);
} catch (RemoteException ex) {
Log.e(TAG, "deselectRoute: Failed to send a request.", ex);
}
@@ -675,7 +675,7 @@ public class MediaRouter2Manager {
try {
int requestId = mNextRequestId.getAndIncrement();
mMediaRouterService.transferToRouteWithManager(
mClient, sessionInfo.getId(), route, requestId);
mClient, requestId, sessionInfo.getId(), route);
} catch (RemoteException ex) {
Log.e(TAG, "transferToRoute: Failed to send a request.", ex);
}
@@ -703,7 +703,7 @@ public class MediaRouter2Manager {
try {
int requestId = mNextRequestId.getAndIncrement();
mMediaRouterService.releaseSessionWithManager(
mClient, sessionInfo.getId(), requestId);
mClient, requestId, sessionInfo.getId());
} catch (RemoteException ex) {
Log.e(TAG, "releaseSession: Failed to send a request", ex);
}

View File

@@ -239,7 +239,7 @@ public class SampleMediaRoute2ProviderService extends MediaRoute2ProviderService
// Set control hints with given sessionHints
.setControlHints(sessionHints)
.build();
notifySessionCreated(sessionInfo, requestId);
notifySessionCreated(requestId, sessionInfo);
publishRoutes();
}

View File

@@ -51,17 +51,17 @@ abstract class MediaRoute2Provider {
mCallback = callback;
}
public abstract void requestCreateSession(String packageName, String routeId, long requestId,
public abstract void requestCreateSession(long requestId, String packageName, String routeId,
@Nullable Bundle sessionHints);
public abstract void releaseSession(String sessionId, long requestId);
public abstract void releaseSession(long requestId, String sessionId);
public abstract void updateDiscoveryPreference(RouteDiscoveryPreference discoveryPreference);
public abstract void selectRoute(String sessionId, String routeId, long requestId);
public abstract void deselectRoute(String sessionId, String routeId, long requestId);
public abstract void transferToRoute(String sessionId, String routeId, long requestId);
public abstract void selectRoute(long requestId, String sessionId, String routeId);
public abstract void deselectRoute(long requestId, String sessionId, String routeId);
public abstract void transferToRoute(long requestId, String sessionId, String routeId);
public abstract void setRouteVolume(String routeId, int volume, long requestId);
public abstract void setSessionVolume(String sessionId, int volume, long requestId);
public abstract void setRouteVolume(long requestId, String routeId, int volume);
public abstract void setSessionVolume(long requestId, String sessionId, int volume);
@NonNull
public String getUniqueId() {
@@ -110,7 +110,7 @@ abstract class MediaRoute2Provider {
public interface Callback {
void onProviderStateChanged(@Nullable MediaRoute2Provider provider);
void onSessionCreated(@NonNull MediaRoute2Provider provider,
@Nullable RoutingSessionInfo sessionInfo, long requestId);
long requestId, @Nullable RoutingSessionInfo sessionInfo);
void onSessionUpdated(@NonNull MediaRoute2Provider provider,
@NonNull RoutingSessionInfo sessionInfo);
void onSessionReleased(@NonNull MediaRoute2Provider provider,

View File

@@ -78,18 +78,18 @@ final class MediaRoute2ProviderServiceProxy extends MediaRoute2Provider
}
@Override
public void requestCreateSession(String packageName, String routeId, long requestId,
public void requestCreateSession(long requestId, String packageName, String routeId,
Bundle sessionHints) {
if (mConnectionReady) {
mActiveConnection.requestCreateSession(packageName, routeId, requestId, sessionHints);
mActiveConnection.requestCreateSession(requestId, packageName, routeId, sessionHints);
updateBinding();
}
}
@Override
public void releaseSession(String sessionId, long requestId) {
public void releaseSession(long requestId, String sessionId) {
if (mConnectionReady) {
mActiveConnection.releaseSession(sessionId, requestId);
mActiveConnection.releaseSession(requestId, sessionId);
updateBinding();
}
}
@@ -103,38 +103,38 @@ final class MediaRoute2ProviderServiceProxy extends MediaRoute2Provider
}
@Override
public void selectRoute(String sessionId, String routeId, long requestId) {
public void selectRoute(long requestId, String sessionId, String routeId) {
if (mConnectionReady) {
mActiveConnection.selectRoute(sessionId, routeId, requestId);
mActiveConnection.selectRoute(requestId, sessionId, routeId);
}
}
@Override
public void deselectRoute(String sessionId, String routeId, long requestId) {
public void deselectRoute(long requestId, String sessionId, String routeId) {
if (mConnectionReady) {
mActiveConnection.deselectRoute(sessionId, routeId, requestId);
mActiveConnection.deselectRoute(requestId, sessionId, routeId);
}
}
@Override
public void transferToRoute(String sessionId, String routeId, long requestId) {
public void transferToRoute(long requestId, String sessionId, String routeId) {
if (mConnectionReady) {
mActiveConnection.transferToRoute(sessionId, routeId, requestId);
mActiveConnection.transferToRoute(requestId, sessionId, routeId);
}
}
@Override
public void setRouteVolume(String routeId, int volume, long requestId) {
public void setRouteVolume(long requestId, String routeId, int volume) {
if (mConnectionReady) {
mActiveConnection.setRouteVolume(routeId, volume, requestId);
mActiveConnection.setRouteVolume(requestId, routeId, volume);
updateBinding();
}
}
@Override
public void setSessionVolume(String sessionId, int volume, long requestId) {
public void setSessionVolume(long requestId, String sessionId, int volume) {
if (mConnectionReady) {
mActiveConnection.setSessionVolume(sessionId, volume, requestId);
mActiveConnection.setSessionVolume(requestId, sessionId, volume);
updateBinding();
}
}
@@ -294,8 +294,8 @@ final class MediaRoute2ProviderServiceProxy extends MediaRoute2Provider
setAndNotifyProviderState(providerInfo);
}
private void onSessionCreated(Connection connection, RoutingSessionInfo sessionInfo,
long requestId) {
private void onSessionCreated(Connection connection, long requestId,
RoutingSessionInfo sessionInfo) {
if (mActiveConnection != connection) {
return;
}
@@ -325,7 +325,7 @@ final class MediaRoute2ProviderServiceProxy extends MediaRoute2Provider
return;
}
mCallback.onSessionCreated(this, sessionInfo, requestId);
mCallback.onSessionCreated(this, requestId, sessionInfo);
}
private void onSessionUpdated(Connection connection, RoutingSessionInfo sessionInfo) {
@@ -452,18 +452,18 @@ final class MediaRoute2ProviderServiceProxy extends MediaRoute2Provider
mCallbackStub.dispose();
}
public void requestCreateSession(String packageName, String routeId, long requestId,
public void requestCreateSession(long requestId, String packageName, String routeId,
Bundle sessionHints) {
try {
mService.requestCreateSession(packageName, routeId, requestId, sessionHints);
mService.requestCreateSession(requestId, packageName, routeId, sessionHints);
} catch (RemoteException ex) {
Slog.e(TAG, "requestCreateSession: Failed to deliver request.");
}
}
public void releaseSession(String sessionId, long requestId) {
public void releaseSession(long requestId, String sessionId) {
try {
mService.releaseSession(sessionId, requestId);
mService.releaseSession(requestId, sessionId);
} catch (RemoteException ex) {
Slog.e(TAG, "releaseSession: Failed to deliver request.");
}
@@ -477,41 +477,41 @@ final class MediaRoute2ProviderServiceProxy extends MediaRoute2Provider
}
}
public void selectRoute(String sessionId, String routeId, long requestId) {
public void selectRoute(long requestId, String sessionId, String routeId) {
try {
mService.selectRoute(sessionId, routeId, requestId);
mService.selectRoute(requestId, sessionId, routeId);
} catch (RemoteException ex) {
Slog.e(TAG, "selectRoute: Failed to deliver request.", ex);
}
}
public void deselectRoute(String sessionId, String routeId, long requestId) {
public void deselectRoute(long requestId, String sessionId, String routeId) {
try {
mService.deselectRoute(sessionId, routeId, requestId);
mService.deselectRoute(requestId, sessionId, routeId);
} catch (RemoteException ex) {
Slog.e(TAG, "deselectRoute: Failed to deliver request.", ex);
}
}
public void transferToRoute(String sessionId, String routeId, long requestId) {
public void transferToRoute(long requestId, String sessionId, String routeId) {
try {
mService.transferToRoute(sessionId, routeId, requestId);
mService.transferToRoute(requestId, sessionId, routeId);
} catch (RemoteException ex) {
Slog.e(TAG, "transferToRoute: Failed to deliver request.", ex);
}
}
public void setRouteVolume(String routeId, int volume, long requestId) {
public void setRouteVolume(long requestId, String routeId, int volume) {
try {
mService.setRouteVolume(routeId, volume, requestId);
mService.setRouteVolume(requestId, routeId, volume);
} catch (RemoteException ex) {
Slog.e(TAG, "setRouteVolume: Failed to deliver request.", ex);
}
}
public void setSessionVolume(String sessionId, int volume, long requestId) {
public void setSessionVolume(long requestId, String sessionId, int volume) {
try {
mService.setSessionVolume(sessionId, volume, requestId);
mService.setSessionVolume(requestId, sessionId, volume);
} catch (RemoteException ex) {
Slog.e(TAG, "setSessionVolume: Failed to deliver request.", ex);
}
@@ -526,8 +526,8 @@ final class MediaRoute2ProviderServiceProxy extends MediaRoute2Provider
mHandler.post(() -> onProviderStateUpdated(Connection.this, providerInfo));
}
void postSessionCreated(RoutingSessionInfo sessionInfo, long requestId) {
mHandler.post(() -> onSessionCreated(Connection.this, sessionInfo, requestId));
void postSessionCreated(long requestId, RoutingSessionInfo sessionInfo) {
mHandler.post(() -> onSessionCreated(Connection.this, requestId, sessionInfo));
}
void postSessionUpdated(RoutingSessionInfo sessionInfo) {
@@ -564,10 +564,10 @@ final class MediaRoute2ProviderServiceProxy extends MediaRoute2Provider
}
@Override
public void notifySessionCreated(RoutingSessionInfo sessionInfo, long requestId) {
public void notifySessionCreated(long requestId, RoutingSessionInfo sessionInfo) {
Connection connection = mConnectionRef.get();
if (connection != null) {
connection.postSessionCreated(sessionInfo, requestId);
connection.postSessionCreated(requestId, sessionInfo);
}
}

View File

@@ -216,15 +216,15 @@ class MediaRouter2ServiceImpl {
}
}
public void requestCreateSessionWithRouter2(IMediaRouter2 router, MediaRoute2Info route,
int requestId, Bundle sessionHints) {
public void requestCreateSessionWithRouter2(IMediaRouter2 router, int requestId,
MediaRoute2Info route, Bundle sessionHints) {
Objects.requireNonNull(router, "router must not be null");
Objects.requireNonNull(route, "route must not be null");
final long token = Binder.clearCallingIdentity();
try {
synchronized (mLock) {
requestCreateSessionWithRouter2Locked(router, route, requestId, sessionHints);
requestCreateSessionWithRouter2Locked(requestId, router, route, sessionHints);
}
} finally {
Binder.restoreCallingIdentity(token);
@@ -370,23 +370,23 @@ class MediaRouter2ServiceImpl {
}
}
public void setRouteVolumeWithManager(IMediaRouter2Manager manager,
MediaRoute2Info route, int volume, int requestId) {
public void setRouteVolumeWithManager(IMediaRouter2Manager manager, int requestId,
MediaRoute2Info route, int volume) {
Objects.requireNonNull(manager, "manager must not be null");
Objects.requireNonNull(route, "route must not be null");
final long token = Binder.clearCallingIdentity();
try {
synchronized (mLock) {
setRouteVolumeWithManagerLocked(manager, route, volume, requestId);
setRouteVolumeWithManagerLocked(requestId, manager, route, volume);
}
} finally {
Binder.restoreCallingIdentity(token);
}
}
public void requestCreateSessionWithManager(IMediaRouter2Manager manager, String packageName,
MediaRoute2Info route, int requestId) {
public void requestCreateSessionWithManager(IMediaRouter2Manager manager, int requestId,
String packageName, MediaRoute2Info route) {
Objects.requireNonNull(manager, "manager must not be null");
if (TextUtils.isEmpty(packageName)) {
throw new IllegalArgumentException("packageName must not be empty");
@@ -395,15 +395,15 @@ class MediaRouter2ServiceImpl {
final long token = Binder.clearCallingIdentity();
try {
synchronized (mLock) {
requestCreateSessionWithManagerLocked(manager, packageName, route, requestId);
requestCreateSessionWithManagerLocked(requestId, manager, packageName, route);
}
} finally {
Binder.restoreCallingIdentity(token);
}
}
public void selectRouteWithManager(IMediaRouter2Manager manager, String uniqueSessionId,
MediaRoute2Info route, int requestId) {
public void selectRouteWithManager(IMediaRouter2Manager manager, int requestId,
String uniqueSessionId, MediaRoute2Info route) {
Objects.requireNonNull(manager, "manager must not be null");
if (TextUtils.isEmpty(uniqueSessionId)) {
throw new IllegalArgumentException("uniqueSessionId must not be empty");
@@ -413,15 +413,15 @@ class MediaRouter2ServiceImpl {
final long token = Binder.clearCallingIdentity();
try {
synchronized (mLock) {
selectRouteWithManagerLocked(manager, uniqueSessionId, route, requestId);
selectRouteWithManagerLocked(requestId, manager, uniqueSessionId, route);
}
} finally {
Binder.restoreCallingIdentity(token);
}
}
public void deselectRouteWithManager(IMediaRouter2Manager manager, String uniqueSessionId,
MediaRoute2Info route, int requestId) {
public void deselectRouteWithManager(IMediaRouter2Manager manager, int requestId,
String uniqueSessionId, MediaRoute2Info route) {
Objects.requireNonNull(manager, "manager must not be null");
if (TextUtils.isEmpty(uniqueSessionId)) {
throw new IllegalArgumentException("uniqueSessionId must not be empty");
@@ -431,15 +431,15 @@ class MediaRouter2ServiceImpl {
final long token = Binder.clearCallingIdentity();
try {
synchronized (mLock) {
deselectRouteWithManagerLocked(manager, uniqueSessionId, route, requestId);
deselectRouteWithManagerLocked(requestId, manager, uniqueSessionId, route);
}
} finally {
Binder.restoreCallingIdentity(token);
}
}
public void transferToRouteWithManager(IMediaRouter2Manager manager, String uniqueSessionId,
MediaRoute2Info route, int requestId) {
public void transferToRouteWithManager(IMediaRouter2Manager manager, int requestId,
String uniqueSessionId, MediaRoute2Info route) {
Objects.requireNonNull(manager, "manager must not be null");
if (TextUtils.isEmpty(uniqueSessionId)) {
throw new IllegalArgumentException("uniqueSessionId must not be empty");
@@ -449,15 +449,15 @@ class MediaRouter2ServiceImpl {
final long token = Binder.clearCallingIdentity();
try {
synchronized (mLock) {
transferToRouteWithManagerLocked(manager, uniqueSessionId, route, requestId);
transferToRouteWithManagerLocked(requestId, manager, uniqueSessionId, route);
}
} finally {
Binder.restoreCallingIdentity(token);
}
}
public void setSessionVolumeWithManager(IMediaRouter2Manager manager,
String uniqueSessionId, int volume, int requestId) {
public void setSessionVolumeWithManager(IMediaRouter2Manager manager, int requestId,
String uniqueSessionId, int volume) {
Objects.requireNonNull(manager, "manager must not be null");
if (TextUtils.isEmpty(uniqueSessionId)) {
throw new IllegalArgumentException("uniqueSessionId must not be empty");
@@ -466,15 +466,15 @@ class MediaRouter2ServiceImpl {
final long token = Binder.clearCallingIdentity();
try {
synchronized (mLock) {
setSessionVolumeWithManagerLocked(manager, uniqueSessionId, volume, requestId);
setSessionVolumeWithManagerLocked(requestId, manager, uniqueSessionId, volume);
}
} finally {
Binder.restoreCallingIdentity(token);
}
}
public void releaseSessionWithManager(IMediaRouter2Manager manager, String uniqueSessionId,
int requestId) {
public void releaseSessionWithManager(IMediaRouter2Manager manager, int requestId,
String uniqueSessionId) {
Objects.requireNonNull(manager, "manager must not be null");
if (TextUtils.isEmpty(uniqueSessionId)) {
throw new IllegalArgumentException("uniqueSessionId must not be empty");
@@ -483,7 +483,7 @@ class MediaRouter2ServiceImpl {
final long token = Binder.clearCallingIdentity();
try {
synchronized (mLock) {
releaseSessionWithManagerLocked(manager, uniqueSessionId, requestId);
releaseSessionWithManagerLocked(requestId, manager, uniqueSessionId);
}
} finally {
Binder.restoreCallingIdentity(token);
@@ -591,12 +591,13 @@ class MediaRouter2ServiceImpl {
if (routerRecord != null) {
routerRecord.mUserRecord.mHandler.sendMessage(
obtainMessage(UserHandler::setRouteVolumeOnHandler,
routerRecord.mUserRecord.mHandler, route, volume, DUMMY_REQUEST_ID));
routerRecord.mUserRecord.mHandler,
DUMMY_REQUEST_ID, route, volume));
}
}
private void requestCreateSessionWithRouter2Locked(@NonNull IMediaRouter2 router,
@NonNull MediaRoute2Info route, int requestId, @Nullable Bundle sessionHints) {
private void requestCreateSessionWithRouter2Locked(int requestId, @NonNull IMediaRouter2 router,
@NonNull MediaRoute2Info route, @Nullable Bundle sessionHints) {
final IBinder binder = router.asBinder();
final RouterRecord routerRecord = mAllRouterRecords.get(binder);
@@ -608,7 +609,7 @@ class MediaRouter2ServiceImpl {
routerRecord.mUserRecord.mHandler.sendMessage(
obtainMessage(UserHandler::requestCreateSessionOnHandler,
routerRecord.mUserRecord.mHandler,
routerRecord, /* managerRecord= */ null, route, uniqueRequestId,
uniqueRequestId, routerRecord, /* managerRecord= */ null, route,
sessionHints));
}
@@ -623,8 +624,8 @@ class MediaRouter2ServiceImpl {
routerRecord.mUserRecord.mHandler.sendMessage(
obtainMessage(UserHandler::selectRouteOnHandler,
routerRecord.mUserRecord.mHandler, routerRecord, uniqueSessionId, route,
DUMMY_REQUEST_ID));
routerRecord.mUserRecord.mHandler,
DUMMY_REQUEST_ID, routerRecord, uniqueSessionId, route));
}
private void deselectRouteWithRouter2Locked(@NonNull IMediaRouter2 router,
@@ -638,8 +639,8 @@ class MediaRouter2ServiceImpl {
routerRecord.mUserRecord.mHandler.sendMessage(
obtainMessage(UserHandler::deselectRouteOnHandler,
routerRecord.mUserRecord.mHandler, routerRecord, uniqueSessionId, route,
DUMMY_REQUEST_ID));
routerRecord.mUserRecord.mHandler,
DUMMY_REQUEST_ID, routerRecord, uniqueSessionId, route));
}
private void transferToRouteWithRouter2Locked(@NonNull IMediaRouter2 router,
@@ -653,8 +654,8 @@ class MediaRouter2ServiceImpl {
routerRecord.mUserRecord.mHandler.sendMessage(
obtainMessage(UserHandler::transferToRouteOnHandler,
routerRecord.mUserRecord.mHandler, routerRecord, uniqueSessionId, route,
DUMMY_REQUEST_ID));
routerRecord.mUserRecord.mHandler,
DUMMY_REQUEST_ID, routerRecord, uniqueSessionId, route));
}
private void setSessionVolumeWithRouter2Locked(@NonNull IMediaRouter2 router,
@@ -668,8 +669,8 @@ class MediaRouter2ServiceImpl {
routerRecord.mUserRecord.mHandler.sendMessage(
obtainMessage(UserHandler::setSessionVolumeOnHandler,
routerRecord.mUserRecord.mHandler, uniqueSessionId, volume,
DUMMY_REQUEST_ID));
routerRecord.mUserRecord.mHandler,
DUMMY_REQUEST_ID, uniqueSessionId, volume));
}
private void releaseSessionWithRouter2Locked(@NonNull IMediaRouter2 router,
@@ -683,8 +684,8 @@ class MediaRouter2ServiceImpl {
routerRecord.mUserRecord.mHandler.sendMessage(
obtainMessage(UserHandler::releaseSessionOnHandler,
routerRecord.mUserRecord.mHandler, routerRecord, uniqueSessionId,
DUMMY_REQUEST_ID));
routerRecord.mUserRecord.mHandler,
DUMMY_REQUEST_ID, routerRecord, uniqueSessionId));
}
////////////////////////////////////////////////////////////
@@ -756,8 +757,9 @@ class MediaRouter2ServiceImpl {
disposeUserIfNeededLocked(userRecord); // since manager removed from user
}
private void setRouteVolumeWithManagerLocked(@NonNull IMediaRouter2Manager manager,
@NonNull MediaRoute2Info route, int volume, int requestId) {
private void setRouteVolumeWithManagerLocked(int requestId,
@NonNull IMediaRouter2Manager manager,
@NonNull MediaRoute2Info route, int volume) {
final IBinder binder = manager.asBinder();
ManagerRecord managerRecord = mAllManagerRecords.get(binder);
@@ -768,11 +770,13 @@ class MediaRouter2ServiceImpl {
long uniqueRequestId = toUniqueRequestId(managerRecord.mManagerId, requestId);
managerRecord.mUserRecord.mHandler.sendMessage(
obtainMessage(UserHandler::setRouteVolumeOnHandler,
managerRecord.mUserRecord.mHandler, route, volume, uniqueRequestId));
managerRecord.mUserRecord.mHandler,
uniqueRequestId, route, volume));
}
private void requestCreateSessionWithManagerLocked(@NonNull IMediaRouter2Manager manager,
@NonNull String packageName, @NonNull MediaRoute2Info route, int requestId) {
private void requestCreateSessionWithManagerLocked(int requestId,
@NonNull IMediaRouter2Manager manager,
@NonNull String packageName, @NonNull MediaRoute2Info route) {
ManagerRecord managerRecord = mAllManagerRecords.get(manager.asBinder());
if (managerRecord == null || !managerRecord.mTrusted) {
return;
@@ -789,12 +793,12 @@ class MediaRouter2ServiceImpl {
routerRecord.mUserRecord.mHandler.sendMessage(
obtainMessage(UserHandler::requestCreateSessionOnHandler,
routerRecord.mUserRecord.mHandler,
routerRecord, managerRecord, route, uniqueRequestId,
uniqueRequestId, routerRecord, managerRecord, route,
/* sessionHints= */ null));
}
private void selectRouteWithManagerLocked(@NonNull IMediaRouter2Manager manager,
@NonNull String uniqueSessionId, @NonNull MediaRoute2Info route, int requestId) {
private void selectRouteWithManagerLocked(int requestId, @NonNull IMediaRouter2Manager manager,
@NonNull String uniqueSessionId, @NonNull MediaRoute2Info route) {
final IBinder binder = manager.asBinder();
ManagerRecord managerRecord = mAllManagerRecords.get(binder);
@@ -809,12 +813,13 @@ class MediaRouter2ServiceImpl {
long uniqueRequestId = toUniqueRequestId(managerRecord.mManagerId, requestId);
managerRecord.mUserRecord.mHandler.sendMessage(
obtainMessage(UserHandler::selectRouteOnHandler,
managerRecord.mUserRecord.mHandler, routerRecord, uniqueSessionId, route,
uniqueRequestId));
managerRecord.mUserRecord.mHandler,
uniqueRequestId, routerRecord, uniqueSessionId, route));
}
private void deselectRouteWithManagerLocked(@NonNull IMediaRouter2Manager manager,
@NonNull String uniqueSessionId, @NonNull MediaRoute2Info route, int requestId) {
private void deselectRouteWithManagerLocked(int requestId,
@NonNull IMediaRouter2Manager manager,
@NonNull String uniqueSessionId, @NonNull MediaRoute2Info route) {
final IBinder binder = manager.asBinder();
ManagerRecord managerRecord = mAllManagerRecords.get(binder);
@@ -829,12 +834,13 @@ class MediaRouter2ServiceImpl {
long uniqueRequestId = toUniqueRequestId(managerRecord.mManagerId, requestId);
managerRecord.mUserRecord.mHandler.sendMessage(
obtainMessage(UserHandler::deselectRouteOnHandler,
managerRecord.mUserRecord.mHandler, routerRecord, uniqueSessionId, route,
uniqueRequestId));
managerRecord.mUserRecord.mHandler,
uniqueRequestId, routerRecord, uniqueSessionId, route));
}
private void transferToRouteWithManagerLocked(@NonNull IMediaRouter2Manager manager,
@NonNull String uniqueSessionId, @NonNull MediaRoute2Info route, int requestId) {
private void transferToRouteWithManagerLocked(int requestId,
@NonNull IMediaRouter2Manager manager,
@NonNull String uniqueSessionId, @NonNull MediaRoute2Info route) {
final IBinder binder = manager.asBinder();
ManagerRecord managerRecord = mAllManagerRecords.get(binder);
@@ -849,12 +855,13 @@ class MediaRouter2ServiceImpl {
long uniqueRequestId = toUniqueRequestId(managerRecord.mManagerId, requestId);
managerRecord.mUserRecord.mHandler.sendMessage(
obtainMessage(UserHandler::transferToRouteOnHandler,
managerRecord.mUserRecord.mHandler, routerRecord, uniqueSessionId, route,
uniqueRequestId));
managerRecord.mUserRecord.mHandler,
uniqueRequestId, routerRecord, uniqueSessionId, route));
}
private void setSessionVolumeWithManagerLocked(@NonNull IMediaRouter2Manager manager,
@NonNull String uniqueSessionId, int volume, int requestId) {
private void setSessionVolumeWithManagerLocked(int requestId,
@NonNull IMediaRouter2Manager manager,
@NonNull String uniqueSessionId, int volume) {
final IBinder binder = manager.asBinder();
ManagerRecord managerRecord = mAllManagerRecords.get(binder);
@@ -865,12 +872,13 @@ class MediaRouter2ServiceImpl {
long uniqueRequestId = toUniqueRequestId(managerRecord.mManagerId, requestId);
managerRecord.mUserRecord.mHandler.sendMessage(
obtainMessage(UserHandler::setSessionVolumeOnHandler,
managerRecord.mUserRecord.mHandler, uniqueSessionId, volume,
uniqueRequestId));
managerRecord.mUserRecord.mHandler,
uniqueRequestId, uniqueSessionId, volume));
}
private void releaseSessionWithManagerLocked(@NonNull IMediaRouter2Manager manager,
@NonNull String uniqueSessionId, int requestId) {
private void releaseSessionWithManagerLocked(int requestId,
@NonNull IMediaRouter2Manager manager,
@NonNull String uniqueSessionId) {
final IBinder binder = manager.asBinder();
ManagerRecord managerRecord = mAllManagerRecords.get(binder);
@@ -887,8 +895,8 @@ class MediaRouter2ServiceImpl {
long uniqueRequestId = toUniqueRequestId(managerRecord.mManagerId, requestId);
managerRecord.mUserRecord.mHandler.sendMessage(
obtainMessage(UserHandler::releaseSessionOnHandler,
managerRecord.mUserRecord.mHandler, routerRecord, uniqueSessionId,
uniqueRequestId));
managerRecord.mUserRecord.mHandler,
uniqueRequestId, routerRecord, uniqueSessionId));
}
////////////////////////////////////////////////////////////
@@ -925,8 +933,8 @@ class MediaRouter2ServiceImpl {
}
}
static long toUniqueRequestId(int routerOrManagerId, int originalRequestId) {
return ((long) routerOrManagerId << 32) | originalRequestId;
static long toUniqueRequestId(int requesterId, int originalRequestId) {
return ((long) requesterId << 32) | originalRequestId;
}
static int toRequesterId(long uniqueRequestId) {
@@ -1104,9 +1112,9 @@ class MediaRouter2ServiceImpl {
@Override
public void onSessionCreated(@NonNull MediaRoute2Provider provider,
@NonNull RoutingSessionInfo sessionInfo, long requestId) {
long requestId, @NonNull RoutingSessionInfo sessionInfo) {
sendMessage(PooledLambda.obtainMessage(UserHandler::onSessionCreatedOnHandler,
this, provider, sessionInfo, requestId));
this, provider, requestId, sessionInfo));
}
@@ -1219,9 +1227,9 @@ class MediaRouter2ServiceImpl {
return -1;
}
private void requestCreateSessionOnHandler(@NonNull RouterRecord routerRecord,
@Nullable ManagerRecord managerRecord, @NonNull MediaRoute2Info route,
long requestId, @Nullable Bundle sessionHints) {
private void requestCreateSessionOnHandler(long requestId,
@NonNull RouterRecord routerRecord, @Nullable ManagerRecord managerRecord,
@NonNull MediaRoute2Info route, @Nullable Bundle sessionHints) {
final MediaRoute2Provider provider = findProvider(route.getProviderId());
if (provider == null) {
@@ -1231,18 +1239,17 @@ class MediaRouter2ServiceImpl {
return;
}
// TODO: Apply timeout for each request (How many seconds should we wait?)
SessionCreationRequest request =
new SessionCreationRequest(routerRecord, managerRecord, route, requestId);
new SessionCreationRequest(routerRecord, requestId, route, managerRecord);
mSessionCreationRequests.add(request);
provider.requestCreateSession(routerRecord.mPackageName, route.getOriginalId(),
requestId, sessionHints);
provider.requestCreateSession(requestId, routerRecord.mPackageName,
route.getOriginalId(), sessionHints);
}
// routerRecord can be null if the session is system's.
private void selectRouteOnHandler(@Nullable RouterRecord routerRecord,
@NonNull String uniqueSessionId, @NonNull MediaRoute2Info route, long requestId) {
private void selectRouteOnHandler(long requestId, @Nullable RouterRecord routerRecord,
@NonNull String uniqueSessionId, @NonNull MediaRoute2Info route) {
if (!checkArgumentsForSessionControl(routerRecord, uniqueSessionId, route,
"selecting")) {
return;
@@ -1254,12 +1261,12 @@ class MediaRouter2ServiceImpl {
if (provider == null) {
return;
}
provider.selectRoute(getOriginalId(uniqueSessionId), route.getOriginalId(), requestId);
provider.selectRoute(requestId, getOriginalId(uniqueSessionId), route.getOriginalId());
}
// routerRecord can be null if the session is system's.
private void deselectRouteOnHandler(@Nullable RouterRecord routerRecord,
@NonNull String uniqueSessionId, @NonNull MediaRoute2Info route, long requestId) {
private void deselectRouteOnHandler(long requestId, @Nullable RouterRecord routerRecord,
@NonNull String uniqueSessionId, @NonNull MediaRoute2Info route) {
if (!checkArgumentsForSessionControl(routerRecord, uniqueSessionId, route,
"deselecting")) {
return;
@@ -1271,13 +1278,14 @@ class MediaRouter2ServiceImpl {
if (provider == null) {
return;
}
provider.deselectRoute(getOriginalId(uniqueSessionId), route.getOriginalId(),
requestId);
provider.deselectRoute(requestId, getOriginalId(uniqueSessionId),
route.getOriginalId());
}
// routerRecord can be null if the session is system's.
private void transferToRouteOnHandler(@Nullable RouterRecord routerRecord,
@NonNull String uniqueSessionId, @NonNull MediaRoute2Info route, long requestId) {
private void transferToRouteOnHandler(long requestId, @Nullable RouterRecord routerRecord,
@NonNull String uniqueSessionId, @NonNull MediaRoute2Info route) {
if (!checkArgumentsForSessionControl(routerRecord, uniqueSessionId, route,
"transferring to")) {
return;
@@ -1289,8 +1297,8 @@ class MediaRouter2ServiceImpl {
if (provider == null) {
return;
}
provider.transferToRoute(getOriginalId(uniqueSessionId), route.getOriginalId(),
requestId);
provider.transferToRoute(requestId, getOriginalId(uniqueSessionId),
route.getOriginalId());
}
private boolean checkArgumentsForSessionControl(@Nullable RouterRecord routerRecord,
@@ -1332,8 +1340,29 @@ class MediaRouter2ServiceImpl {
return true;
}
private void releaseSessionOnHandler(@NonNull RouterRecord routerRecord,
@NonNull String uniqueSessionId, long uniqueRequestId) {
private void setRouteVolumeOnHandler(long requestId, @NonNull MediaRoute2Info route,
int volume) {
final MediaRoute2Provider provider = findProvider(route.getProviderId());
if (provider == null) {
Slog.w(TAG, "setRouteVolume: couldn't find provider for route=" + route);
return;
}
provider.setRouteVolume(requestId, route.getOriginalId(), volume);
}
private void setSessionVolumeOnHandler(long requestId, @NonNull String uniqueSessionId,
int volume) {
final MediaRoute2Provider provider = findProvider(getProviderId(uniqueSessionId));
if (provider == null) {
Slog.w(TAG, "setSessionVolume: couldn't find provider for session "
+ "id=" + uniqueSessionId);
return;
}
provider.setSessionVolume(requestId, getOriginalId(uniqueSessionId), volume);
}
private void releaseSessionOnHandler(long uniqueRequestId,
@NonNull RouterRecord routerRecord, @NonNull String uniqueSessionId) {
final RouterRecord matchingRecord = mSessionToRouterMap.get(uniqueSessionId);
if (matchingRecord != routerRecord) {
Slog.w(TAG, "Ignoring releasing session from non-matching router."
@@ -1363,11 +1392,11 @@ class MediaRouter2ServiceImpl {
return;
}
provider.releaseSession(sessionId, uniqueRequestId);
provider.releaseSession(uniqueRequestId, sessionId);
}
private void onSessionCreatedOnHandler(@NonNull MediaRoute2Provider provider,
@NonNull RoutingSessionInfo sessionInfo, long requestId) {
long requestId, @NonNull RoutingSessionInfo sessionInfo) {
notifySessionCreatedToManagers(getManagers(), sessionInfo);
if (requestId == REQUEST_ID_NONE) {
@@ -1415,7 +1444,7 @@ class MediaRouter2ServiceImpl {
// Succeeded
notifySessionCreatedToRouter(matchingRequest.mRouterRecord,
sessionInfo, toOriginalRequestId(requestId));
toOriginalRequestId(requestId), sessionInfo);
mSessionToRouterMap.put(sessionInfo.getId(), routerRecord);
}
@@ -1510,9 +1539,9 @@ class MediaRouter2ServiceImpl {
}
private void notifySessionCreatedToRouter(@NonNull RouterRecord routerRecord,
@NonNull RoutingSessionInfo sessionInfo, int requestId) {
int requestId, @NonNull RoutingSessionInfo sessionInfo) {
try {
routerRecord.mRouter.notifySessionCreated(sessionInfo, requestId);
routerRecord.mRouter.notifySessionCreated(requestId, sessionInfo);
} catch (RemoteException ex) {
Slog.w(TAG, "Failed to notify router of the session creation."
+ " Router probably died.", ex);
@@ -1522,7 +1551,7 @@ class MediaRouter2ServiceImpl {
private void notifySessionCreationFailedToRouter(@NonNull RouterRecord routerRecord,
int requestId) {
try {
routerRecord.mRouter.notifySessionCreated(/* sessionInfo= */ null, requestId);
routerRecord.mRouter.notifySessionCreated(requestId, /* sessionInfo= */ null);
} catch (RemoteException ex) {
Slog.w(TAG, "Failed to notify router of the session creation failure."
+ " Router probably died.", ex);
@@ -1549,25 +1578,6 @@ class MediaRouter2ServiceImpl {
}
}
private void setRouteVolumeOnHandler(@NonNull MediaRoute2Info route, int volume,
long requestId) {
final MediaRoute2Provider provider = findProvider(route.getProviderId());
if (provider != null) {
provider.setRouteVolume(route.getOriginalId(), volume, requestId);
}
}
private void setSessionVolumeOnHandler(@NonNull String uniqueSessionId, int volume,
long requestId) {
final MediaRoute2Provider provider = findProvider(getProviderId(uniqueSessionId));
if (provider == null) {
Slog.w(TAG, "setSessionVolume: couldn't find provider for session "
+ "id=" + uniqueSessionId);
return;
}
provider.setSessionVolume(getOriginalId(uniqueSessionId), volume, requestId);
}
private List<IMediaRouter2> getRouters() {
final List<IMediaRouter2> routers = new ArrayList<>();
MediaRouter2ServiceImpl service = mServiceRef.get();
@@ -1599,7 +1609,7 @@ class MediaRouter2ServiceImpl {
private List<ManagerRecord> getManagerRecords() {
MediaRouter2ServiceImpl service = mServiceRef.get();
if (service == null) {
return new ArrayList<>();
return Collections.emptyList();
}
synchronized (service.mLock) {
return new ArrayList<>(mUserRecord.mManagerRecords);
@@ -1799,18 +1809,18 @@ class MediaRouter2ServiceImpl {
final class SessionCreationRequest {
public final RouterRecord mRouterRecord;
public final ManagerRecord mRequestedManagerRecord;
public final MediaRoute2Info mRoute;
public final long mRequestId;
public final MediaRoute2Info mRoute;
public final ManagerRecord mRequestedManagerRecord;
// requestedManagerRecord is not null only when the request is made by manager.
SessionCreationRequest(@NonNull RouterRecord routerRecord,
@Nullable ManagerRecord requestedManagerRecord,
@NonNull MediaRoute2Info route, long requestId) {
SessionCreationRequest(@NonNull RouterRecord routerRecord, long requestId,
@NonNull MediaRoute2Info route,
@Nullable ManagerRecord requestedManagerRecord) {
mRouterRecord = routerRecord;
mRequestedManagerRecord = requestedManagerRecord;
mRoute = route;
mRequestId = requestId;
mRoute = route;
mRequestedManagerRecord = requestedManagerRecord;
}
}
}

View File

@@ -480,9 +480,9 @@ public final class MediaRouterService extends IMediaRouterService.Stub
// Binder call
@Override
public void requestCreateSessionWithRouter2(IMediaRouter2 router, MediaRoute2Info route,
int requestId, Bundle sessionHints) {
mService2.requestCreateSessionWithRouter2(router, route, requestId, sessionHints);
public void requestCreateSessionWithRouter2(IMediaRouter2 router, int requestId,
MediaRoute2Info route, Bundle sessionHints) {
mService2.requestCreateSessionWithRouter2(router, requestId, route, sessionHints);
}
// Binder call
@@ -542,51 +542,51 @@ public final class MediaRouterService extends IMediaRouterService.Stub
// Binder call
@Override
public void setRouteVolumeWithManager(IMediaRouter2Manager manager,
MediaRoute2Info route, int volume, int requestId) {
mService2.setRouteVolumeWithManager(manager, route, volume, requestId);
public void setRouteVolumeWithManager(IMediaRouter2Manager manager, int requestId,
MediaRoute2Info route, int volume) {
mService2.setRouteVolumeWithManager(manager, requestId, route, volume);
}
// Binder call
@Override
public void requestCreateSessionWithManager(IMediaRouter2Manager manager, String packageName,
MediaRoute2Info route, int requestId) {
mService2.requestCreateSessionWithManager(manager, packageName, route, requestId);
public void requestCreateSessionWithManager(IMediaRouter2Manager manager,
int requestId, String packageName, MediaRoute2Info route) {
mService2.requestCreateSessionWithManager(manager, requestId, packageName, route);
}
// Binder call
@Override
public void selectRouteWithManager(IMediaRouter2Manager manager, String sessionId,
MediaRoute2Info route, int requestId) {
mService2.selectRouteWithManager(manager, sessionId, route, requestId);
public void selectRouteWithManager(IMediaRouter2Manager manager, int requestId,
String sessionId, MediaRoute2Info route) {
mService2.selectRouteWithManager(manager, requestId, sessionId, route);
}
// Binder call
@Override
public void deselectRouteWithManager(IMediaRouter2Manager manager, String sessionId,
MediaRoute2Info route, int requestId) {
mService2.deselectRouteWithManager(manager, sessionId, route, requestId);
public void deselectRouteWithManager(IMediaRouter2Manager manager, int requestId,
String sessionId, MediaRoute2Info route) {
mService2.deselectRouteWithManager(manager, requestId, sessionId, route);
}
// Binder call
@Override
public void transferToRouteWithManager(IMediaRouter2Manager manager, String sessionId,
MediaRoute2Info route, int requestId) {
mService2.transferToRouteWithManager(manager, sessionId, route, requestId);
public void transferToRouteWithManager(IMediaRouter2Manager manager, int requestId,
String sessionId, MediaRoute2Info route) {
mService2.transferToRouteWithManager(manager, requestId, sessionId, route);
}
// Binder call
@Override
public void setSessionVolumeWithManager(IMediaRouter2Manager manager,
String sessionId, int volume, int requestId) {
mService2.setSessionVolumeWithManager(manager, sessionId, volume, requestId);
public void setSessionVolumeWithManager(IMediaRouter2Manager manager, int requestId,
String sessionId, int volume) {
mService2.setSessionVolumeWithManager(manager, requestId, sessionId, volume);
}
// Binder call
@Override
public void releaseSessionWithManager(IMediaRouter2Manager manager, String sessionId,
int requestId) {
mService2.releaseSessionWithManager(manager, sessionId, requestId);
public void releaseSessionWithManager(IMediaRouter2Manager manager, int requestId,
String sessionId) {
mService2.releaseSessionWithManager(manager, requestId, sessionId);
}
void restoreBluetoothA2dp() {

View File

@@ -125,14 +125,14 @@ class SystemMediaRoute2Provider extends MediaRoute2Provider {
}
@Override
public void requestCreateSession(String packageName, String routeId, long requestId,
public void requestCreateSession(long requestId, String packageName, String routeId,
Bundle sessionHints) {
// Handle it as an internal transfer.
transferToRoute(SYSTEM_SESSION_ID, routeId, requestId);
transferToRoute(requestId, SYSTEM_SESSION_ID, routeId);
}
@Override
public void releaseSession(String sessionId, long requestId) {
public void releaseSession(long requestId, String sessionId) {
// Do nothing
}
@@ -142,17 +142,17 @@ class SystemMediaRoute2Provider extends MediaRoute2Provider {
}
@Override
public void selectRoute(String sessionId, String routeId, long requestId) {
public void selectRoute(long requestId, String sessionId, String routeId) {
// Do nothing since we don't support multiple BT yet.
}
@Override
public void deselectRoute(String sessionId, String routeId, long requestId) {
public void deselectRoute(long requestId, String sessionId, String routeId) {
// Do nothing since we don't support multiple BT yet.
}
@Override
public void transferToRoute(String sessionId, String routeId, long requestId) {
public void transferToRoute(long requestId, String sessionId, String routeId) {
if (TextUtils.equals(routeId, mDefaultRoute.getId())) {
mBtRouteProvider.transferTo(null);
} else {
@@ -161,7 +161,7 @@ class SystemMediaRoute2Provider extends MediaRoute2Provider {
}
@Override
public void setRouteVolume(String routeId, int volume, long requestId) {
public void setRouteVolume(long requestId, String routeId, int volume) {
if (!TextUtils.equals(routeId, mSelectedRouteId)) {
return;
}
@@ -169,7 +169,7 @@ class SystemMediaRoute2Provider extends MediaRoute2Provider {
}
@Override
public void setSessionVolume(String sessionId, int volume, long requestId) {
public void setSessionVolume(long requestId, String sessionId, int volume) {
// Do nothing since we don't support grouping volume yet.
}