Merge "Put requestId first in notifySessionCreated() arguments" into rvc-dev am: fde3c9ac59

Change-Id: I960876bda0b493e4fc1c3853153b90578515ace0
This commit is contained in:
Automerger Merge Worker
2020-03-09 02:11:03 +00:00
14 changed files with 259 additions and 249 deletions

View File

@@ -26902,7 +26902,7 @@ package android.media {
method @Nullable public final android.media.RoutingSessionInfo getSessionInfo(@NonNull String); method @Nullable public final android.media.RoutingSessionInfo getSessionInfo(@NonNull String);
method public final void notifyRequestFailed(long, int); method public final void notifyRequestFailed(long, int);
method public final void notifyRoutes(@NonNull java.util.Collection<android.media.MediaRoute2Info>); 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 notifySessionReleased(@NonNull String);
method public final void notifySessionUpdated(@NonNull android.media.RoutingSessionInfo); method public final void notifySessionUpdated(@NonNull android.media.RoutingSessionInfo);
method @CallSuper @Nullable public android.os.IBinder onBind(@NonNull android.content.Intent); 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. // MediaRoute2ProviderService#MediaRoute2ProviderServiceStub for readability.
void setCallback(IMediaRoute2ProviderServiceCallback callback); void setCallback(IMediaRoute2ProviderServiceCallback callback);
void updateDiscoveryPreference(in RouteDiscoveryPreference discoveryPreference); 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); in @nullable Bundle sessionHints);
void selectRoute(String sessionId, String routeId, long requestId); void selectRoute(long requestId, String sessionId, String routeId);
void deselectRoute(String sessionId, String routeId, long requestId); void deselectRoute(long requestId, String sessionId, String routeId);
void transferToRoute(String sessionId, String routeId, long requestId); void transferToRoute(long requestId, String sessionId, String routeId);
void setSessionVolume(String sessionId, int volume, long requestId); void setSessionVolume(long requestId, String sessionId, int volume);
void releaseSession(String sessionId, long requestId); void releaseSession(long requestId, String sessionId);
} }

View File

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

View File

@@ -28,7 +28,7 @@ oneway interface IMediaRouter2 {
void notifyRoutesAdded(in List<MediaRoute2Info> routes); void notifyRoutesAdded(in List<MediaRoute2Info> routes);
void notifyRoutesRemoved(in List<MediaRoute2Info> routes); void notifyRoutesRemoved(in List<MediaRoute2Info> routes);
void notifyRoutesChanged(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 notifySessionInfoChanged(in RoutingSessionInfo sessionInfo);
void notifySessionReleased(in RoutingSessionInfo sessionInfo); void notifySessionReleased(in RoutingSessionInfo sessionInfo);
} }

View File

