MediaRouter2: Remove sendControlRequest
Unused sendControlRequest is removed. According to that, MediaRouter2ManagerTest is a little bit modified. Bug: 145487522 Test: atest cts realted to media router 2 Change-Id: I3c2c5d1c2c67a3398a45bb2fab4e90dcf90f627e
This commit is contained in:
@@ -35,7 +35,6 @@ oneway interface IMediaRoute2Provider {
|
||||
void deselectRoute(String sessionId, String routeId);
|
||||
void transferToRoute(String sessionId, String routeId);
|
||||
|
||||
void notifyControlRequestSent(String id, in Intent request);
|
||||
void setRouteVolume(String routeId, int volume);
|
||||
void setSessionVolume(String sessionId, int volume);
|
||||
}
|
||||
|
||||
@@ -49,8 +49,6 @@ interface IMediaRouterService {
|
||||
RoutingSessionInfo getSystemSessionInfo();
|
||||
void registerClient2(IMediaRouter2Client client, String packageName);
|
||||
void unregisterClient2(IMediaRouter2Client client);
|
||||
void sendControlRequest(IMediaRouter2Client client, in MediaRoute2Info route,
|
||||
in Intent request);
|
||||
void setRouteVolume2(IMediaRouter2Client client, in MediaRoute2Info route, int volume);
|
||||
void setSessionVolume2(IMediaRouter2Client client, String sessionId, int volume);
|
||||
|
||||
|
||||
@@ -114,16 +114,6 @@ public abstract class MediaRoute2ProviderService extends Service {
|
||||
return null;
|
||||
}
|
||||
|
||||
/**
|
||||
* Called when sendControlRequest is called on a route of the provider
|
||||
*
|
||||
* @param routeId the id of the target route
|
||||
* @param request the media control request intent
|
||||
* @hide
|
||||
*/
|
||||
//TODO: Discuss what to use for request (e.g., Intent? Request class?)
|
||||
public void onControlRequest(@NonNull String routeId, @NonNull Intent request) {}
|
||||
|
||||
/**
|
||||
* Called when a volume setting is requested on a route of the provider
|
||||
*
|
||||
@@ -512,15 +502,6 @@ public abstract class MediaRoute2ProviderService extends Service {
|
||||
MediaRoute2ProviderService.this, sessionId, routeId));
|
||||
}
|
||||
|
||||
@Override
|
||||
public void notifyControlRequestSent(String routeId, Intent request) {
|
||||
if (!checkCallerisSystem()) {
|
||||
return;
|
||||
}
|
||||
mHandler.sendMessage(obtainMessage(MediaRoute2ProviderService::onControlRequest,
|
||||
MediaRoute2ProviderService.this, routeId, request));
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setRouteVolume(String routeId, int volume) {
|
||||
if (!checkCallerisSystem()) {
|
||||
|
||||
@@ -22,7 +22,6 @@ import android.annotation.CallbackExecutor;
|
||||
import android.annotation.NonNull;
|
||||
import android.annotation.Nullable;
|
||||
import android.content.Context;
|
||||
import android.content.Intent;
|
||||
import android.os.Bundle;
|
||||
import android.os.Handler;
|
||||
import android.os.Looper;
|
||||
@@ -411,32 +410,6 @@ public class MediaRouter2 {
|
||||
return result;
|
||||
}
|
||||
|
||||
/**
|
||||
* Sends a media control request to be performed asynchronously by the route's destination.
|
||||
*
|
||||
* @param route the route that will receive the control request
|
||||
* @param request the media control request
|
||||
* @hide
|
||||
*/
|
||||
//TODO: Discuss what to use for request (e.g., Intent? Request class?)
|
||||
//TODO: Provide a way to obtain the result
|
||||
public void sendControlRequest(@NonNull MediaRoute2Info route, @NonNull Intent request) {
|
||||
Objects.requireNonNull(route, "route must not be null");
|
||||
Objects.requireNonNull(request, "request must not be null");
|
||||
|
||||
Client2 client;
|
||||
synchronized (sRouterLock) {
|
||||
client = mClient;
|
||||
}
|
||||
if (client != null) {
|
||||
try {
|
||||
mMediaRouterService.sendControlRequest(client, route, request);
|
||||
} catch (RemoteException ex) {
|
||||
Log.e(TAG, "Unable to send control request.", ex);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Requests a volume change for the route asynchronously.
|
||||
* <p>
|
||||
|
||||
@@ -20,7 +20,6 @@ import static android.media.MediaRoute2Info.FEATURE_LIVE_AUDIO;
|
||||
import static android.media.MediaRoute2Info.PLAYBACK_VOLUME_FIXED;
|
||||
import static android.media.MediaRoute2Info.PLAYBACK_VOLUME_VARIABLE;
|
||||
|
||||
import static com.android.mediaroutertest.SampleMediaRoute2ProviderService.ACTION_REMOVE_ROUTE;
|
||||
import static com.android.mediaroutertest.SampleMediaRoute2ProviderService.FEATURE_SAMPLE;
|
||||
import static com.android.mediaroutertest.SampleMediaRoute2ProviderService.FEATURE_SPECIAL;
|
||||
import static com.android.mediaroutertest.SampleMediaRoute2ProviderService.ROUTE_ID1;
|
||||
@@ -29,7 +28,6 @@ import static com.android.mediaroutertest.SampleMediaRoute2ProviderService.ROUTE
|
||||
import static com.android.mediaroutertest.SampleMediaRoute2ProviderService.ROUTE_ID_FIXED_VOLUME;
|
||||
import static com.android.mediaroutertest.SampleMediaRoute2ProviderService.ROUTE_ID_SPECIAL_FEATURE;
|
||||
import static com.android.mediaroutertest.SampleMediaRoute2ProviderService.ROUTE_ID_VARIABLE_VOLUME;
|
||||
import static com.android.mediaroutertest.SampleMediaRoute2ProviderService.ROUTE_NAME1;
|
||||
import static com.android.mediaroutertest.SampleMediaRoute2ProviderService.ROUTE_NAME2;
|
||||
import static com.android.mediaroutertest.SampleMediaRoute2ProviderService.VOLUME_MAX;
|
||||
|
||||
@@ -38,7 +36,6 @@ import static org.junit.Assert.assertNotNull;
|
||||
import static org.junit.Assert.assertTrue;
|
||||
|
||||
import android.content.Context;
|
||||
import android.content.Intent;
|
||||
import android.media.MediaRoute2Info;
|
||||
import android.media.MediaRouter2;
|
||||
import android.media.MediaRouter2.RouteCallback;
|
||||
@@ -116,34 +113,18 @@ public class MediaRouter2ManagerTest {
|
||||
clearCallbacks();
|
||||
}
|
||||
|
||||
/**
|
||||
* Tests if routes are added correctly when a new callback is registered.
|
||||
*/
|
||||
@Test
|
||||
public void testOnRoutesAdded() throws Exception {
|
||||
CountDownLatch latch = new CountDownLatch(1);
|
||||
addManagerCallback(new MediaRouter2Manager.Callback() {
|
||||
@Override
|
||||
public void onRoutesAdded(List<MediaRoute2Info> routes) {
|
||||
assertTrue(routes.size() > 0);
|
||||
for (MediaRoute2Info route : routes) {
|
||||
if (route.getOriginalId().equals(ROUTE_ID1)
|
||||
&& route.getName().equals(ROUTE_NAME1)) {
|
||||
latch.countDown();
|
||||
}
|
||||
}
|
||||
}
|
||||
});
|
||||
public void testOnRoutesRemovedAndAdded() throws Exception {
|
||||
RouteCallback routeCallback = new RouteCallback();
|
||||
mRouteCallbacks.add(routeCallback);
|
||||
mRouter2.registerRouteCallback(mExecutor, routeCallback,
|
||||
new RouteDiscoveryPreference.Builder(FEATURES_ALL, true).build());
|
||||
|
||||
assertTrue(latch.await(TIMEOUT_MS, TimeUnit.MILLISECONDS));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testOnRoutesRemoved() throws Exception {
|
||||
CountDownLatch latch = new CountDownLatch(1);
|
||||
Map<String, MediaRoute2Info> routes = waitAndGetRoutesWithManager(FEATURES_ALL);
|
||||
|
||||
addRouterCallback(new RouteCallback());
|
||||
CountDownLatch removedLatch = new CountDownLatch(1);
|
||||
CountDownLatch addedLatch = new CountDownLatch(1);
|
||||
|
||||
addManagerCallback(new MediaRouter2Manager.Callback() {
|
||||
@Override
|
||||
public void onRoutesRemoved(List<MediaRoute2Info> routes) {
|
||||
@@ -151,16 +132,39 @@ public class MediaRouter2ManagerTest {
|
||||
for (MediaRoute2Info route : routes) {
|
||||
if (route.getOriginalId().equals(ROUTE_ID2)
|
||||
&& route.getName().equals(ROUTE_NAME2)) {
|
||||
latch.countDown();
|
||||
removedLatch.countDown();
|
||||
}
|
||||
}
|
||||
}
|
||||
@Override
|
||||
public void onRoutesAdded(List<MediaRoute2Info> routes) {
|
||||
assertTrue(routes.size() > 0);
|
||||
if (removedLatch.getCount() > 0) {
|
||||
return;
|
||||
}
|
||||
for (MediaRoute2Info route : routes) {
|
||||
if (route.getOriginalId().equals(ROUTE_ID2)
|
||||
&& route.getName().equals(ROUTE_NAME2)) {
|
||||
addedLatch.countDown();
|
||||
}
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
//TODO: Figure out a more proper way to test.
|
||||
// (Control requests shouldn't be used in this way.)
|
||||
mRouter2.sendControlRequest(routes.get(ROUTE_ID2), new Intent(ACTION_REMOVE_ROUTE));
|
||||
assertTrue(latch.await(TIMEOUT_MS, TimeUnit.MILLISECONDS));
|
||||
MediaRoute2Info routeToRemove = routes.get(ROUTE_ID2);
|
||||
|
||||
try {
|
||||
SampleMediaRoute2ProviderService sInstance =
|
||||
SampleMediaRoute2ProviderService.getInstance();
|
||||
assertNotNull(sInstance);
|
||||
sInstance.removeRoute(ROUTE_ID2);
|
||||
assertTrue(removedLatch.await(TIMEOUT_MS, TimeUnit.MILLISECONDS));
|
||||
|
||||
sInstance.addRoute(routeToRemove);
|
||||
assertTrue(addedLatch.await(TIMEOUT_MS, TimeUnit.MILLISECONDS));
|
||||
} finally {
|
||||
mRouter2.unregisterRouteCallback(routeCallback);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -20,6 +20,7 @@ import static android.media.MediaRoute2Info.DEVICE_TYPE_REMOTE_SPEAKER;
|
||||
import static android.media.MediaRoute2Info.DEVICE_TYPE_REMOTE_TV;
|
||||
import static android.media.MediaRoute2Info.PLAYBACK_VOLUME_VARIABLE;
|
||||
|
||||
import android.annotation.NonNull;
|
||||
import android.annotation.Nullable;
|
||||
import android.content.Intent;
|
||||
import android.media.MediaRoute2Info;
|
||||
@@ -31,9 +32,13 @@ import android.text.TextUtils;
|
||||
|
||||
import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
import java.util.Objects;
|
||||
|
||||
import javax.annotation.concurrent.GuardedBy;
|
||||
|
||||
public class SampleMediaRoute2ProviderService extends MediaRoute2ProviderService {
|
||||
private static final String TAG = "SampleMR2ProviderSvc";
|
||||
private static final Object sLock = new Object();
|
||||
|
||||
public static final String ROUTE_ID1 = "route_id1";
|
||||
public static final String ROUTE_NAME1 = "Sample Route 1";
|
||||
@@ -59,9 +64,6 @@ public class SampleMediaRoute2ProviderService extends MediaRoute2ProviderService
|
||||
public static final String ROUTE_ID_VARIABLE_VOLUME = "route_variable_volume";
|
||||
public static final String ROUTE_NAME_VARIABLE_VOLUME = "Variable Volume Route";
|
||||
|
||||
public static final String ACTION_REMOVE_ROUTE =
|
||||
"com.android.mediarouteprovider.action_remove_route";
|
||||
|
||||
public static final String FEATURE_SAMPLE =
|
||||
"com.android.mediarouteprovider.FEATURE_SAMPLE";
|
||||
public static final String FEATURE_SPECIAL =
|
||||
@@ -71,6 +73,9 @@ public class SampleMediaRoute2ProviderService extends MediaRoute2ProviderService
|
||||
Map<String, String> mRouteIdToSessionId = new HashMap<>();
|
||||
private int mNextSessionId = 1000;
|
||||
|
||||
@GuardedBy("sLock")
|
||||
private static SampleMediaRoute2ProviderService sInstance;
|
||||
|
||||
private void initializeRoutes() {
|
||||
MediaRoute2Info route1 = new MediaRoute2Info.Builder(ROUTE_ID1, ROUTE_NAME1)
|
||||
.addFeature(FEATURE_SAMPLE)
|
||||
@@ -92,6 +97,7 @@ public class SampleMediaRoute2ProviderService extends MediaRoute2ProviderService
|
||||
ROUTE_ID5_TO_TRANSFER_TO, ROUTE_NAME5)
|
||||
.addFeature(FEATURE_SAMPLE)
|
||||
.build();
|
||||
|
||||
MediaRoute2Info routeSpecial =
|
||||
new MediaRoute2Info.Builder(ROUTE_ID_SPECIAL_FEATURE, ROUTE_NAME_SPECIAL_FEATURE)
|
||||
.addFeature(FEATURE_SAMPLE)
|
||||
@@ -114,35 +120,64 @@ public class SampleMediaRoute2ProviderService extends MediaRoute2ProviderService
|
||||
mRoutes.put(route3.getId(), route3);
|
||||
mRoutes.put(route4.getId(), route4);
|
||||
mRoutes.put(route5.getId(), route5);
|
||||
|
||||
mRoutes.put(routeSpecial.getId(), routeSpecial);
|
||||
mRoutes.put(fixedVolumeRoute.getId(), fixedVolumeRoute);
|
||||
mRoutes.put(variableVolumeRoute.getId(), variableVolumeRoute);
|
||||
}
|
||||
|
||||
public static SampleMediaRoute2ProviderService getInstance() {
|
||||
synchronized (sLock) {
|
||||
return sInstance;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Adds a route and publishes it. It could replace a route in the provider if
|
||||
* they have the same route id.
|
||||
*/
|
||||
public void addRoute(@NonNull MediaRoute2Info route) {
|
||||
Objects.requireNonNull(route, "route must not be null");
|
||||
mRoutes.put(route.getOriginalId(), route);
|
||||
publishRoutes();
|
||||
}
|
||||
|
||||
/**
|
||||
* Removes a route and publishes it.
|
||||
*/
|
||||
public void removeRoute(@NonNull String routeId) {
|
||||
Objects.requireNonNull(routeId, "routeId must not be null");
|
||||
MediaRoute2Info route = mRoutes.get(routeId);
|
||||
if (route != null) {
|
||||
mRoutes.remove(routeId);
|
||||
publishRoutes();
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onCreate() {
|
||||
synchronized (sLock) {
|
||||
sInstance = this;
|
||||
}
|
||||
initializeRoutes();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onDestroy() {
|
||||
super.onDestroy();
|
||||
synchronized (sLock) {
|
||||
if (sInstance == this) {
|
||||
sInstance = null;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public IBinder onBind(Intent intent) {
|
||||
publishRoutes();
|
||||
return super.onBind(intent);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onControlRequest(String routeId, Intent request) {
|
||||
String action = request.getAction();
|
||||
if (ACTION_REMOVE_ROUTE.equals(action)) {
|
||||
MediaRoute2Info route = mRoutes.get(routeId);
|
||||
if (route != null) {
|
||||
mRoutes.remove(routeId);
|
||||
publishRoutes();
|
||||
mRoutes.put(routeId, route);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onSetRouteVolume(String routeId, int volume) {
|
||||
MediaRoute2Info route = mRoutes.get(routeId);
|
||||
|
||||
@@ -19,7 +19,6 @@ package com.android.server.media;
|
||||
import android.annotation.NonNull;
|
||||
import android.annotation.Nullable;
|
||||
import android.content.ComponentName;
|
||||
import android.content.Intent;
|
||||
import android.media.MediaRoute2ProviderInfo;
|
||||
import android.media.RouteDiscoveryPreference;
|
||||
import android.media.RoutingSessionInfo;
|
||||
@@ -61,7 +60,6 @@ abstract class MediaRoute2Provider {
|
||||
public abstract void deselectRoute(String sessionId, String routeId);
|
||||
public abstract void transferToRoute(String sessionId, String routeId);
|
||||
|
||||
public abstract void sendControlRequest(String routeId, Intent request);
|
||||
public abstract void setRouteVolume(String routeId, int volume);
|
||||
public abstract void setSessionVolume(String sessionId, int volume);
|
||||
|
||||
|
||||
@@ -122,14 +122,6 @@ final class MediaRoute2ProviderProxy extends MediaRoute2Provider implements Serv
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void sendControlRequest(String routeId, Intent request) {
|
||||
if (mConnectionReady) {
|
||||
mActiveConnection.sendControlRequest(routeId, request);
|
||||
updateBinding();
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setRouteVolume(String routeId, int volume) {
|
||||
if (mConnectionReady) {
|
||||
@@ -508,14 +500,6 @@ final class MediaRoute2ProviderProxy extends MediaRoute2Provider implements Serv
|
||||
}
|
||||
}
|
||||
|
||||
public void sendControlRequest(String routeId, Intent request) {
|
||||
try {
|
||||
mProvider.notifyControlRequestSent(routeId, request);
|
||||
} catch (RemoteException ex) {
|
||||
Slog.e(TAG, "sendControlRequest: Failed to deliver request.", ex);
|
||||
}
|
||||
}
|
||||
|
||||
public void setRouteVolume(String routeId, int volume) {
|
||||
try {
|
||||
mProvider.setRouteVolume(routeId, volume);
|
||||
|
||||
@@ -25,7 +25,6 @@ import android.annotation.NonNull;
|
||||
import android.annotation.Nullable;
|
||||
import android.app.ActivityManager;
|
||||
import android.content.Context;
|
||||
import android.content.Intent;
|
||||
import android.content.pm.PackageManager;
|
||||
import android.media.IMediaRouter2Client;
|
||||
import android.media.IMediaRouter2Manager;
|
||||
@@ -288,22 +287,6 @@ class MediaRouter2ServiceImpl {
|
||||
}
|
||||
}
|
||||
|
||||
public void sendControlRequest(@NonNull IMediaRouter2Client client,
|
||||
@NonNull MediaRoute2Info route, @NonNull Intent request) {
|
||||
Objects.requireNonNull(client, "client must not be null");
|
||||
Objects.requireNonNull(route, "route must not be null");
|
||||
Objects.requireNonNull(request, "request must not be null");
|
||||
|
||||
final long token = Binder.clearCallingIdentity();
|
||||
try {
|
||||
synchronized (mLock) {
|
||||
sendControlRequestLocked(client, route, request);
|
||||
}
|
||||
} finally {
|
||||
Binder.restoreCallingIdentity(token);
|
||||
}
|
||||
}
|
||||
|
||||
public void setDiscoveryRequest2(@NonNull IMediaRouter2Client client,
|
||||
@NonNull RouteDiscoveryPreference preference) {
|
||||
Objects.requireNonNull(client, "client must not be null");
|
||||
@@ -605,18 +588,6 @@ class MediaRouter2ServiceImpl {
|
||||
}
|
||||
}
|
||||
|
||||
private void sendControlRequestLocked(IMediaRouter2Client client, MediaRoute2Info route,
|
||||
Intent request) {
|
||||
final IBinder binder = client.asBinder();
|
||||
Client2Record clientRecord = mAllClientRecords.get(binder);
|
||||
|
||||
if (clientRecord != null) {
|
||||
clientRecord.mUserRecord.mHandler.sendMessage(
|
||||
obtainMessage(UserHandler::sendControlRequest,
|
||||
clientRecord.mUserRecord.mHandler, route, request));
|
||||
}
|
||||
}
|
||||
|
||||
private void setRouteVolumeLocked(IMediaRouter2Client client, MediaRoute2Info route,
|
||||
int volume) {
|
||||
final IBinder binder = client.asBinder();
|
||||
@@ -1446,13 +1417,6 @@ class MediaRouter2ServiceImpl {
|
||||
}
|
||||
}
|
||||
|
||||
private void sendControlRequest(MediaRoute2Info route, Intent request) {
|
||||
final MediaRoute2Provider provider = findProvider(route.getProviderId());
|
||||
if (provider != null) {
|
||||
provider.sendControlRequest(route.getOriginalId(), request);
|
||||
}
|
||||
}
|
||||
|
||||
private void setRouteVolume(MediaRoute2Info route, int volume) {
|
||||
final MediaRoute2Provider provider = findProvider(route.getProviderId());
|
||||
if (provider != null) {
|
||||
|
||||
@@ -496,13 +496,6 @@ public final class MediaRouterService extends IMediaRouterService.Stub
|
||||
mService2.releaseSession(client, sessionId);
|
||||
}
|
||||
|
||||
// Binder call
|
||||
@Override
|
||||
public void sendControlRequest(IMediaRouter2Client client, MediaRoute2Info route,
|
||||
Intent request) {
|
||||
mService2.sendControlRequest(client, route, request);
|
||||
}
|
||||
|
||||
// Binder call
|
||||
@Override
|
||||
public void registerManager(IMediaRouter2Manager manager, String packageName) {
|
||||
|
||||
@@ -151,11 +151,6 @@ class SystemMediaRoute2Provider extends MediaRoute2Provider {
|
||||
}
|
||||
}
|
||||
|
||||
//TODO: implement method
|
||||
@Override
|
||||
public void sendControlRequest(@NonNull String routeId, @NonNull Intent request) {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setRouteVolume(String routeId, int volume) {
|
||||
if (!TextUtils.equals(routeId, mSelectedRouteId)) {
|
||||
|
||||
Reference in New Issue
Block a user