From a64ca9ec9e3d89e6985cd122646fee60c47c8a91 Mon Sep 17 00:00:00 2001
From: Hyundo Moon
Date: Fri, 27 Dec 2019 17:41:17 +0900
Subject: [PATCH] MediaRouter2: Add (un)registerSessionCallback
This CL pulls out the process of registering SessionCallback
from the method MediaRouter2#requestCreateSession.
Now the registered callback can be reused until unregistered.
Also, this renames existing (un)registerCallback methods to
(un)register'Route'Callback.
Bug: 146400872
Test: atest mediaroutertest
Change-Id: I68f71b0a857780ab9e2a0ca2a550af5ab4962f70
---
media/java/android/media/MediaRouter2.java | 149 ++++++++++---
.../SampleMediaRoute2ProviderService.java | 6 +-
.../mediaroutertest/MediaRouter2Test.java | 206 ++++++++++++++----
.../MediaRouterManagerTest.java | 8 +-
4 files changed, 292 insertions(+), 77 deletions(-)
diff --git a/media/java/android/media/MediaRouter2.java b/media/java/android/media/MediaRouter2.java
index 57eb36d7279dd..ea836e91b48e0 100644
--- a/media/java/android/media/MediaRouter2.java
+++ b/media/java/android/media/MediaRouter2.java
@@ -103,6 +103,9 @@ public class MediaRouter2 {
private final CopyOnWriteArrayList mRouteCallbackRecords =
new CopyOnWriteArrayList<>();
+ private final CopyOnWriteArrayList mSessionCallbackRecords =
+ new CopyOnWriteArrayList<>();
+
private final CopyOnWriteArrayList mSessionCreationRequests =
new CopyOnWriteArrayList<>();
@@ -164,9 +167,9 @@ public class MediaRouter2 {
/**
* Registers a callback to discover routes and to receive events when they change.
*/
- public void registerCallback(@NonNull @CallbackExecutor Executor executor,
+ public void registerRouteCallback(@NonNull @CallbackExecutor Executor executor,
@NonNull RouteCallback routeCallback) {
- registerCallback(executor, routeCallback, 0);
+ registerRouteCallback(executor, routeCallback, 0);
}
/**
@@ -175,7 +178,7 @@ public class MediaRouter2 {
* If you register the same callback twice or more, it will be ignored.
*
*/
- public void registerCallback(@NonNull @CallbackExecutor Executor executor,
+ public void registerRouteCallback(@NonNull @CallbackExecutor Executor executor,
@NonNull RouteCallback routeCallback, int flags) {
Objects.requireNonNull(executor, "executor must not be null");
Objects.requireNonNull(routeCallback, "callback must not be null");
@@ -207,9 +210,9 @@ public class MediaRouter2 {
* If the callback has not been added or been removed already, it is ignored.
*
* @param routeCallback the callback to unregister
- * @see #registerCallback
+ * @see #registerRouteCallback
*/
- public void unregisterCallback(@NonNull RouteCallback routeCallback) {
+ public void unregisterRouteCallback(@NonNull RouteCallback routeCallback) {
Objects.requireNonNull(routeCallback, "callback must not be null");
if (!mRouteCallbackRecords.remove(
@@ -283,30 +286,60 @@ public class MediaRouter2 {
return mFilteredRoutes;
}
+ /**
+ * Registers a callback to get updates on creations and changes of route sessions.
+ * If you register the same callback twice or more, it will be ignored.
+ *
+ * @param executor the executor to execute the callback on
+ * @param callback the callback to register
+ * @see #unregisterSessionCallback
+ */
+ @NonNull
+ public void registerSessionCallback(@CallbackExecutor Executor executor,
+ @NonNull SessionCallback callback) {
+ Objects.requireNonNull(executor, "executor must not be null");
+ Objects.requireNonNull(callback, "callback must not be null");
+
+ SessionCallbackRecord record = new SessionCallbackRecord(executor, callback);
+ if (!mSessionCallbackRecords.addIfAbsent(record)) {
+ Log.w(TAG, "Ignoring the same session callback");
+ return;
+ }
+ }
+
+ /**
+ * Unregisters the given callback. The callback will no longer receive events.
+ * If the callback has not been added or been removed already, it is ignored.
+ *
+ * @param callback the callback to unregister
+ * @see #registerSessionCallback
+ */
+ @NonNull
+ public void unregisterSessionCallback(@NonNull SessionCallback callback) {
+ Objects.requireNonNull(callback, "callback must not be null");
+
+ if (!mSessionCallbackRecords.remove(new SessionCallbackRecord(null, callback))) {
+ Log.w(TAG, "Ignoring unknown session callback");
+ return;
+ }
+ }
+
/**
* Requests the media route provider service to create a session with the given route.
*
* @param route the route you want to create a session with.
* @param controlCategory the control category of the session. Should not be empty
- * @param executor the executor to get the result of the session creation
- * @param callback the callback to get the result of the session creation
*
- * @see SessionCallback#onSessionCreated(RouteSessionController, Bundle)
- * @see SessionCallback#onSessionCreationFailed()
- *
- * TODO: Separate callback registeration from creating session request.
+ * @see SessionCallback#onSessionCreated
+ * @see SessionCallback#onSessionCreationFailed
*/
@NonNull
public void requestCreateSession(@NonNull MediaRoute2Info route,
- @NonNull String controlCategory,
- @CallbackExecutor Executor executor, @NonNull SessionCallback callback) {
+ @NonNull String controlCategory) {
Objects.requireNonNull(route, "route must not be null");
if (TextUtils.isEmpty(controlCategory)) {
throw new IllegalArgumentException("controlCategory must not be empty");
}
- Objects.requireNonNull(executor, "executor must not be null");
- Objects.requireNonNull(callback, "callback must not be null");
-
// TODO: Check the given route exists
// TODO: Check the route supports the given controlCategory
@@ -316,7 +349,7 @@ public class MediaRouter2 {
requestId = Process.myPid() * 10000 + mSessionCreationRequestCnt.getAndIncrement();
SessionCreationRequest request = new SessionCreationRequest(
- requestId, route, controlCategory, executor, callback);
+ requestId, route, controlCategory);
mSessionCreationRequests.add(request);
Client2 client;
@@ -492,9 +525,11 @@ public class MediaRouter2 {
/**
* Creates a controller and calls the {@link SessionCallback#onSessionCreated}.
* If session creation has failed, then it calls
- * {@link SessionCallback#onSessionCreationFailed()}.
+ * {@link SessionCallback#onSessionCreationFailed}.
*
* Pass {@code null} to sessionInfo for the failure case.
+ *
+ * TODO: What should router do when the session is created by manager?
*/
void createControllerOnHandler(@Nullable RouteSessionInfo sessionInfo, int requestId) {
SessionCreationRequest matchingRequest = null;
@@ -513,18 +548,29 @@ public class MediaRouter2 {
mSessionCreationRequests.remove(matchingRequest);
- final Executor executor = matchingRequest.mExecutor;
- final SessionCallback callback = matchingRequest.mSessionCallback;
+ MediaRoute2Info requestedRoute = matchingRequest.mRoute;
+ String requestedControlCategory = matchingRequest.mControlCategory;
+ // TODO: Also check provider ID when RouteSessionInfo#getProviderId() is introduced.
if (sessionInfo == null) {
// TODO: We may need to distinguish between failure and rejection.
// One way can be introducing 'reason'.
- executor.execute(callback::onSessionCreationFailed);
+ notifySessionCreationFailed(requestedRoute, requestedControlCategory);
+ } else if (!TextUtils.equals(requestedControlCategory, sessionInfo.getControlCategory())) {
+ Log.w(TAG, "The session has different control category from what we requested. "
+ + "(requested=" + requestedControlCategory
+ + ", actual=" + sessionInfo.getControlCategory()
+ + ")");
+ notifySessionCreationFailed(requestedRoute, requestedControlCategory);
+ } else if (!sessionInfo.getSelectedRoutes().contains(requestedRoute.getId())) {
+ Log.w(TAG, "The session does not contain the requested route. "
+ + "(requestedRouteId=" + requestedRoute.getId()
+ + ", actualRoutes=" + sessionInfo.getSelectedRoutes()
+ + ")");
+ notifySessionCreationFailed(requestedRoute, requestedControlCategory);
} else {
- // TODO: RouteSessionController should be created with full info (e.g. routes)
- // from RouteSessionInfo.
RouteSessionController controller = new RouteSessionController(sessionInfo);
- executor.execute(() -> callback.onSessionCreated(controller));
+ notifySessionCreated(controller);
}
}
@@ -549,6 +595,20 @@ public class MediaRouter2 {
}
}
+ private void notifySessionCreated(RouteSessionController controller) {
+ for (SessionCallbackRecord record: mSessionCallbackRecords) {
+ record.mExecutor.execute(
+ () -> record.mSessionCallback.onSessionCreated(controller));
+ }
+ }
+
+ private void notifySessionCreationFailed(MediaRoute2Info route, String controlCategory) {
+ for (SessionCallbackRecord record: mSessionCallbackRecords) {
+ record.mExecutor.execute(
+ () -> record.mSessionCallback.onSessionCreationFailed(route, controlCategory));
+ }
+ }
+
/**
* Callback for receiving events about media route discovery.
*/
@@ -594,8 +654,12 @@ public class MediaRouter2 {
/**
* Called when the session creation request failed.
+ *
+ * @param requestedRoute the route info which was used for the request
+ * @param requestedControlCategory the control category which was used for the request
*/
- public void onSessionCreationFailed() {}
+ public void onSessionCreationFailed(MediaRoute2Info requestedRoute,
+ String requestedControlCategory) {}
/**
* Called when the session info has changed.
@@ -787,21 +851,42 @@ public class MediaRouter2 {
}
}
+ final class SessionCallbackRecord {
+ public final Executor mExecutor;
+ public final SessionCallback mSessionCallback;
+
+ SessionCallbackRecord(@NonNull Executor executor,
+ @NonNull SessionCallback sessionCallback) {
+ mSessionCallback = sessionCallback;
+ mExecutor = executor;
+ }
+
+ @Override
+ public boolean equals(Object obj) {
+ if (this == obj) {
+ return true;
+ }
+ if (!(obj instanceof SessionCallbackRecord)) {
+ return false;
+ }
+ return mSessionCallback == ((SessionCallbackRecord) obj).mSessionCallback;
+ }
+
+ @Override
+ public int hashCode() {
+ return mSessionCallback.hashCode();
+ }
+ }
+
final class SessionCreationRequest {
public final MediaRoute2Info mRoute;
public final String mControlCategory;
- public final Executor mExecutor;
- public final SessionCallback mSessionCallback;
public final int mRequestId;
SessionCreationRequest(int requestId, @NonNull MediaRoute2Info route,
- @NonNull String controlCategory,
- @Nullable Executor executor,
- @NonNull SessionCallback sessionCallback) {
+ @NonNull String controlCategory) {
mRoute = route;
mControlCategory = controlCategory;
- mExecutor = executor;
- mSessionCallback = sessionCallback;
mRequestId = requestId;
}
}
diff --git a/media/tests/MediaRouteProvider/src/com/android/mediarouteprovider/example/SampleMediaRoute2ProviderService.java b/media/tests/MediaRouteProvider/src/com/android/mediarouteprovider/example/SampleMediaRoute2ProviderService.java
index 36a02c80e3faf..e179b95248991 100644
--- a/media/tests/MediaRouteProvider/src/com/android/mediarouteprovider/example/SampleMediaRoute2ProviderService.java
+++ b/media/tests/MediaRouteProvider/src/com/android/mediarouteprovider/example/SampleMediaRoute2ProviderService.java
@@ -58,10 +58,9 @@ public class SampleMediaRoute2ProviderService extends MediaRoute2ProviderService
public static final String CATEGORY_SPECIAL =
"com.android.mediarouteprovider.CATEGORY_SPECIAL";
- public static final int SESSION_ID_1 = 1000;
-
Map mRoutes = new HashMap<>();
Map mRouteSessionMap = new HashMap<>();
+ private int mNextSessionId = 1000;
private void initializeRoutes() {
MediaRoute2Info route1 = new MediaRoute2Info.Builder(ROUTE_ID1, ROUTE_NAME1)
@@ -163,7 +162,8 @@ public class SampleMediaRoute2ProviderService extends MediaRoute2ProviderService
}
maybeRemoveRoute(routeId);
- int sessionId = SESSION_ID_1;
+ final int sessionId = mNextSessionId;
+ mNextSessionId++;
mRoutes.put(routeId, new MediaRoute2Info.Builder(route)
.setClientPackageName(packageName)
diff --git a/media/tests/MediaRouter/src/com/android/mediaroutertest/MediaRouter2Test.java b/media/tests/MediaRouter/src/com/android/mediaroutertest/MediaRouter2Test.java
index bbd8b48ac01cf..6e79dd17042ee 100644
--- a/media/tests/MediaRouter/src/com/android/mediaroutertest/MediaRouter2Test.java
+++ b/media/tests/MediaRouter/src/com/android/mediaroutertest/MediaRouter2Test.java
@@ -28,6 +28,7 @@ import static com.android.mediaroutertest.MediaRouterManagerTest.CATEGORIES_SPEC
import static com.android.mediaroutertest.MediaRouterManagerTest.CATEGORY_SAMPLE;
import static com.android.mediaroutertest.MediaRouterManagerTest.CATEGORY_SPECIAL;
import static com.android.mediaroutertest.MediaRouterManagerTest.ROUTE_ID1;
+import static com.android.mediaroutertest.MediaRouterManagerTest.ROUTE_ID2;
import static com.android.mediaroutertest.MediaRouterManagerTest.ROUTE_ID3_SESSION_CREATION_FAILED;
import static com.android.mediaroutertest.MediaRouterManagerTest.ROUTE_ID_SPECIAL_CATEGORY;
import static com.android.mediaroutertest.MediaRouterManagerTest.ROUTE_ID_VARIABLE_VOLUME;
@@ -43,6 +44,7 @@ import static org.testng.Assert.assertThrows;
import android.content.Context;
import android.media.MediaRoute2Info;
import android.media.MediaRouter2;
+import android.media.MediaRouter2.RouteCallback;
import android.media.MediaRouter2.RouteSessionController;
import android.media.MediaRouter2.SessionCallback;
import android.net.Uri;
@@ -205,29 +207,40 @@ public class MediaRouter2Test {
}
@Test
- public void testRequestCreateSessionWithInvalidArguments() {
- MediaRoute2Info route = new MediaRoute2Info.Builder("id", "name").build();
- String controlCategory = "controlCategory";
+ public void testRegisterSessionCallbackWithInvalidArguments() {
Executor executor = mExecutor;
SessionCallback callback = new SessionCallback();
- // Tests null route
- assertThrows(NullPointerException.class,
- () -> mRouter2.requestCreateSession(null, controlCategory, executor, callback));
-
- // Tests null or empty control category
- assertThrows(IllegalArgumentException.class,
- () -> mRouter2.requestCreateSession(route, null, executor, callback));
- assertThrows(IllegalArgumentException.class,
- () -> mRouter2.requestCreateSession(route, "", executor, callback));
-
// Tests null executor
assertThrows(NullPointerException.class,
- () -> mRouter2.requestCreateSession(route, controlCategory, null, callback));
+ () -> mRouter2.registerSessionCallback(null, callback));
// Tests null callback
assertThrows(NullPointerException.class,
- () -> mRouter2.requestCreateSession(route, controlCategory, executor, null));
+ () -> mRouter2.registerSessionCallback(executor, null));
+ }
+
+ @Test
+ public void testUnregisterSessionCallbackWithNullCallback() {
+ // Tests null callback
+ assertThrows(NullPointerException.class,
+ () -> mRouter2.unregisterSessionCallback(null));
+ }
+
+ @Test
+ public void testRequestCreateSessionWithInvalidArguments() {
+ MediaRoute2Info route = new MediaRoute2Info.Builder("id", "name").build();
+ String controlCategory = "controlCategory";
+
+ // Tests null route
+ assertThrows(NullPointerException.class,
+ () -> mRouter2.requestCreateSession(null, controlCategory));
+
+ // Tests null or empty control category
+ assertThrows(IllegalArgumentException.class,
+ () -> mRouter2.requestCreateSession(route, null));
+ assertThrows(IllegalArgumentException.class,
+ () -> mRouter2.requestCreateSession(route, ""));
}
@Test
@@ -243,7 +256,7 @@ public class MediaRouter2Test {
final CountDownLatch failureLatch = new CountDownLatch(1);
// Create session with this route
- SessionCallback callback = new SessionCallback() {
+ SessionCallback sessionCallback = new SessionCallback() {
@Override
public void onSessionCreated(RouteSessionController controller) {
assertNotNull(controller);
@@ -253,19 +266,27 @@ public class MediaRouter2Test {
}
@Override
- public void onSessionCreationFailed() {
+ public void onSessionCreationFailed(MediaRoute2Info requestedRoute,
+ String requestedControlCategory) {
failureLatch.countDown();
}
};
// TODO: Remove this once the MediaRouter2 becomes always connected to the service.
- mRouter2.registerCallback(mExecutor, new MediaRouter2.RouteCallback());
+ RouteCallback routeCallback = new RouteCallback();
+ mRouter2.registerRouteCallback(mExecutor, routeCallback);
- mRouter2.requestCreateSession(route, CATEGORY_SAMPLE, mExecutor, callback);
- assertTrue(successLatch.await(TIMEOUT_MS, TimeUnit.MILLISECONDS));
+ try {
+ mRouter2.registerSessionCallback(mExecutor, sessionCallback);
+ mRouter2.requestCreateSession(route, CATEGORY_SAMPLE);
+ assertTrue(successLatch.await(TIMEOUT_MS, TimeUnit.MILLISECONDS));
- // onSessionCreationFailed should not be called.
- assertFalse(failureLatch.await(TIMEOUT_MS, TimeUnit.MILLISECONDS));
+ // onSessionCreationFailed should not be called.
+ assertFalse(failureLatch.await(TIMEOUT_MS, TimeUnit.MILLISECONDS));
+ } finally {
+ mRouter2.unregisterRouteCallback(routeCallback);
+ mRouter2.unregisterSessionCallback(sessionCallback);
+ }
}
@Test
@@ -281,31 +302,142 @@ public class MediaRouter2Test {
final CountDownLatch failureLatch = new CountDownLatch(1);
// Create session with this route
- SessionCallback callback = new SessionCallback() {
+ SessionCallback sessionCallback = new SessionCallback() {
@Override
public void onSessionCreated(RouteSessionController controller) {
successLatch.countDown();
}
@Override
- public void onSessionCreationFailed() {
+ public void onSessionCreationFailed(MediaRoute2Info requestedRoute,
+ String requestedControlCategory) {
+ assertEquals(route, requestedRoute);
+ assertTrue(TextUtils.equals(CATEGORY_SAMPLE, requestedControlCategory));
failureLatch.countDown();
}
};
// TODO: Remove this once the MediaRouter2 becomes always connected to the service.
- mRouter2.registerCallback(mExecutor, new MediaRouter2.RouteCallback());
+ RouteCallback routeCallback = new RouteCallback();
+ mRouter2.registerRouteCallback(mExecutor, routeCallback);
- mRouter2.requestCreateSession(route, CATEGORY_SAMPLE, mExecutor, callback);
- assertTrue(failureLatch.await(TIMEOUT_MS, TimeUnit.MILLISECONDS));
+ try {
+ mRouter2.registerSessionCallback(mExecutor, sessionCallback);
+ mRouter2.requestCreateSession(route, CATEGORY_SAMPLE);
+ assertTrue(failureLatch.await(TIMEOUT_MS, TimeUnit.MILLISECONDS));
- // onSessionCreated should not be called.
- assertFalse(successLatch.await(TIMEOUT_MS, TimeUnit.MILLISECONDS));
+ // onSessionCreated should not be called.
+ assertFalse(successLatch.await(TIMEOUT_MS, TimeUnit.MILLISECONDS));
+ } finally {
+ mRouter2.unregisterRouteCallback(routeCallback);
+ mRouter2.unregisterSessionCallback(sessionCallback);
+ }
}
@Test
public void testRequestCreateSessionMultipleSessions() throws Exception {
- // TODO: Test creating multiple sessions (Check the ID of each controller)
+ final List sampleControlCategory = new ArrayList<>();
+ sampleControlCategory.add(CATEGORY_SAMPLE);
+
+ final CountDownLatch successLatch = new CountDownLatch(2);
+ final CountDownLatch failureLatch = new CountDownLatch(1);
+
+ final List createdControllers = new ArrayList<>();
+
+ // Create session with this route
+ SessionCallback sessionCallback = new SessionCallback() {
+ @Override
+ public void onSessionCreated(RouteSessionController controller) {
+ createdControllers.add(controller);
+ successLatch.countDown();
+ }
+
+ @Override
+ public void onSessionCreationFailed(MediaRoute2Info requestedRoute,
+ String requestedControlCategory) {
+ failureLatch.countDown();
+ }
+ };
+
+ Map routes = waitAndGetRoutes(sampleControlCategory);
+ MediaRoute2Info route1 = routes.get(ROUTE_ID1);
+ MediaRoute2Info route2 = routes.get(ROUTE_ID2);
+ assertNotNull(route1);
+ assertNotNull(route2);
+
+ // TODO: Remove this once the MediaRouter2 becomes always connected to the service.
+ RouteCallback routeCallback = new RouteCallback();
+ mRouter2.registerRouteCallback(mExecutor, routeCallback);
+
+ try {
+ mRouter2.registerSessionCallback(mExecutor, sessionCallback);
+ mRouter2.requestCreateSession(route1, CATEGORY_SAMPLE);
+ mRouter2.requestCreateSession(route2, CATEGORY_SAMPLE);
+ assertTrue(successLatch.await(TIMEOUT_MS, TimeUnit.MILLISECONDS));
+
+ // onSessionCreationFailed should not be called.
+ assertFalse(failureLatch.await(TIMEOUT_MS, TimeUnit.MILLISECONDS));
+
+ // Created controllers should have proper info
+ assertEquals(2, createdControllers.size());
+ RouteSessionController controller1 = createdControllers.get(0);
+ RouteSessionController controller2 = createdControllers.get(1);
+
+ assertNotEquals(controller1.getSessionId(), controller2.getSessionId());
+ assertTrue(controller1.getSelectedRoutes().contains(ROUTE_ID1));
+ assertTrue(controller2.getSelectedRoutes().contains(ROUTE_ID2));
+ assertTrue(TextUtils.equals(CATEGORY_SAMPLE, controller1.getControlCategory()));
+ assertTrue(TextUtils.equals(CATEGORY_SAMPLE, controller2.getControlCategory()));
+ } finally {
+ mRouter2.unregisterRouteCallback(routeCallback);
+ mRouter2.unregisterSessionCallback(sessionCallback);
+ }
+ }
+
+ @Test
+ public void testSessionCallbackIsNotCalledAfterUnregistered() throws Exception {
+ final List sampleControlCategory = new ArrayList<>();
+ sampleControlCategory.add(CATEGORY_SAMPLE);
+
+ Map routes = waitAndGetRoutes(sampleControlCategory);
+ MediaRoute2Info route = routes.get(ROUTE_ID1);
+ assertNotNull(route);
+
+ final CountDownLatch successLatch = new CountDownLatch(1);
+ final CountDownLatch failureLatch = new CountDownLatch(1);
+
+ // Create session with this route
+ SessionCallback sessionCallback = new SessionCallback() {
+ @Override
+ public void onSessionCreated(RouteSessionController controller) {
+ successLatch.countDown();
+ }
+
+ @Override
+ public void onSessionCreationFailed(MediaRoute2Info requestedRoute,
+ String requestedControlCategory) {
+ failureLatch.countDown();
+ }
+ };
+
+ // TODO: Remove this once the MediaRouter2 becomes always connected to the service.
+ RouteCallback routeCallback = new RouteCallback();
+ mRouter2.registerRouteCallback(mExecutor, routeCallback);
+
+ try {
+ mRouter2.registerSessionCallback(mExecutor, sessionCallback);
+ mRouter2.requestCreateSession(route, CATEGORY_SAMPLE);
+
+ // Unregisters session callback
+ mRouter2.unregisterSessionCallback(sessionCallback);
+
+ // No session callback methods should be called.
+ assertFalse(successLatch.await(TIMEOUT_MS, TimeUnit.MILLISECONDS));
+ assertFalse(failureLatch.await(TIMEOUT_MS, TimeUnit.MILLISECONDS));
+ } finally {
+ mRouter2.unregisterRouteCallback(routeCallback);
+ mRouter2.unregisterSessionCallback(sessionCallback);
+ }
}
// Helper for getting routes easily
@@ -323,8 +455,7 @@ public class MediaRouter2Test {
CountDownLatch latch = new CountDownLatch(1);
// A dummy callback is required to send control category info.
- MediaRouter2.RouteCallback
- routeCallback = new MediaRouter2.RouteCallback() {
+ RouteCallback routeCallback = new RouteCallback() {
@Override
public void onRoutesAdded(List routes) {
for (int i = 0; i < routes.size(); i++) {
@@ -337,20 +468,19 @@ public class MediaRouter2Test {
};
mRouter2.setControlCategories(controlCategories);
- mRouter2.registerCallback(mExecutor, routeCallback);
+ mRouter2.registerRouteCallback(mExecutor, routeCallback);
try {
latch.await(TIMEOUT_MS, TimeUnit.MILLISECONDS);
return createRouteMap(mRouter2.getRoutes());
} finally {
- mRouter2.unregisterCallback(routeCallback);
+ mRouter2.unregisterRouteCallback(routeCallback);
}
}
void awaitOnRouteChanged(Runnable task, String routeId,
Predicate predicate) throws Exception {
CountDownLatch latch = new CountDownLatch(1);
- MediaRouter2.RouteCallback
- routeCallback = new MediaRouter2.RouteCallback() {
+ RouteCallback routeCallback = new RouteCallback() {
@Override
public void onRoutesChanged(List changed) {
MediaRoute2Info route = createRouteMap(changed).get(routeId);
@@ -359,12 +489,12 @@ public class MediaRouter2Test {
}
}
};
- mRouter2.registerCallback(mExecutor, routeCallback);
+ mRouter2.registerRouteCallback(mExecutor, routeCallback);
try {
task.run();
assertTrue(latch.await(TIMEOUT_MS, TimeUnit.MILLISECONDS));
} finally {
- mRouter2.unregisterCallback(routeCallback);
+ mRouter2.unregisterRouteCallback(routeCallback);
}
}
}
diff --git a/media/tests/MediaRouter/src/com/android/mediaroutertest/MediaRouterManagerTest.java b/media/tests/MediaRouter/src/com/android/mediaroutertest/MediaRouterManagerTest.java
index 728745a9f94df..cd3b50af91279 100644
--- a/media/tests/MediaRouter/src/com/android/mediaroutertest/MediaRouterManagerTest.java
+++ b/media/tests/MediaRouter/src/com/android/mediaroutertest/MediaRouterManagerTest.java
@@ -384,12 +384,12 @@ public class MediaRouterManagerTest {
};
mManager.registerCallback(mExecutor, managerCallback);
mRouter2.setControlCategories(controlCategories);
- mRouter2.registerCallback(mExecutor, routeCallback);
+ mRouter2.registerRouteCallback(mExecutor, routeCallback);
try {
latch.await(TIMEOUT_MS, TimeUnit.MILLISECONDS);
return createRouteMap(mManager.getAvailableRoutes(mPackageName));
} finally {
- mRouter2.unregisterCallback(routeCallback);
+ mRouter2.unregisterRouteCallback(routeCallback);
mManager.unregisterCallback(managerCallback);
}
}
@@ -432,7 +432,7 @@ public class MediaRouterManagerTest {
private void addRouterCallback(RouteCallback routeCallback) {
mRouteCallbacks.add(routeCallback);
- mRouter2.registerCallback(mExecutor, routeCallback);
+ mRouter2.registerRouteCallback(mExecutor, routeCallback);
}
private void clearCallbacks() {
@@ -442,7 +442,7 @@ public class MediaRouterManagerTest {
mManagerCallbacks.clear();
for (RouteCallback routeCallback : mRouteCallbacks) {
- mRouter2.unregisterCallback(routeCallback);
+ mRouter2.unregisterRouteCallback(routeCallback);
}
mRouteCallbacks.clear();
}