Merge "Merge "Make MediaRouter2Manager connect to the system ASAP" into rvc-dev am: 15cd47ed26" into rvc-dev-plus-aosp am: 4b91451a62 am: e05e6dd25b
Change-Id: I14f4d8f04abd90de1467bb7b37534a255acd1280
This commit is contained in:
@@ -100,6 +100,7 @@ public final class MediaRouter2Manager {
|
|||||||
.getSystemService(Context.MEDIA_SESSION_SERVICE);
|
.getSystemService(Context.MEDIA_SESSION_SERVICE);
|
||||||
mPackageName = mContext.getPackageName();
|
mPackageName = mContext.getPackageName();
|
||||||
mHandler = new Handler(context.getMainLooper());
|
mHandler = new Handler(context.getMainLooper());
|
||||||
|
mHandler.post(this::getOrCreateClient);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -118,18 +119,6 @@ public final class MediaRouter2Manager {
|
|||||||
Log.w(TAG, "Ignoring to add the same callback twice.");
|
Log.w(TAG, "Ignoring to add the same callback twice.");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
synchronized (sLock) {
|
|
||||||
if (mClient == null) {
|
|
||||||
Client client = new Client();
|
|
||||||
try {
|
|
||||||
mMediaRouterService.registerManager(client, mPackageName);
|
|
||||||
mClient = client;
|
|
||||||
} catch (RemoteException ex) {
|
|
||||||
Log.e(TAG, "Unable to register media router manager.", ex);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -144,21 +133,6 @@ public final class MediaRouter2Manager {
|
|||||||
Log.w(TAG, "unregisterCallback: Ignore unknown callback. " + callback);
|
Log.w(TAG, "unregisterCallback: Ignore unknown callback. " + callback);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
synchronized (sLock) {
|
|
||||||
if (mCallbackRecords.size() == 0) {
|
|
||||||
if (mClient != null) {
|
|
||||||
try {
|
|
||||||
mMediaRouterService.unregisterManager(mClient);
|
|
||||||
} catch (RemoteException ex) {
|
|
||||||
Log.e(TAG, "Unable to unregister media router manager", ex);
|
|
||||||
}
|
|
||||||
mClient = null;
|
|
||||||
}
|
|
||||||
mRoutes.clear();
|
|
||||||
mPreferredFeaturesMap.clear();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -314,10 +288,7 @@ public final class MediaRouter2Manager {
|
|||||||
*/
|
*/
|
||||||
@NonNull
|
@NonNull
|
||||||
public List<RoutingSessionInfo> getActiveSessions() {
|
public List<RoutingSessionInfo> getActiveSessions() {
|
||||||
Client client;
|
Client client = getOrCreateClient();
|
||||||
synchronized (sLock) {
|
|
||||||
client = mClient;
|
|
||||||
}
|
|
||||||
if (client != null) {
|
if (client != null) {
|
||||||
try {
|
try {
|
||||||
return mMediaRouterService.getActiveSessions(client);
|
return mMediaRouterService.getActiveSessions(client);
|
||||||
@@ -380,10 +351,7 @@ public final class MediaRouter2Manager {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
Client client;
|
Client client = getOrCreateClient();
|
||||||
synchronized (sLock) {
|
|
||||||
client = mClient;
|
|
||||||
}
|
|
||||||
if (client != null) {
|
if (client != null) {
|
||||||
try {
|
try {
|
||||||
int requestId = mNextRequestId.getAndIncrement();
|
int requestId = mNextRequestId.getAndIncrement();
|
||||||
@@ -419,10 +387,7 @@ public final class MediaRouter2Manager {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
Client client;
|
Client client = getOrCreateClient();
|
||||||
synchronized (sLock) {
|
|
||||||
client = mClient;
|
|
||||||
}
|
|
||||||
if (client != null) {
|
if (client != null) {
|
||||||
try {
|
try {
|
||||||
int requestId = mNextRequestId.getAndIncrement();
|
int requestId = mNextRequestId.getAndIncrement();
|
||||||
@@ -451,10 +416,7 @@ public final class MediaRouter2Manager {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
Client client;
|
Client client = getOrCreateClient();
|
||||||
synchronized (sLock) {
|
|
||||||
client = mClient;
|
|
||||||
}
|
|
||||||
if (client != null) {
|
if (client != null) {
|
||||||
try {
|
try {
|
||||||
int requestId = mNextRequestId.getAndIncrement();
|
int requestId = mNextRequestId.getAndIncrement();
|
||||||
@@ -710,15 +672,12 @@ public final class MediaRouter2Manager {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
Client client;
|
Client client = getOrCreateClient();
|
||||||
synchronized (sLock) {
|
|
||||||
client = mClient;
|
|
||||||
}
|
|
||||||
if (client != null) {
|
if (client != null) {
|
||||||
try {
|
try {
|
||||||
int requestId = mNextRequestId.getAndIncrement();
|
int requestId = mNextRequestId.getAndIncrement();
|
||||||
mMediaRouterService.selectRouteWithManager(
|
mMediaRouterService.selectRouteWithManager(
|
||||||
mClient, requestId, sessionInfo.getId(), route);
|
client, 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);
|
||||||
}
|
}
|
||||||
@@ -755,15 +714,12 @@ public final class MediaRouter2Manager {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
Client client;
|
Client client = getOrCreateClient();
|
||||||
synchronized (sLock) {
|
|
||||||
client = mClient;
|
|
||||||
}
|
|
||||||
if (client != null) {
|
if (client != null) {
|
||||||
try {
|
try {
|
||||||
int requestId = mNextRequestId.getAndIncrement();
|
int requestId = mNextRequestId.getAndIncrement();
|
||||||
mMediaRouterService.deselectRouteWithManager(
|
mMediaRouterService.deselectRouteWithManager(
|
||||||
mClient, requestId, sessionInfo.getId(), route);
|
client, 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);
|
||||||
}
|
}
|
||||||
@@ -794,14 +750,11 @@ public final class MediaRouter2Manager {
|
|||||||
int requestId = mNextRequestId.getAndIncrement();
|
int requestId = mNextRequestId.getAndIncrement();
|
||||||
mTransferRequests.add(new TransferRequest(requestId, sessionInfo, route));
|
mTransferRequests.add(new TransferRequest(requestId, sessionInfo, route));
|
||||||
|
|
||||||
Client client;
|
Client client = getOrCreateClient();
|
||||||
synchronized (sLock) {
|
|
||||||
client = mClient;
|
|
||||||
}
|
|
||||||
if (client != null) {
|
if (client != null) {
|
||||||
try {
|
try {
|
||||||
mMediaRouterService.transferToRouteWithManager(
|
mMediaRouterService.transferToRouteWithManager(
|
||||||
mClient, requestId, sessionInfo.getId(), route);
|
client, 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);
|
||||||
}
|
}
|
||||||
@@ -821,15 +774,12 @@ public final class MediaRouter2Manager {
|
|||||||
public void releaseSession(@NonNull RoutingSessionInfo sessionInfo) {
|
public void releaseSession(@NonNull RoutingSessionInfo sessionInfo) {
|
||||||
Objects.requireNonNull(sessionInfo, "sessionInfo must not be null");
|
Objects.requireNonNull(sessionInfo, "sessionInfo must not be null");
|
||||||
|
|
||||||
Client client;
|
Client client = getOrCreateClient();
|
||||||
synchronized (sLock) {
|
|
||||||
client = mClient;
|
|
||||||
}
|
|
||||||
if (client != null) {
|
if (client != null) {
|
||||||
try {
|
try {
|
||||||
int requestId = mNextRequestId.getAndIncrement();
|
int requestId = mNextRequestId.getAndIncrement();
|
||||||
mMediaRouterService.releaseSessionWithManager(
|
mMediaRouterService.releaseSessionWithManager(
|
||||||
mClient, requestId, sessionInfo.getId());
|
client, 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);
|
||||||
}
|
}
|
||||||
@@ -857,6 +807,23 @@ public final class MediaRouter2Manager {
|
|||||||
sessionInfo.getOwnerPackageName());
|
sessionInfo.getOwnerPackageName());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private Client getOrCreateClient() {
|
||||||
|
synchronized (sLock) {
|
||||||
|
if (mClient != null) {
|
||||||
|
return mClient;
|
||||||
|
}
|
||||||
|
Client client = new Client();
|
||||||
|
try {
|
||||||
|
mMediaRouterService.registerManager(client, mPackageName);
|
||||||
|
mClient = client;
|
||||||
|
return client;
|
||||||
|
} catch (RemoteException ex) {
|
||||||
|
Log.e(TAG, "Unable to register media router manager.", ex);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Interface for receiving events about media routing changes.
|
* Interface for receiving events about media routing changes.
|
||||||
*/
|
*/
|
||||||
|
|||||||
@@ -603,6 +603,11 @@ public class MediaRouter2ManagerTest {
|
|||||||
assertTrue(onSessionCreatedLatch.await(TIMEOUT_MS, TimeUnit.MILLISECONDS));
|
assertTrue(onSessionCreatedLatch.await(TIMEOUT_MS, TimeUnit.MILLISECONDS));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void testGetActiveSessions_returnsNonEmptyList() {
|
||||||
|
assertFalse(mManager.getActiveSessions().isEmpty());
|
||||||
|
}
|
||||||
|
|
||||||
Map<String, MediaRoute2Info> waitAndGetRoutesWithManager(List<String> routeFeatures)
|
Map<String, MediaRoute2Info> waitAndGetRoutesWithManager(List<String> routeFeatures)
|
||||||
throws Exception {
|
throws Exception {
|
||||||
CountDownLatch addedLatch = new CountDownLatch(1);
|
CountDownLatch addedLatch = new CountDownLatch(1);
|
||||||
|
|||||||
Reference in New Issue
Block a user