diff options
14 files changed, 259 insertions, 249 deletions
diff --git a/api/current.txt b/api/current.txt index 5e64ba9f4930..eb54d3bf2b6c 100644 --- a/api/current.txt +++ b/api/current.txt @@ -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); diff --git a/media/java/android/media/IMediaRoute2ProviderService.aidl b/media/java/android/media/IMediaRoute2ProviderService.aidl index 6cd2547dcbcf..eee3d22c7252 100644 --- a/media/java/android/media/IMediaRoute2ProviderService.aidl +++ b/media/java/android/media/IMediaRoute2ProviderService.aidl @@ -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); } diff --git a/media/java/android/media/IMediaRoute2ProviderServiceCallback.aidl b/media/java/android/media/IMediaRoute2ProviderServiceCallback.aidl index 882caad0f49b..1755657ddc64 100644 --- a/media/java/android/media/IMediaRoute2ProviderServiceCallback.aidl +++ b/media/java/android/media/IMediaRoute2ProviderServiceCallback.aidl @@ -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); diff --git a/media/java/android/media/IMediaRouter2.aidl b/media/java/android/media/IMediaRouter2.aidl index 550ecfd02041..dc06153ffa9f 100644 --- a/media/java/android/media/IMediaRouter2.aidl +++ b/media/java/android/media/IMediaRouter2.aidl @@ -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); } diff --git a/media/java/android/media/IMediaRouterService.aidl b/media/java/android/media/IMediaRouterService.aidl index c7cb07d4ac1c..0d87736cfd47 100644 --- a/media/java/android/media/IMediaRouterService.aidl +++ b/media/java/android/media/IMediaRouterService.aidl @@ -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); } diff --git a/media/java/android/media/MediaRoute2ProviderService.java b/media/java/android/media/MediaRoute2ProviderService.java index 51696a4de2d4..8e39dfae7c57 100644 --- a/media/java/android/media/MediaRoute2ProviderService.java +++ b/media/java/android/media/MediaRoute2ProviderService.java @@ -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; } diff --git a/media/java/android/media/MediaRouter2.java b/media/java/android/media/MediaRouter2.java index fd2408935fff..860e49130d77 100644 --- a/media/java/android/media/MediaRouter2.java +++ b/media/java/android/media/MediaRouter2.java @@ -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 diff --git a/media/java/android/media/MediaRouter2Manager.java b/media/java/android/media/MediaRouter2Manager.java index cf453284d39f..11c9fe199521 100644 --- a/media/java/android/media/MediaRouter2Manager.java +++ b/media/java/android/media/MediaRouter2Manager.java @@ -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); } diff --git a/media/tests/MediaRouter/src/com/android/mediaroutertest/SampleMediaRoute2ProviderService.java b/media/tests/MediaRouter/src/com/android/mediaroutertest/SampleMediaRoute2ProviderService.java index 22c5bce5b381..f05d8ad79dee 100644 --- a/media/tests/MediaRouter/src/com/android/mediaroutertest/SampleMediaRoute2ProviderService.java +++ b/media/tests/MediaRouter/src/com/android/mediaroutertest/SampleMediaRoute2ProviderService.java @@ -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(); } diff --git a/services/core/java/com/android/server/media/MediaRoute2Provider.java b/services/core/java/com/android/server/media/MediaRoute2Provider.java index 4cb1ed9a0f9e..27216783d0d2 100644 --- a/services/core/java/com/android/server/media/MediaRoute2Provider.java +++ b/services/core/java/com/android/server/media/MediaRoute2Provider.java @@ -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, diff --git a/services/core/java/com/android/server/media/MediaRoute2ProviderServiceProxy.java b/services/core/java/com/android/server/media/MediaRoute2ProviderServiceProxy.java index 36a7bd983a29..b456737e9fc1 100644 --- a/services/core/java/com/android/server/media/MediaRoute2ProviderServiceProxy.java +++ b/services/core/java/com/android/server/media/MediaRoute2ProviderServiceProxy.java @@ -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); } } diff --git a/services/core/java/com/android/server/media/MediaRouter2ServiceImpl.java b/services/core/java/com/android/server/media/MediaRouter2ServiceImpl.java index 16f2addcb839..4b925ef7c245 100644 --- a/services/core/java/com/android/server/media/MediaRouter2ServiceImpl.java +++ b/services/core/java/com/android/server/media/MediaRouter2ServiceImpl.java @@ -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; } } } diff --git a/services/core/java/com/android/server/media/MediaRouterService.java b/services/core/java/com/android/server/media/MediaRouterService.java index a13ee1058a26..d6bf9fb4d9b5 100644 --- a/services/core/java/com/android/server/media/MediaRouterService.java +++ b/services/core/java/com/android/server/media/MediaRouterService.java @@ -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() { diff --git a/services/core/java/com/android/server/media/SystemMediaRoute2Provider.java b/services/core/java/com/android/server/media/SystemMediaRoute2Provider.java index 1922c8cfbbad..aad72034296d 100644 --- a/services/core/java/com/android/server/media/SystemMediaRoute2Provider.java +++ b/services/core/java/com/android/server/media/SystemMediaRoute2Provider.java @@ -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. } |