@@ -57,8 +57,8 @@ interface IMediaRouterService {
in RouteDiscoveryPreference preference); in RouteDiscoveryPreference preference);
void setRouteVolumeWithRouter2(IMediaRouter2 router, in MediaRoute2Info route, int volume); void setRouteVolumeWithRouter2(IMediaRouter2 router, in MediaRoute2Info route, int volume);
void requestCreateSessionWithRouter2(IMediaRouter2 router, in MediaRoute2Info route, void requestCreateSessionWithRouter2(IMediaRouter2 router, int requestId,
int requestId, in @nullable Bundle sessionHints); in MediaRoute2Info route, in @nullable Bundle sessionHints);
void selectRouteWithRouter2(IMediaRouter2 router, String sessionId, in MediaRoute2Info route); void selectRouteWithRouter2(IMediaRouter2 router, String sessionId, in MediaRoute2Info route);
void deselectRouteWithRouter2(IMediaRouter2 router, String sessionId, in MediaRoute2Info route); void deselectRouteWithRouter2(IMediaRouter2 router, String sessionId, in MediaRoute2Info route);
void transferToRouteWithRouter2(IMediaRouter2 router, String sessionId, void transferToRouteWithRouter2(IMediaRouter2 router, String sessionId,
@@ -70,18 +70,18 @@ interface IMediaRouterService {
List<RoutingSessionInfo> getActiveSessions(IMediaRouter2Manager manager); List<RoutingSessionInfo> getActiveSessions(IMediaRouter2Manager manager);
void registerManager(IMediaRouter2Manager manager, String packageName); void registerManager(IMediaRouter2Manager manager, String packageName);
void unregisterManager(IMediaRouter2Manager manager); void unregisterManager(IMediaRouter2Manager manager);
void setRouteVolumeWithManager(IMediaRouter2Manager manager, in MediaRoute2Info route, void setRouteVolumeWithManager(IMediaRouter2Manager manager, int requestId,
int volume, int requestId); in MediaRoute2Info route, int volume);
void requestCreateSessionWithManager(IMediaRouter2Manager manager, String packageName, void requestCreateSessionWithManager(IMediaRouter2Manager manager, int requestId,
in @nullable MediaRoute2Info route, int requestId); String packageName, in @nullable MediaRoute2Info route);
void selectRouteWithManager(IMediaRouter2Manager manager, String sessionId, void selectRouteWithManager(IMediaRouter2Manager manager, int requestId,
in MediaRoute2Info route, int requestId); String sessionId, in MediaRoute2Info route);
void deselectRouteWithManager(IMediaRouter2Manager manager, String sessionId, void deselectRouteWithManager(IMediaRouter2Manager manager, int requestId,
in MediaRoute2Info route, int requestId); String sessionId, in MediaRoute2Info route);
void transferToRouteWithManager(IMediaRouter2Manager manager, String sessionId, void transferToRouteWithManager(IMediaRouter2Manager manager, int requestId,
in MediaRoute2Info route, int requestId); String sessionId, in MediaRoute2Info route);
void setSessionVolumeWithManager(IMediaRouter2Manager manager, String sessionId, int volume, void setSessionVolumeWithManager(IMediaRouter2Manager manager, int requestId,
int requestId); String sessionId, int volume);
void releaseSessionWithManager(IMediaRouter2Manager manager, String sessionId, int requestId); 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"; 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 * when {@link MediaRoute2ProviderService} created a session although there was no creation
* request. * request.
* *
* @see #notifySessionCreated(RoutingSessionInfo, long) * @see #notifySessionCreated(long, RoutingSessionInfo)
*/ */
public static final long REQUEST_ID_NONE = 0; 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} * If this session is created without any creation request, use {@link #REQUEST_ID_NONE}
* as the request ID. * 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 * @param requestId id of the previous request to create this session provided in
* {@link #onCreateSession(long, String, String, Bundle)}. Can be * {@link #onCreateSession(long, String, String, Bundle)}. Can be
* {@link #REQUEST_ID_NONE} if this session is created without any request. * {@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 #onCreateSession(long, String, String, Bundle)
* @see #getSessionInfo(String) * @see #getSessionInfo(String)
*/ */
public final void notifySessionCreated(@NonNull RoutingSessionInfo sessionInfo, public final void notifySessionCreated(long requestId,
long requestId) { @NonNull RoutingSessionInfo sessionInfo) {
Objects.requireNonNull(sessionInfo, "sessionInfo must not be null"); Objects.requireNonNull(sessionInfo, "sessionInfo must not be null");
String sessionId = sessionInfo.getId(); 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. // TODO: Calling binder calls in multiple thread may cause timing issue.
// Consider to change implementations to avoid the problems. // Consider to change implementations to avoid the problems.
// For example, post binder calls, always send all sessions at once, etc. // For example, post binder calls, always send all sessions at once, etc.
mRemoteCallback.notifySessionCreated(sessionInfo, requestId); mRemoteCallback.notifySessionCreated(requestId, sessionInfo);
} catch (RemoteException ex) { } catch (RemoteException ex) {
Log.w(TAG, "Failed to notify session created."); 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. * Called when the service receives a request to create a session.
* <p> * <p>
* You should create and maintain your own session and notifies the client of * 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. * 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 * The created session must have the same route feature and must include the given route
* specified by {@code routeId}. * specified by {@code routeId}.
@@ -504,7 +504,7 @@ public abstract class MediaRoute2ProviderService extends Service {
} }
@Override @Override
public void setRouteVolume(String routeId, int volume, long requestId) { public void setRouteVolume(long requestId, String routeId, int volume) {
if (!checkCallerisSystem()) { if (!checkCallerisSystem()) {
return; return;
} }
@@ -513,7 +513,7 @@ public abstract class MediaRoute2ProviderService extends Service {
} }
@Override @Override
public void requestCreateSession(String packageName, String routeId, long requestId, public void requestCreateSession(long requestId, String packageName, String routeId,
@Nullable Bundle requestCreateSession) { @Nullable Bundle requestCreateSession) {
if (!checkCallerisSystem()) { if (!checkCallerisSystem()) {
return; return;
@@ -524,7 +524,7 @@ public abstract class MediaRoute2ProviderService extends Service {
} }
@Override @Override
public void selectRoute(String sessionId, String routeId, long requestId) { public void selectRoute(long requestId, String sessionId, String routeId) {
if (!checkCallerisSystem()) { if (!checkCallerisSystem()) {
return; return;
} }
@@ -537,7 +537,7 @@ public abstract class MediaRoute2ProviderService extends Service {
} }
@Override @Override
public void deselectRoute(String sessionId, String routeId, long requestId) { public void deselectRoute(long requestId, String sessionId, String routeId) {
if (!checkCallerisSystem()) { if (!checkCallerisSystem()) {
return; return;
} }
@@ -550,7 +550,7 @@ public abstract class MediaRoute2ProviderService extends Service {
} }
@Override @Override
public void transferToRoute(String sessionId, String routeId, long requestId) { public void transferToRoute(long requestId, String sessionId, String routeId) {
if (!checkCallerisSystem()) { if (!checkCallerisSystem()) {
return; return;
} }
@@ -563,7 +563,7 @@ public abstract class MediaRoute2ProviderService extends Service {
} }
@Override @Override
public void setSessionVolume(String sessionId, int volume, long requestId) { public void setSessionVolume(long requestId, String sessionId, int volume) {
if (!checkCallerisSystem()) { if (!checkCallerisSystem()) {
return; return;
} }
@@ -572,7 +572,7 @@ public abstract class MediaRoute2ProviderService extends Service {
} }
@Override @Override
public void releaseSession(String sessionId, long requestId) { public void releaseSession(long requestId, String sessionId) {
if (!checkCallerisSystem()) { if (!checkCallerisSystem()) {
return; return;
} }

View File

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

View File

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

View File

@@ -51,17 +51,17 @@ abstract class MediaRoute2Provider {
mCallback = callback; 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); @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 updateDiscoveryPreference(RouteDiscoveryPreference discoveryPreference);
public abstract void selectRoute(String sessionId, String routeId, long requestId); public abstract void selectRoute(long requestId, String sessionId, String routeId);
public abstract void deselectRoute(String sessionId, String routeId, long requestId); public abstract void deselectRoute(long requestId, String sessionId, String routeId);
public abstract void transferToRoute(String sessionId, String routeId, long requestId); public abstract void transferToRoute(long requestId, String sessionId, String routeId);
public abstract void setRouteVolume(String routeId, int volume, long requestId); public abstract void setRouteVolume(long requestId, String routeId, int volume);
public abstract void setSessionVolume(String sessionId, int volume, long requestId); public abstract void setSessionVolume(long requestId, String sessionId, int volume);
@NonNull @NonNull
public String getUniqueId() { public String getUniqueId() {
@@ -110,7 +110,7 @@ abstract class MediaRoute2Provider {
public interface Callback { public interface Callback {
void onProviderStateChanged(@Nullable MediaRoute2Provider provider); void onProviderStateChanged(@Nullable MediaRoute2Provider provider);
void onSessionCreated(@NonNull MediaRoute2Provider provider, void onSessionCreated(@NonNull MediaRoute2Provider provider,
@Nullable RoutingSessionInfo sessionInfo, long requestId); long requestId, @Nullable RoutingSessionInfo sessionInfo);
void onSessionUpdated(@NonNull MediaRoute2Provider provider, void onSessionUpdated(@NonNull MediaRoute2Provider provider,
@NonNull RoutingSessionInfo sessionInfo); @NonNull RoutingSessionInfo sessionInfo);
void onSessionReleased(@NonNull MediaRoute2Provider provider, void onSessionReleased(@NonNull MediaRoute2Provider provider,

View File

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

View File

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

View File

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