Merge "Remove route features from RoutingSessionInfo related APIs"
This commit is contained in:
@@ -24,8 +24,7 @@ import android.media.IMediaRoute2ProviderClient;
|
||||
*/
|
||||
oneway interface IMediaRoute2Provider {
|
||||
void setClient(IMediaRoute2ProviderClient client);
|
||||
void requestCreateSession(String packageName, String routeId,
|
||||
String routeFeature, long requestId);
|
||||
void requestCreateSession(String packageName, String routeId, long requestId);
|
||||
void releaseSession(String sessionId);
|
||||
|
||||
void selectRoute(String sessionId, String routeId);
|
||||
|
||||
@@ -47,12 +47,12 @@ interface IMediaRouterService {
|
||||
List<MediaRoute2Info> getSystemRoutes();
|
||||
void registerClient2(IMediaRouter2Client client, String packageName);
|
||||
void unregisterClient2(IMediaRouter2Client client);
|
||||
void sendControlRequest(IMediaRouter2Client client, in MediaRoute2Info route, in Intent request);
|
||||
void sendControlRequest(IMediaRouter2Client client, in MediaRoute2Info route,
|
||||
in Intent request);
|
||||
void requestSetVolume2(IMediaRouter2Client client, in MediaRoute2Info route, int volume);
|
||||
void requestUpdateVolume2(IMediaRouter2Client client, in MediaRoute2Info route, int direction);
|
||||
|
||||
void requestCreateSession(IMediaRouter2Client client, in MediaRoute2Info route,
|
||||
String routeFeature, int requestId);
|
||||
void requestCreateSession(IMediaRouter2Client client, in MediaRoute2Info route, int requestId);
|
||||
void setDiscoveryRequest2(IMediaRouter2Client client, in RouteDiscoveryPreference preference);
|
||||
void selectRoute(IMediaRouter2Client client, String sessionId, in MediaRoute2Info route);
|
||||
void deselectRoute(IMediaRouter2Client client, String sessionId, in MediaRoute2Info route);
|
||||
|
||||
@@ -161,8 +161,8 @@ public abstract class MediaRoute2ProviderService extends Service {
|
||||
* @param sessionInfo information of the new session.
|
||||
* The {@link RoutingSessionInfo#getId() id} of the session must be unique.
|
||||
* @param requestId id of the previous request to create this session provided in
|
||||
* {@link #onCreateSession(String, String, String, long)}
|
||||
* @see #onCreateSession(String, String, String, long)
|
||||
* {@link #onCreateSession(String, String, long)}
|
||||
* @see #onCreateSession(String, String, long)
|
||||
* @hide
|
||||
*/
|
||||
public final void notifySessionCreated(@NonNull RoutingSessionInfo sessionInfo,
|
||||
@@ -196,8 +196,8 @@ public abstract class MediaRoute2ProviderService extends Service {
|
||||
* Notifies clients of that the session could not be created.
|
||||
*
|
||||
* @param requestId id of the previous request to create the session provided in
|
||||
* {@link #onCreateSession(String, String, String, long)}.
|
||||
* @see #onCreateSession(String, String, String, long)
|
||||
* {@link #onCreateSession(String, String, long)}.
|
||||
* @see #onCreateSession(String, String, long)
|
||||
* @hide
|
||||
*/
|
||||
public final void notifySessionCreationFailed(long requestId) {
|
||||
@@ -289,16 +289,15 @@ public abstract class MediaRoute2ProviderService extends Service {
|
||||
*
|
||||
* @param packageName the package name of the application that selected the route
|
||||
* @param routeId the id of the route initially being connected
|
||||
* @param routeFeature the route feature of the new session
|
||||
* @param requestId the id of this session creation request
|
||||
*
|
||||
* @see RoutingSessionInfo.Builder#Builder(String, String, String)
|
||||
* @see RoutingSessionInfo.Builder#Builder(String, String)
|
||||
* @see RoutingSessionInfo.Builder#addSelectedRoute(String)
|
||||
* @see RoutingSessionInfo.Builder#setControlHints(Bundle)
|
||||
* @hide
|
||||
*/
|
||||
public abstract void onCreateSession(@NonNull String packageName, @NonNull String routeId,
|
||||
@NonNull String routeFeature, long requestId);
|
||||
long requestId);
|
||||
|
||||
/**
|
||||
* Called when the session should be released. A client of the session or system can request
|
||||
@@ -433,14 +432,12 @@ public abstract class MediaRoute2ProviderService extends Service {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void requestCreateSession(String packageName, String routeId,
|
||||
String routeFeature, long requestId) {
|
||||
public void requestCreateSession(String packageName, String routeId, long requestId) {
|
||||
if (!checkCallerisSystem()) {
|
||||
return;
|
||||
}
|
||||
mHandler.sendMessage(obtainMessage(MediaRoute2ProviderService::onCreateSession,
|
||||
MediaRoute2ProviderService.this, packageName, routeId, routeFeature,
|
||||
requestId));
|
||||
MediaRoute2ProviderService.this, packageName, routeId, requestId));
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@@ -284,26 +284,20 @@ public class MediaRouter2 {
|
||||
* 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 routeFeature the route feature of the session. Should not be empty.
|
||||
*
|
||||
* @see SessionCallback#onSessionCreated
|
||||
* @see SessionCallback#onSessionCreationFailed
|
||||
* @hide
|
||||
*/
|
||||
@NonNull
|
||||
public void requestCreateSession(@NonNull MediaRoute2Info route,
|
||||
@NonNull String routeFeature) {
|
||||
public void requestCreateSession(@NonNull MediaRoute2Info route) {
|
||||
Objects.requireNonNull(route, "route must not be null");
|
||||
if (TextUtils.isEmpty(routeFeature)) {
|
||||
throw new IllegalArgumentException("routeFeature must not be empty");
|
||||
}
|
||||
// TODO: Check the given route exists
|
||||
// TODO: Check the route supports the given routeFeature
|
||||
|
||||
final int requestId;
|
||||
requestId = mSessionCreationRequestCnt.getAndIncrement();
|
||||
|
||||
SessionCreationRequest request = new SessionCreationRequest(requestId, route, routeFeature);
|
||||
SessionCreationRequest request = new SessionCreationRequest(requestId, route);
|
||||
mSessionCreationRequests.add(request);
|
||||
|
||||
Client2 client;
|
||||
@@ -312,7 +306,7 @@ public class MediaRouter2 {
|
||||
}
|
||||
if (client != null) {
|
||||
try {
|
||||
mMediaRouterService.requestCreateSession(client, route, routeFeature, requestId);
|
||||
mMediaRouterService.requestCreateSession(client, route, requestId);
|
||||
} catch (RemoteException ex) {
|
||||
Log.e(TAG, "Unable to request to create session.", ex);
|
||||
mHandler.sendMessage(obtainMessage(MediaRouter2::createControllerOnHandler,
|
||||
@@ -468,27 +462,18 @@ public class MediaRouter2 {
|
||||
mSessionCreationRequests.remove(matchingRequest);
|
||||
|
||||
MediaRoute2Info requestedRoute = matchingRequest.mRoute;
|
||||
String requestedRouteFeature = matchingRequest.mRouteFeature;
|
||||
|
||||
if (sessionInfo == null) {
|
||||
// TODO: We may need to distinguish between failure and rejection.
|
||||
// One way can be introducing 'reason'.
|
||||
notifySessionCreationFailed(requestedRoute, requestedRouteFeature);
|
||||
return;
|
||||
} else if (!TextUtils.equals(requestedRouteFeature,
|
||||
sessionInfo.getRouteFeature())) {
|
||||
Log.w(TAG, "The session has different route feature from what we requested. "
|
||||
+ "(requested=" + requestedRouteFeature
|
||||
+ ", actual=" + sessionInfo.getRouteFeature()
|
||||
+ ")");
|
||||
notifySessionCreationFailed(requestedRoute, requestedRouteFeature);
|
||||
notifySessionCreationFailed(requestedRoute);
|
||||
return;
|
||||
} 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, requestedRouteFeature);
|
||||
notifySessionCreationFailed(requestedRoute);
|
||||
return;
|
||||
} else if (!TextUtils.equals(requestedRoute.getProviderId(),
|
||||
sessionInfo.getProviderId())) {
|
||||
@@ -496,7 +481,7 @@ public class MediaRouter2 {
|
||||
+ "(requested route's providerId=" + requestedRoute.getProviderId()
|
||||
+ ", actual providerId=" + sessionInfo.getProviderId()
|
||||
+ ")");
|
||||
notifySessionCreationFailed(requestedRoute, requestedRouteFeature);
|
||||
notifySessionCreationFailed(requestedRoute);
|
||||
return;
|
||||
}
|
||||
}
|
||||
@@ -617,10 +602,10 @@ public class MediaRouter2 {
|
||||
}
|
||||
}
|
||||
|
||||
private void notifySessionCreationFailed(MediaRoute2Info route, String routeFeature) {
|
||||
private void notifySessionCreationFailed(MediaRoute2Info route) {
|
||||
for (SessionCallbackRecord record: mSessionCallbackRecords) {
|
||||
record.mExecutor.execute(
|
||||
() -> record.mSessionCallback.onSessionCreationFailed(route, routeFeature));
|
||||
() -> record.mSessionCallback.onSessionCreationFailed(route));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -688,10 +673,8 @@ public class MediaRouter2 {
|
||||
* Called when the session creation request failed.
|
||||
*
|
||||
* @param requestedRoute the route info which was used for the request
|
||||
* @param requestedRouteFeature the route feature which was used for the request
|
||||
*/
|
||||
public void onSessionCreationFailed(@NonNull MediaRoute2Info requestedRoute,
|
||||
@NonNull String requestedRouteFeature) {}
|
||||
public void onSessionCreationFailed(@NonNull MediaRoute2Info requestedRoute) {}
|
||||
|
||||
/**
|
||||
* Called when the session info has changed.
|
||||
@@ -752,16 +735,6 @@ public class MediaRouter2 {
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @return the feature which is used by the session mainly.
|
||||
*/
|
||||
@NonNull
|
||||
public String getRouteFeature() {
|
||||
synchronized (mControllerLock) {
|
||||
return mSessionInfo.getRouteFeature();
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @return the control hints used to control routing session if available.
|
||||
*/
|
||||
@@ -1012,7 +985,6 @@ public class MediaRouter2 {
|
||||
StringBuilder result = new StringBuilder()
|
||||
.append("RoutingController{ ")
|
||||
.append("sessionId=").append(getSessionId())
|
||||
.append(", routeFeature=").append(getRouteFeature())
|
||||
.append(", selectedRoutes={")
|
||||
.append(selectedRoutes)
|
||||
.append("}")
|
||||
@@ -1122,13 +1094,10 @@ public class MediaRouter2 {
|
||||
|
||||
final class SessionCreationRequest {
|
||||
public final MediaRoute2Info mRoute;
|
||||
public final String mRouteFeature;
|
||||
public final int mRequestId;
|
||||
|
||||
SessionCreationRequest(int requestId, @NonNull MediaRoute2Info route,
|
||||
@NonNull String routeFeature) {
|
||||
SessionCreationRequest(int requestId, @NonNull MediaRoute2Info route) {
|
||||
mRoute = route;
|
||||
mRouteFeature = routeFeature;
|
||||
mRequestId = requestId;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -51,7 +51,6 @@ public final class RoutingSessionInfo implements Parcelable {
|
||||
|
||||
final String mId;
|
||||
final String mClientPackageName;
|
||||
final String mRouteFeature;
|
||||
@Nullable
|
||||
final String mProviderId;
|
||||
final List<String> mSelectedRoutes;
|
||||
@@ -66,7 +65,6 @@ public final class RoutingSessionInfo implements Parcelable {
|
||||
|
||||
mId = builder.mId;
|
||||
mClientPackageName = builder.mClientPackageName;
|
||||
mRouteFeature = builder.mRouteFeature;
|
||||
mProviderId = builder.mProviderId;
|
||||
|
||||
// TODO: Needs to check that the routes already have unique IDs.
|
||||
@@ -87,7 +85,6 @@ public final class RoutingSessionInfo implements Parcelable {
|
||||
|
||||
mId = ensureString(src.readString());
|
||||
mClientPackageName = ensureString(src.readString());
|
||||
mRouteFeature = ensureString(src.readString());
|
||||
mProviderId = src.readString();
|
||||
|
||||
mSelectedRoutes = ensureList(src.createStringArrayList());
|
||||
@@ -119,7 +116,7 @@ public final class RoutingSessionInfo implements Parcelable {
|
||||
* In order to ensure uniqueness in {@link MediaRouter2} side, the value of this method
|
||||
* can be different from what was set in {@link MediaRoute2ProviderService}.
|
||||
*
|
||||
* @see Builder#Builder(String, String, String)
|
||||
* @see Builder#Builder(String, String)
|
||||
*/
|
||||
@NonNull
|
||||
public String getId() {
|
||||
@@ -131,7 +128,7 @@ public final class RoutingSessionInfo implements Parcelable {
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets the original id set by {@link Builder#Builder(String, String, String)}.
|
||||
* Gets the original id set by {@link Builder#Builder(String, String)}.
|
||||
* @hide
|
||||
*/
|
||||
@NonNull
|
||||
@@ -147,15 +144,6 @@ public final class RoutingSessionInfo implements Parcelable {
|
||||
return mClientPackageName;
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets the route feature of the session.
|
||||
* Routes that don't have the feature can't be selected into the session.
|
||||
*/
|
||||
@NonNull
|
||||
public String getRouteFeature() {
|
||||
return mRouteFeature;
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets the provider id of the session.
|
||||
* @hide
|
||||
@@ -214,7 +202,6 @@ public final class RoutingSessionInfo implements Parcelable {
|
||||
public void writeToParcel(@NonNull Parcel dest, int flags) {
|
||||
dest.writeString(mId);
|
||||
dest.writeString(mClientPackageName);
|
||||
dest.writeString(mRouteFeature);
|
||||
dest.writeString(mProviderId);
|
||||
dest.writeStringList(mSelectedRoutes);
|
||||
dest.writeStringList(mSelectableRoutes);
|
||||
@@ -235,7 +222,6 @@ public final class RoutingSessionInfo implements Parcelable {
|
||||
RoutingSessionInfo other = (RoutingSessionInfo) obj;
|
||||
return Objects.equals(mId, other.mId)
|
||||
&& Objects.equals(mClientPackageName, other.mClientPackageName)
|
||||
&& Objects.equals(mRouteFeature, other.mRouteFeature)
|
||||
&& Objects.equals(mProviderId, other.mProviderId)
|
||||
&& Objects.equals(mSelectedRoutes, other.mSelectedRoutes)
|
||||
&& Objects.equals(mSelectableRoutes, other.mSelectableRoutes)
|
||||
@@ -245,7 +231,7 @@ public final class RoutingSessionInfo implements Parcelable {
|
||||
|
||||
@Override
|
||||
public int hashCode() {
|
||||
return Objects.hash(mId, mClientPackageName, mRouteFeature, mProviderId,
|
||||
return Objects.hash(mId, mClientPackageName, mProviderId,
|
||||
mSelectedRoutes, mSelectableRoutes, mDeselectableRoutes, mTransferrableRoutes);
|
||||
}
|
||||
|
||||
@@ -254,7 +240,6 @@ public final class RoutingSessionInfo implements Parcelable {
|
||||
StringBuilder result = new StringBuilder()
|
||||
.append("RoutingSessionInfo{ ")
|
||||
.append("sessionId=").append(mId)
|
||||
.append(", routeFeature=").append(mRouteFeature)
|
||||
.append(", selectedRoutes={")
|
||||
.append(String.join(",", mSelectedRoutes))
|
||||
.append("}")
|
||||
@@ -295,7 +280,6 @@ public final class RoutingSessionInfo implements Parcelable {
|
||||
public static final class Builder {
|
||||
final String mId;
|
||||
final String mClientPackageName;
|
||||
final String mRouteFeature;
|
||||
String mProviderId;
|
||||
final List<String> mSelectedRoutes;
|
||||
final List<String> mSelectableRoutes;
|
||||
@@ -314,22 +298,16 @@ public final class RoutingSessionInfo implements Parcelable {
|
||||
* @param id ID of the session. Must not be empty.
|
||||
* @param clientPackageName package name of the client app which uses this session.
|
||||
* If is is unknown, then just use an empty string.
|
||||
* @param routeFeature the route feature of session. Must not be empty.
|
||||
* @see MediaRoute2Info#getId()
|
||||
*/
|
||||
public Builder(@NonNull String id, @NonNull String clientPackageName,
|
||||
@NonNull String routeFeature) {
|
||||
public Builder(@NonNull String id, @NonNull String clientPackageName) {
|
||||
if (TextUtils.isEmpty(id)) {
|
||||
throw new IllegalArgumentException("id must not be empty");
|
||||
}
|
||||
Objects.requireNonNull(clientPackageName, "clientPackageName must not be null");
|
||||
if (TextUtils.isEmpty(routeFeature)) {
|
||||
throw new IllegalArgumentException("routeFeature must not be empty");
|
||||
}
|
||||
|
||||
mId = id;
|
||||
mClientPackageName = clientPackageName;
|
||||
mRouteFeature = routeFeature;
|
||||
mSelectedRoutes = new ArrayList<>();
|
||||
mSelectableRoutes = new ArrayList<>();
|
||||
mDeselectableRoutes = new ArrayList<>();
|
||||
@@ -347,7 +325,6 @@ public final class RoutingSessionInfo implements Parcelable {
|
||||
|
||||
mId = sessionInfo.mId;
|
||||
mClientPackageName = sessionInfo.mClientPackageName;
|
||||
mRouteFeature = sessionInfo.mRouteFeature;
|
||||
mProviderId = sessionInfo.mProviderId;
|
||||
|
||||
mSelectedRoutes = new ArrayList<>(sessionInfo.mSelectedRoutes);
|
||||
|
||||
@@ -167,8 +167,7 @@ public class SampleMediaRoute2ProviderService extends MediaRoute2ProviderService
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onCreateSession(String packageName, String routeId, String routeFeature,
|
||||
long requestId) {
|
||||
public void onCreateSession(String packageName, String routeId, long requestId) {
|
||||
MediaRoute2Info route = mRoutes.get(routeId);
|
||||
if (route == null || TextUtils.equals(ROUTE_ID3_SESSION_CREATION_FAILED, routeId)) {
|
||||
// Tell the router that session cannot be created by passing null as sessionInfo.
|
||||
@@ -185,8 +184,7 @@ public class SampleMediaRoute2ProviderService extends MediaRoute2ProviderService
|
||||
.build());
|
||||
mRouteIdToSessionId.put(routeId, sessionId);
|
||||
|
||||
RoutingSessionInfo sessionInfo = new RoutingSessionInfo.Builder(
|
||||
sessionId, packageName, routeFeature)
|
||||
RoutingSessionInfo sessionInfo = new RoutingSessionInfo.Builder(sessionId, packageName)
|
||||
.addSelectedRoute(routeId)
|
||||
.addSelectableRoute(ROUTE_ID4_TO_SELECT_AND_DESELECT)
|
||||
.addTransferrableRoute(ROUTE_ID5_TO_TRANSFER_TO)
|
||||
|
||||
@@ -172,21 +172,8 @@ public class MediaRouter2Test {
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testRequestCreateSessionWithInvalidArguments() {
|
||||
String routeFeature = "routeFeature";
|
||||
MediaRoute2Info route = new MediaRoute2Info.Builder("id", "name")
|
||||
.addFeature(routeFeature)
|
||||
.build();
|
||||
|
||||
// Tests null route
|
||||
assertThrows(NullPointerException.class,
|
||||
() -> mRouter2.requestCreateSession(null, routeFeature));
|
||||
|
||||
// Tests null or empty route feature
|
||||
assertThrows(IllegalArgumentException.class,
|
||||
() -> mRouter2.requestCreateSession(route, null));
|
||||
assertThrows(IllegalArgumentException.class,
|
||||
() -> mRouter2.requestCreateSession(route, ""));
|
||||
public void testRequestCreateSessionWithNullRoute() {
|
||||
assertThrows(NullPointerException.class, () -> mRouter2.requestCreateSession(null));
|
||||
}
|
||||
|
||||
@Test
|
||||
@@ -208,14 +195,12 @@ public class MediaRouter2Test {
|
||||
public void onSessionCreated(RoutingController controller) {
|
||||
assertNotNull(controller);
|
||||
assertTrue(createRouteMap(controller.getSelectedRoutes()).containsKey(ROUTE_ID1));
|
||||
assertTrue(TextUtils.equals(FEATURE_SAMPLE, controller.getRouteFeature()));
|
||||
controllers.add(controller);
|
||||
successLatch.countDown();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onSessionCreationFailed(MediaRoute2Info requestedRoute,
|
||||
String requestedRouteFeature) {
|
||||
public void onSessionCreationFailed(MediaRoute2Info requestedRoute) {
|
||||
failureLatch.countDown();
|
||||
}
|
||||
};
|
||||
@@ -226,7 +211,7 @@ public class MediaRouter2Test {
|
||||
|
||||
try {
|
||||
mRouter2.registerSessionCallback(mExecutor, sessionCallback);
|
||||
mRouter2.requestCreateSession(route, FEATURE_SAMPLE);
|
||||
mRouter2.requestCreateSession(route);
|
||||
assertTrue(successLatch.await(TIMEOUT_MS, TimeUnit.MILLISECONDS));
|
||||
|
||||
// onSessionCreationFailed should not be called.
|
||||
@@ -260,10 +245,8 @@ public class MediaRouter2Test {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onSessionCreationFailed(MediaRoute2Info requestedRoute,
|
||||
String requestedRouteFeature) {
|
||||
public void onSessionCreationFailed(MediaRoute2Info requestedRoute) {
|
||||
assertEquals(route, requestedRoute);
|
||||
assertTrue(TextUtils.equals(FEATURE_SAMPLE, requestedRouteFeature));
|
||||
failureLatch.countDown();
|
||||
}
|
||||
};
|
||||
@@ -274,7 +257,7 @@ public class MediaRouter2Test {
|
||||
|
||||
try {
|
||||
mRouter2.registerSessionCallback(mExecutor, sessionCallback);
|
||||
mRouter2.requestCreateSession(route, FEATURE_SAMPLE);
|
||||
mRouter2.requestCreateSession(route);
|
||||
assertTrue(failureLatch.await(TIMEOUT_MS, TimeUnit.MILLISECONDS));
|
||||
|
||||
// onSessionCreated should not be called.
|
||||
@@ -304,8 +287,7 @@ public class MediaRouter2Test {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onSessionCreationFailed(MediaRoute2Info requestedRoute,
|
||||
String requestedRouteFeature) {
|
||||
public void onSessionCreationFailed(MediaRoute2Info requestedRoute) {
|
||||
failureLatch.countDown();
|
||||
}
|
||||
};
|
||||
@@ -322,8 +304,8 @@ public class MediaRouter2Test {
|
||||
|
||||
try {
|
||||
mRouter2.registerSessionCallback(mExecutor, sessionCallback);
|
||||
mRouter2.requestCreateSession(route1, FEATURE_SAMPLE);
|
||||
mRouter2.requestCreateSession(route2, FEATURE_SAMPLE);
|
||||
mRouter2.requestCreateSession(route1);
|
||||
mRouter2.requestCreateSession(route2);
|
||||
assertTrue(successLatch.await(TIMEOUT_MS, TimeUnit.MILLISECONDS));
|
||||
|
||||
// onSessionCreationFailed should not be called.
|
||||
@@ -337,8 +319,6 @@ public class MediaRouter2Test {
|
||||
assertNotEquals(controller1.getSessionId(), controller2.getSessionId());
|
||||
assertTrue(createRouteMap(controller1.getSelectedRoutes()).containsKey(ROUTE_ID1));
|
||||
assertTrue(createRouteMap(controller2.getSelectedRoutes()).containsKey(ROUTE_ID2));
|
||||
assertTrue(TextUtils.equals(FEATURE_SAMPLE, controller1.getRouteFeature()));
|
||||
assertTrue(TextUtils.equals(FEATURE_SAMPLE, controller2.getRouteFeature()));
|
||||
|
||||
} finally {
|
||||
releaseControllers(createdControllers);
|
||||
@@ -369,8 +349,7 @@ public class MediaRouter2Test {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onSessionCreationFailed(MediaRoute2Info requestedRoute,
|
||||
String requestedRouteFeature) {
|
||||
public void onSessionCreationFailed(MediaRoute2Info requestedRoute) {
|
||||
failureLatch.countDown();
|
||||
}
|
||||
};
|
||||
@@ -381,7 +360,7 @@ public class MediaRouter2Test {
|
||||
|
||||
try {
|
||||
mRouter2.registerSessionCallback(mExecutor, sessionCallback);
|
||||
mRouter2.requestCreateSession(route, FEATURE_SAMPLE);
|
||||
mRouter2.requestCreateSession(route);
|
||||
|
||||
// Unregisters session callback
|
||||
mRouter2.unregisterSessionCallback(sessionCallback);
|
||||
@@ -417,7 +396,6 @@ public class MediaRouter2Test {
|
||||
public void onSessionCreated(RoutingController controller) {
|
||||
assertNotNull(controller);
|
||||
assertTrue(getRouteIds(controller.getSelectedRoutes()).contains(ROUTE_ID1));
|
||||
assertTrue(TextUtils.equals(FEATURE_SAMPLE, controller.getRouteFeature()));
|
||||
controllers.add(controller);
|
||||
onSessionCreatedLatch.countDown();
|
||||
}
|
||||
@@ -470,7 +448,7 @@ public class MediaRouter2Test {
|
||||
|
||||
try {
|
||||
mRouter2.registerSessionCallback(mExecutor, sessionCallback);
|
||||
mRouter2.requestCreateSession(routeToCreateSessionWith, FEATURE_SAMPLE);
|
||||
mRouter2.requestCreateSession(routeToCreateSessionWith);
|
||||
assertTrue(onSessionCreatedLatch.await(TIMEOUT_MS, TimeUnit.MILLISECONDS));
|
||||
|
||||
assertEquals(1, controllers.size());
|
||||
@@ -515,7 +493,6 @@ public class MediaRouter2Test {
|
||||
public void onSessionCreated(RoutingController controller) {
|
||||
assertNotNull(controller);
|
||||
assertTrue(getRouteIds(controller.getSelectedRoutes()).contains(ROUTE_ID1));
|
||||
assertTrue(TextUtils.equals(FEATURE_SAMPLE, controller.getRouteFeature()));
|
||||
controllers.add(controller);
|
||||
onSessionCreatedLatch.countDown();
|
||||
}
|
||||
@@ -552,7 +529,7 @@ public class MediaRouter2Test {
|
||||
|
||||
try {
|
||||
mRouter2.registerSessionCallback(mExecutor, sessionCallback);
|
||||
mRouter2.requestCreateSession(routeToCreateSessionWith, FEATURE_SAMPLE);
|
||||
mRouter2.requestCreateSession(routeToCreateSessionWith);
|
||||
assertTrue(onSessionCreatedLatch.await(TIMEOUT_MS, TimeUnit.MILLISECONDS));
|
||||
|
||||
assertEquals(1, controllers.size());
|
||||
@@ -594,7 +571,6 @@ public class MediaRouter2Test {
|
||||
public void onSessionCreated(RoutingController controller) {
|
||||
assertNotNull(controller);
|
||||
assertTrue(getRouteIds(controller.getSelectedRoutes()).contains(ROUTE_ID1));
|
||||
assertTrue(TextUtils.equals(FEATURE_SAMPLE, controller.getRouteFeature()));
|
||||
controllers.add(controller);
|
||||
onSessionCreatedLatch.countDown();
|
||||
}
|
||||
@@ -617,7 +593,7 @@ public class MediaRouter2Test {
|
||||
|
||||
try {
|
||||
mRouter2.registerSessionCallback(mExecutor, sessionCallback);
|
||||
mRouter2.requestCreateSession(routeToCreateSessionWith, FEATURE_SAMPLE);
|
||||
mRouter2.requestCreateSession(routeToCreateSessionWith);
|
||||
assertTrue(onSessionCreatedLatch.await(TIMEOUT_MS, TimeUnit.MILLISECONDS));
|
||||
|
||||
assertEquals(1, controllers.size());
|
||||
|
||||
@@ -57,65 +57,32 @@ public class RoutingSessionInfoTest {
|
||||
public void testBuilderConstructorWithInvalidValues() {
|
||||
final String nullId = null;
|
||||
final String nullClientPackageName = null;
|
||||
final String nullRouteFeature = null;
|
||||
|
||||
final String emptyId = "";
|
||||
// Note: An empty string as client package name is valid.
|
||||
final String emptyRouteFeature = "";
|
||||
|
||||
final String validId = TEST_ID;
|
||||
final String validClientPackageName = TEST_CLIENT_PACKAGE_NAME;
|
||||
final String validRouteFeature = TEST_ROUTE_FEATURE;
|
||||
|
||||
// ID is invalid
|
||||
assertThrows(IllegalArgumentException.class, () -> new RoutingSessionInfo.Builder(
|
||||
nullId, validClientPackageName, validRouteFeature));
|
||||
nullId, validClientPackageName));
|
||||
assertThrows(IllegalArgumentException.class, () -> new RoutingSessionInfo.Builder(
|
||||
emptyId, validClientPackageName, validRouteFeature));
|
||||
emptyId, validClientPackageName));
|
||||
|
||||
// client package name is invalid (null)
|
||||
assertThrows(NullPointerException.class, () -> new RoutingSessionInfo.Builder(
|
||||
validId, nullClientPackageName, validRouteFeature));
|
||||
validId, nullClientPackageName));
|
||||
|
||||
// route feature is invalid
|
||||
// Both are invalid
|
||||
assertThrows(IllegalArgumentException.class, () -> new RoutingSessionInfo.Builder(
|
||||
validId, validClientPackageName, nullRouteFeature));
|
||||
nullId, nullClientPackageName));
|
||||
assertThrows(IllegalArgumentException.class, () -> new RoutingSessionInfo.Builder(
|
||||
validId, validClientPackageName, emptyRouteFeature));
|
||||
|
||||
// Two arguments are invalid - (1) ID and clientPackageName
|
||||
assertThrows(IllegalArgumentException.class, () -> new RoutingSessionInfo.Builder(
|
||||
nullId, nullClientPackageName, validRouteFeature));
|
||||
assertThrows(IllegalArgumentException.class, () -> new RoutingSessionInfo.Builder(
|
||||
emptyId, nullClientPackageName, validRouteFeature));
|
||||
|
||||
// Two arguments are invalid - (2) ID and routeFeature
|
||||
assertThrows(IllegalArgumentException.class, () -> new RoutingSessionInfo.Builder(
|
||||
nullId, validClientPackageName, nullRouteFeature));
|
||||
assertThrows(IllegalArgumentException.class, () -> new RoutingSessionInfo.Builder(
|
||||
nullId, validClientPackageName, emptyRouteFeature));
|
||||
assertThrows(IllegalArgumentException.class, () -> new RoutingSessionInfo.Builder(
|
||||
emptyId, validClientPackageName, nullRouteFeature));
|
||||
assertThrows(IllegalArgumentException.class, () -> new RoutingSessionInfo.Builder(
|
||||
emptyId, validClientPackageName, emptyRouteFeature));
|
||||
|
||||
// Two arguments are invalid - (3) clientPackageName and routeFeature
|
||||
// Note that this throws NullPointerException.
|
||||
assertThrows(NullPointerException.class, () -> new RoutingSessionInfo.Builder(
|
||||
validId, nullClientPackageName, nullRouteFeature));
|
||||
assertThrows(NullPointerException.class, () -> new RoutingSessionInfo.Builder(
|
||||
validId, nullClientPackageName, emptyRouteFeature));
|
||||
|
||||
// All arguments are invalid
|
||||
assertThrows(IllegalArgumentException.class, () -> new RoutingSessionInfo.Builder(
|
||||
nullId, nullClientPackageName, nullRouteFeature));
|
||||
assertThrows(IllegalArgumentException.class, () -> new RoutingSessionInfo.Builder(
|
||||
nullId, nullClientPackageName, emptyRouteFeature));
|
||||
assertThrows(IllegalArgumentException.class, () -> new RoutingSessionInfo.Builder(
|
||||
emptyId, nullClientPackageName, nullRouteFeature));
|
||||
assertThrows(IllegalArgumentException.class, () -> new RoutingSessionInfo.Builder(
|
||||
emptyId, nullClientPackageName, emptyRouteFeature));
|
||||
emptyId, nullClientPackageName));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testBuilderCopyConstructorWithNull() {
|
||||
// Null RouteInfo (1-argument constructor)
|
||||
final RoutingSessionInfo nullRoutingSessionInfo = null;
|
||||
assertThrows(NullPointerException.class,
|
||||
@@ -127,13 +94,13 @@ public class RoutingSessionInfoTest {
|
||||
// An empty string for client package name is valid. (for unknown cases)
|
||||
// Creating builder with it should not throw any exception.
|
||||
RoutingSessionInfo.Builder builder = new RoutingSessionInfo.Builder(
|
||||
TEST_ID, "" /* clientPackageName*/, TEST_ROUTE_FEATURE);
|
||||
TEST_ID, "" /* clientPackageName*/);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testBuilderBuildWithEmptySelectedRoutesThrowsIAE() {
|
||||
RoutingSessionInfo.Builder builder = new RoutingSessionInfo.Builder(
|
||||
TEST_ID, TEST_CLIENT_PACKAGE_NAME, TEST_ROUTE_FEATURE);
|
||||
TEST_ID, TEST_CLIENT_PACKAGE_NAME);
|
||||
// Note: Calling build() without adding any selected routes.
|
||||
assertThrows(IllegalArgumentException.class, () -> builder.build());
|
||||
}
|
||||
@@ -141,7 +108,7 @@ public class RoutingSessionInfoTest {
|
||||
@Test
|
||||
public void testBuilderAddRouteMethodsWithIllegalArgumentsThrowsIAE() {
|
||||
RoutingSessionInfo.Builder builder = new RoutingSessionInfo.Builder(
|
||||
TEST_ID, TEST_CLIENT_PACKAGE_NAME, TEST_ROUTE_FEATURE);
|
||||
TEST_ID, TEST_CLIENT_PACKAGE_NAME);
|
||||
|
||||
final String nullRouteId = null;
|
||||
final String emptyRouteId = "";
|
||||
@@ -168,7 +135,7 @@ public class RoutingSessionInfoTest {
|
||||
@Test
|
||||
public void testBuilderRemoveRouteMethodsWithIllegalArgumentsThrowsIAE() {
|
||||
RoutingSessionInfo.Builder builder = new RoutingSessionInfo.Builder(
|
||||
TEST_ID, TEST_CLIENT_PACKAGE_NAME, TEST_ROUTE_FEATURE);
|
||||
TEST_ID, TEST_CLIENT_PACKAGE_NAME);
|
||||
|
||||
final String nullRouteId = null;
|
||||
final String emptyRouteId = "";
|
||||
@@ -198,7 +165,7 @@ public class RoutingSessionInfoTest {
|
||||
controlHints.putString(TEST_KEY, TEST_VALUE);
|
||||
|
||||
RoutingSessionInfo sessionInfo = new RoutingSessionInfo.Builder(
|
||||
TEST_ID, TEST_CLIENT_PACKAGE_NAME, TEST_ROUTE_FEATURE)
|
||||
TEST_ID, TEST_CLIENT_PACKAGE_NAME)
|
||||
.addSelectedRoute(TEST_ROUTE_ID_0)
|
||||
.addSelectedRoute(TEST_ROUTE_ID_1)
|
||||
.addSelectableRoute(TEST_ROUTE_ID_2)
|
||||
@@ -212,7 +179,6 @@ public class RoutingSessionInfoTest {
|
||||
|
||||
assertEquals(TEST_ID, sessionInfo.getId());
|
||||
assertEquals(TEST_CLIENT_PACKAGE_NAME, sessionInfo.getClientPackageName());
|
||||
assertEquals(TEST_ROUTE_FEATURE, sessionInfo.getRouteFeature());
|
||||
|
||||
assertEquals(2, sessionInfo.getSelectedRoutes().size());
|
||||
assertEquals(TEST_ROUTE_ID_0, sessionInfo.getSelectedRoutes().get(0));
|
||||
@@ -239,7 +205,7 @@ public class RoutingSessionInfoTest {
|
||||
@Test
|
||||
public void testBuilderAddRouteMethodsWithBuilderCopyConstructor() {
|
||||
RoutingSessionInfo sessionInfo = new RoutingSessionInfo.Builder(
|
||||
TEST_ID, TEST_CLIENT_PACKAGE_NAME, TEST_ROUTE_FEATURE)
|
||||
TEST_ID, TEST_CLIENT_PACKAGE_NAME)
|
||||
.addSelectedRoute(TEST_ROUTE_ID_0)
|
||||
.addSelectableRoute(TEST_ROUTE_ID_2)
|
||||
.addDeselectableRoute(TEST_ROUTE_ID_4)
|
||||
@@ -273,7 +239,7 @@ public class RoutingSessionInfoTest {
|
||||
@Test
|
||||
public void testBuilderRemoveRouteMethods() {
|
||||
RoutingSessionInfo sessionInfo = new RoutingSessionInfo.Builder(
|
||||
TEST_ID, TEST_CLIENT_PACKAGE_NAME, TEST_ROUTE_FEATURE)
|
||||
TEST_ID, TEST_CLIENT_PACKAGE_NAME)
|
||||
.addSelectedRoute(TEST_ROUTE_ID_0)
|
||||
.addSelectedRoute(TEST_ROUTE_ID_1)
|
||||
.removeSelectedRoute(TEST_ROUTE_ID_1)
|
||||
@@ -308,7 +274,7 @@ public class RoutingSessionInfoTest {
|
||||
@Test
|
||||
public void testBuilderRemoveRouteMethodsWithBuilderCopyConstructor() {
|
||||
RoutingSessionInfo sessionInfo = new RoutingSessionInfo.Builder(
|
||||
TEST_ID, TEST_CLIENT_PACKAGE_NAME, TEST_ROUTE_FEATURE)
|
||||
TEST_ID, TEST_CLIENT_PACKAGE_NAME)
|
||||
.addSelectedRoute(TEST_ROUTE_ID_0)
|
||||
.addSelectedRoute(TEST_ROUTE_ID_1)
|
||||
.addSelectableRoute(TEST_ROUTE_ID_2)
|
||||
@@ -342,7 +308,7 @@ public class RoutingSessionInfoTest {
|
||||
@Test
|
||||
public void testBuilderClearRouteMethods() {
|
||||
RoutingSessionInfo sessionInfo = new RoutingSessionInfo.Builder(
|
||||
TEST_ID, TEST_CLIENT_PACKAGE_NAME, TEST_ROUTE_FEATURE)
|
||||
TEST_ID, TEST_CLIENT_PACKAGE_NAME)
|
||||
.addSelectedRoute(TEST_ROUTE_ID_0)
|
||||
.addSelectedRoute(TEST_ROUTE_ID_1)
|
||||
.clearSelectedRoutes()
|
||||
@@ -374,7 +340,7 @@ public class RoutingSessionInfoTest {
|
||||
@Test
|
||||
public void testBuilderClearRouteMethodsWithBuilderCopyConstructor() {
|
||||
RoutingSessionInfo sessionInfo = new RoutingSessionInfo.Builder(
|
||||
TEST_ID, TEST_CLIENT_PACKAGE_NAME, TEST_ROUTE_FEATURE)
|
||||
TEST_ID, TEST_CLIENT_PACKAGE_NAME)
|
||||
.addSelectedRoute(TEST_ROUTE_ID_0)
|
||||
.addSelectedRoute(TEST_ROUTE_ID_1)
|
||||
.addSelectableRoute(TEST_ROUTE_ID_2)
|
||||
@@ -408,7 +374,7 @@ public class RoutingSessionInfoTest {
|
||||
controlHints.putString(TEST_KEY, TEST_VALUE);
|
||||
|
||||
RoutingSessionInfo sessionInfo1 = new RoutingSessionInfo.Builder(
|
||||
TEST_ID, TEST_CLIENT_PACKAGE_NAME, TEST_ROUTE_FEATURE)
|
||||
TEST_ID, TEST_CLIENT_PACKAGE_NAME)
|
||||
.addSelectedRoute(TEST_ROUTE_ID_0)
|
||||
.addSelectedRoute(TEST_ROUTE_ID_1)
|
||||
.addSelectableRoute(TEST_ROUTE_ID_2)
|
||||
@@ -421,7 +387,7 @@ public class RoutingSessionInfoTest {
|
||||
.build();
|
||||
|
||||
RoutingSessionInfo sessionInfo2 = new RoutingSessionInfo.Builder(
|
||||
TEST_ID, TEST_CLIENT_PACKAGE_NAME, TEST_ROUTE_FEATURE)
|
||||
TEST_ID, TEST_CLIENT_PACKAGE_NAME)
|
||||
.addSelectedRoute(TEST_ROUTE_ID_0)
|
||||
.addSelectedRoute(TEST_ROUTE_ID_1)
|
||||
.addSelectableRoute(TEST_ROUTE_ID_2)
|
||||
@@ -443,7 +409,7 @@ public class RoutingSessionInfoTest {
|
||||
controlHints.putString(TEST_KEY, TEST_VALUE);
|
||||
|
||||
RoutingSessionInfo sessionInfo1 = new RoutingSessionInfo.Builder(
|
||||
TEST_ID, TEST_CLIENT_PACKAGE_NAME, TEST_ROUTE_FEATURE)
|
||||
TEST_ID, TEST_CLIENT_PACKAGE_NAME)
|
||||
.addSelectedRoute(TEST_ROUTE_ID_0)
|
||||
.addSelectedRoute(TEST_ROUTE_ID_1)
|
||||
.addSelectableRoute(TEST_ROUTE_ID_2)
|
||||
@@ -467,7 +433,7 @@ public class RoutingSessionInfoTest {
|
||||
controlHints.putString(TEST_KEY, TEST_VALUE);
|
||||
|
||||
RoutingSessionInfo sessionInfo = new RoutingSessionInfo.Builder(
|
||||
TEST_ID, TEST_CLIENT_PACKAGE_NAME, TEST_ROUTE_FEATURE)
|
||||
TEST_ID, TEST_CLIENT_PACKAGE_NAME)
|
||||
.addSelectedRoute(TEST_ROUTE_ID_0)
|
||||
.addSelectedRoute(TEST_ROUTE_ID_1)
|
||||
.addSelectableRoute(TEST_ROUTE_ID_2)
|
||||
@@ -530,7 +496,7 @@ public class RoutingSessionInfoTest {
|
||||
controlHints.putString(TEST_KEY, TEST_VALUE);
|
||||
|
||||
RoutingSessionInfo sessionInfo = new RoutingSessionInfo.Builder(
|
||||
TEST_ID, TEST_CLIENT_PACKAGE_NAME, TEST_ROUTE_FEATURE)
|
||||
TEST_ID, TEST_CLIENT_PACKAGE_NAME)
|
||||
.addSelectedRoute(TEST_ROUTE_ID_0)
|
||||
.addSelectedRoute(TEST_ROUTE_ID_1)
|
||||
.addSelectableRoute(TEST_ROUTE_ID_2)
|
||||
|
||||
@@ -49,8 +49,7 @@ abstract class MediaRoute2Provider {
|
||||
mCallback = callback;
|
||||
}
|
||||
|
||||
public abstract void requestCreateSession(String packageName, String routeId,
|
||||
String routeType, long requestId);
|
||||
public abstract void requestCreateSession(String packageName, String routeId, long requestId);
|
||||
public abstract void releaseSession(String sessionId);
|
||||
|
||||
public abstract void selectRoute(String sessionId, String routeId);
|
||||
|
||||
@@ -73,11 +73,9 @@ final class MediaRoute2ProviderProxy extends MediaRoute2Provider implements Serv
|
||||
}
|
||||
|
||||
@Override
|
||||
public void requestCreateSession(String packageName, String routeId, String routeType,
|
||||
long requestId) {
|
||||
public void requestCreateSession(String packageName, String routeId, long requestId) {
|
||||
if (mConnectionReady) {
|
||||
mActiveConnection.requestCreateSession(packageName, routeId, routeType,
|
||||
requestId);
|
||||
mActiveConnection.requestCreateSession(packageName, routeId, requestId);
|
||||
updateBinding();
|
||||
}
|
||||
}
|
||||
@@ -429,11 +427,9 @@ final class MediaRoute2ProviderProxy extends MediaRoute2Provider implements Serv
|
||||
mClient.dispose();
|
||||
}
|
||||
|
||||
public void requestCreateSession(String packageName, String routeId, String routeType,
|
||||
long requestId) {
|
||||
public void requestCreateSession(String packageName, String routeId, long requestId) {
|
||||
try {
|
||||
mProvider.requestCreateSession(packageName, routeId,
|
||||
routeType, requestId);
|
||||
mProvider.requestCreateSession(packageName, routeId, requestId);
|
||||
} catch (RemoteException ex) {
|
||||
Slog.e(TAG, "Failed to deliver request to create a session.", ex);
|
||||
}
|
||||
|
||||
@@ -178,18 +178,14 @@ class MediaRouter2ServiceImpl {
|
||||
}
|
||||
|
||||
public void requestCreateSession(IMediaRouter2Client client, MediaRoute2Info route,
|
||||
String routeFeature, int requestId) {
|
||||
int requestId) {
|
||||
Objects.requireNonNull(client, "client must not be null");
|
||||
Objects.requireNonNull(route, "route must not be null");
|
||||
if (TextUtils.isEmpty(routeFeature)) {
|
||||
throw new IllegalArgumentException("routeFeature must not be empty");
|
||||
}
|
||||
|
||||
final long token = Binder.clearCallingIdentity();
|
||||
|
||||
try {
|
||||
synchronized (mLock) {
|
||||
requestCreateSessionLocked(client, route, routeFeature, requestId);
|
||||
requestCreateSessionLocked(client, route, requestId);
|
||||
}
|
||||
} finally {
|
||||
Binder.restoreCallingIdentity(token);
|
||||
@@ -450,7 +446,7 @@ class MediaRouter2ServiceImpl {
|
||||
}
|
||||
|
||||
private void requestCreateSessionLocked(@NonNull IMediaRouter2Client client,
|
||||
@NonNull MediaRoute2Info route, @NonNull String routeFeature, long requestId) {
|
||||
@NonNull MediaRoute2Info route, long requestId) {
|
||||
final IBinder binder = client.asBinder();
|
||||
final Client2Record clientRecord = mAllClientRecords.get(binder);
|
||||
|
||||
@@ -462,8 +458,7 @@ class MediaRouter2ServiceImpl {
|
||||
if (clientRecord != null) {
|
||||
clientRecord.mUserRecord.mHandler.sendMessage(
|
||||
obtainMessage(UserHandler::requestCreateSessionOnHandler,
|
||||
clientRecord.mUserRecord.mHandler,
|
||||
clientRecord, route, routeFeature, requestId));
|
||||
clientRecord.mUserRecord.mHandler, clientRecord, route, requestId));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -624,7 +619,7 @@ class MediaRouter2ServiceImpl {
|
||||
if (clientRecord != null && managerRecord.mTrusted) {
|
||||
//TODO: select route feature properly
|
||||
requestCreateSessionLocked(clientRecord.mClient, route,
|
||||
route.getFeatures().get(0), uniqueRequestId);
|
||||
uniqueRequestId);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -985,7 +980,7 @@ class MediaRouter2ServiceImpl {
|
||||
}
|
||||
|
||||
private void requestCreateSessionOnHandler(Client2Record clientRecord,
|
||||
MediaRoute2Info route, String routeFeature, long requestId) {
|
||||
MediaRoute2Info route, long requestId) {
|
||||
|
||||
final MediaRoute2Provider provider = findProvider(route.getProviderId());
|
||||
if (provider == null) {
|
||||
@@ -995,20 +990,13 @@ class MediaRouter2ServiceImpl {
|
||||
return;
|
||||
}
|
||||
|
||||
if (!route.getFeatures().contains(routeFeature)) {
|
||||
Slog.w(TAG, "Ignoring session creation request since the given route=" + route
|
||||
+ " doesn't support the given feature=" + routeFeature);
|
||||
notifySessionCreationFailed(clientRecord, toClientRequestId(requestId));
|
||||
return;
|
||||
}
|
||||
|
||||
// TODO: Apply timeout for each request (How many seconds should we wait?)
|
||||
SessionCreationRequest request = new SessionCreationRequest(
|
||||
clientRecord, route, routeFeature, requestId);
|
||||
SessionCreationRequest request =
|
||||
new SessionCreationRequest(clientRecord, route, requestId);
|
||||
mSessionCreationRequests.add(request);
|
||||
|
||||
provider.requestCreateSession(clientRecord.mPackageName, route.getOriginalId(),
|
||||
routeFeature, requestId);
|
||||
requestId);
|
||||
}
|
||||
|
||||
private void selectRouteOnHandler(@NonNull Client2Record clientRecord,
|
||||
@@ -1173,15 +1161,11 @@ class MediaRouter2ServiceImpl {
|
||||
}
|
||||
|
||||
String originalRouteId = matchingRequest.mRoute.getId();
|
||||
String originalRouteFeature = matchingRequest.mRouteFeature;
|
||||
Client2Record client2Record = matchingRequest.mClientRecord;
|
||||
|
||||
if (!sessionInfo.getSelectedRoutes().contains(originalRouteId)
|
||||
|| !TextUtils.equals(originalRouteFeature,
|
||||
sessionInfo.getRouteFeature())) {
|
||||
if (!sessionInfo.getSelectedRoutes().contains(originalRouteId)) {
|
||||
Slog.w(TAG, "Created session doesn't match the original request."
|
||||
+ " originalRouteId=" + originalRouteId
|
||||
+ ", originalRouteFeature=" + originalRouteFeature
|
||||
+ ", requestId=" + requestId + ", sessionInfo=" + sessionInfo);
|
||||
notifySessionCreationFailed(matchingRequest.mClientRecord,
|
||||
toClientRequestId(requestId));
|
||||
@@ -1470,15 +1454,12 @@ class MediaRouter2ServiceImpl {
|
||||
final class SessionCreationRequest {
|
||||
public final Client2Record mClientRecord;
|
||||
public final MediaRoute2Info mRoute;
|
||||
public final String mRouteFeature;
|
||||
public final long mRequestId;
|
||||
|
||||
SessionCreationRequest(@NonNull Client2Record clientRecord,
|
||||
@NonNull MediaRoute2Info route,
|
||||
@NonNull String routeFeature, long requestId) {
|
||||
@NonNull MediaRoute2Info route, long requestId) {
|
||||
mClientRecord = clientRecord;
|
||||
mRoute = route;
|
||||
mRouteFeature = routeFeature;
|
||||
mRequestId = requestId;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -460,8 +460,8 @@ public final class MediaRouterService extends IMediaRouterService.Stub
|
||||
// Binder call
|
||||
@Override
|
||||
public void requestCreateSession(IMediaRouter2Client client, MediaRoute2Info route,
|
||||
String routeType, int requestId) {
|
||||
mService2.requestCreateSession(client, route, routeType, requestId);
|
||||
int requestId) {
|
||||
mService2.requestCreateSession(client, route, requestId);
|
||||
}
|
||||
|
||||
// Binder call
|
||||
|
||||
@@ -96,8 +96,7 @@ class SystemMediaRoute2Provider extends MediaRoute2Provider {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void requestCreateSession(String packageName, String routeId, String routeType,
|
||||
long requestId) {
|
||||
public void requestCreateSession(String packageName, String routeId, long requestId) {
|
||||
// Do nothing
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user