Merge "Clean up MediaRouter2Manager" into rvc-dev

This commit is contained in:
Kyunglyul Hyun
2020-05-06 11:52:20 +00:00
committed by Android (Google) Code Review
4 changed files with 11 additions and 187 deletions

View File

@@ -24,7 +24,6 @@ import android.annotation.Nullable;
import android.content.Context; import android.content.Context;
import android.media.session.MediaController; import android.media.session.MediaController;
import android.media.session.MediaSessionManager; import android.media.session.MediaSessionManager;
import android.os.Bundle;
import android.os.Handler; import android.os.Handler;
import android.os.RemoteException; import android.os.RemoteException;
import android.os.ServiceManager; import android.os.ServiceManager;
@@ -342,14 +341,6 @@ public final class MediaRouter2Manager {
} }
} }
/**
* Requests a volume change for a route asynchronously.
*/
//TODO: remove this.
public void requestSetVolume(MediaRoute2Info route, int volume) {
setRouteVolume(route, volume);
}
/** /**
* Requests a volume change for a route asynchronously. * Requests a volume change for a route asynchronously.
* <p> * <p>
@@ -574,23 +565,12 @@ public final class MediaRouter2Manager {
|| Objects.equals(preferredFeatures, prevFeatures)) { || Objects.equals(preferredFeatures, prevFeatures)) {
return; return;
} }
for (CallbackRecord record : mCallbackRecords) {
record.mExecutor.execute(() -> record.mCallback
.onControlCategoriesChanged(packageName, preferredFeatures));
}
for (CallbackRecord record : mCallbackRecords) { for (CallbackRecord record : mCallbackRecords) {
record.mExecutor.execute(() -> record.mCallback record.mExecutor.execute(() -> record.mCallback
.onPreferredFeaturesChanged(packageName, preferredFeatures)); .onPreferredFeaturesChanged(packageName, preferredFeatures));
} }
} }
/**
* @hide
*/
public RoutingController getControllerForSession(@NonNull RoutingSessionInfo sessionInfo) {
return new RoutingController(sessionInfo);
}
/** /**
* Gets the unmodifiable list of selected routes for the session. * Gets the unmodifiable list of selected routes for the session.
*/ */
@@ -790,148 +770,6 @@ public final class MediaRouter2Manager {
} }
} }
//TODO: Remove this.
/**
* A class to control media routing session in media route provider.
* With routing controller, an application can select a route into the session or deselect
* a route in the session.
*/
public final class RoutingController {
private final Object mControllerLock = new Object();
@GuardedBy("mControllerLock")
private RoutingSessionInfo mSessionInfo;
RoutingController(@NonNull RoutingSessionInfo sessionInfo) {
mSessionInfo = sessionInfo;
}
/**
* Releases the session
*/
public void release() {
synchronized (mControllerLock) {
releaseSession(mSessionInfo);
}
}
/**
* Gets the ID of the session
*/
@NonNull
public String getSessionId() {
synchronized (mControllerLock) {
return mSessionInfo.getId();
}
}
/**
* Gets the client package name of the session
*/
@NonNull
public String getClientPackageName() {
synchronized (mControllerLock) {
return mSessionInfo.getClientPackageName();
}
}
/**
* @return the control hints used to control route session if available.
*/
@Nullable
public Bundle getControlHints() {
synchronized (mControllerLock) {
return mSessionInfo.getControlHints();
}
}
/**
* @return the unmodifiable list of currently selected routes
*/
@NonNull
public List<MediaRoute2Info> getSelectedRoutes() {
return MediaRouter2Manager.this.getSelectedRoutes(mSessionInfo);
}
/**
* @return the unmodifiable list of selectable routes for the session.
*/
@NonNull
public List<MediaRoute2Info> getSelectableRoutes() {
return MediaRouter2Manager.this.getSelectableRoutes(mSessionInfo);
}
/**
* @return the unmodifiable list of deselectable routes for the session.
*/
@NonNull
public List<MediaRoute2Info> getDeselectableRoutes() {
return MediaRouter2Manager.this.getDeselectableRoutes(mSessionInfo);
}
/**
* @return the unmodifiable list of transferable routes for the session.
*/
@NonNull
public List<MediaRoute2Info> getTransferableRoutes() {
List<String> routeIds;
synchronized (mControllerLock) {
routeIds = mSessionInfo.getTransferableRoutes();
}
return getRoutesWithIds(routeIds);
}
/**
* Selects a route for the remote session. The given route must satisfy all of the
* following conditions:
* <ul>
* <li>ID should not be included in {@link #getSelectedRoutes()}</li>
* <li>ID should be included in {@link #getSelectableRoutes()}</li>
* </ul>
* If the route doesn't meet any of above conditions, it will be ignored.
*
* @see #getSelectedRoutes()
* @see #getSelectableRoutes()
*/
public void selectRoute(@NonNull MediaRoute2Info route) {
MediaRouter2Manager.this.selectRoute(mSessionInfo, route);
}
/**
* Deselects a route from the remote session. The given route must satisfy all of the
* following conditions:
* <ul>
* <li>ID should be included in {@link #getSelectedRoutes()}</li>
* <li>ID should be included in {@link #getDeselectableRoutes()}</li>
* </ul>
* If the route doesn't meet any of above conditions, it will be ignored.
*
* @see #getSelectedRoutes()
* @see #getDeselectableRoutes()
*/
public void deselectRoute(@NonNull MediaRoute2Info route) {
MediaRouter2Manager.this.deselectRoute(mSessionInfo, route);
}
/**
* Transfers session to the given rotue.
*/
public void transferToRoute(@NonNull MediaRoute2Info route) {
MediaRouter2Manager.this.transferToRoute(mSessionInfo, route);
}
/**
* Gets the session info of the session
*
* @hide
*/
@NonNull
public RoutingSessionInfo getSessionInfo() {
synchronized (mControllerLock) {
return mSessionInfo;
}
}
}
/** /**
* Interface for receiving events about media routing changes. * Interface for receiving events about media routing changes.
*/ */
@@ -976,16 +814,6 @@ public final class MediaRouter2Manager {
public void onTransferFailed(@NonNull RoutingSessionInfo session, public void onTransferFailed(@NonNull RoutingSessionInfo session,
@NonNull MediaRoute2Info route) { } @NonNull MediaRoute2Info route) { }
//TODO: Remove this.
/**
* Called when the preferred route features of an app is changed.
*
* @param packageName the package name of the application
* @param preferredFeatures the list of preferred route features set by an application.
*/
public void onControlCategoriesChanged(@NonNull String packageName,
@NonNull List<String> preferredFeatures) {}
/** /**
* Called when the preferred route features of an app is changed. * Called when the preferred route features of an app is changed.
* *

View File

@@ -108,10 +108,8 @@ public class InfoMediaManager extends MediaManager {
final List<RoutingSessionInfo> infos = mRouterManager.getActiveSessions(); final List<RoutingSessionInfo> infos = mRouterManager.getActiveSessions();
if (infos.size() > 0) { if (infos.size() > 0) {
final RoutingSessionInfo info = infos.get(0); final RoutingSessionInfo info = infos.get(0);
final MediaRouter2Manager.RoutingController controller = mRouterManager.transfer(info, device.mRouteInfo);
mRouterManager.getControllerForSession(info);
controller.transferToRoute(device.mRouteInfo);
isConnected = true; isConnected = true;
} }
return isConnected; return isConnected;
@@ -131,7 +129,7 @@ public class InfoMediaManager extends MediaManager {
final RoutingSessionInfo info = getRoutingSessionInfo(); final RoutingSessionInfo info = getRoutingSessionInfo();
if (info != null && info.getSelectableRoutes().contains(device.mRouteInfo.getId())) { if (info != null && info.getSelectableRoutes().contains(device.mRouteInfo.getId())) {
mRouterManager.getControllerForSession(info).selectRoute(device.mRouteInfo); mRouterManager.selectRoute(info, device.mRouteInfo);
return true; return true;
} }
@@ -162,7 +160,7 @@ public class InfoMediaManager extends MediaManager {
final RoutingSessionInfo info = getRoutingSessionInfo(); final RoutingSessionInfo info = getRoutingSessionInfo();
if (info != null && info.getSelectedRoutes().contains(device.mRouteInfo.getId())) { if (info != null && info.getSelectedRoutes().contains(device.mRouteInfo.getId())) {
mRouterManager.getControllerForSession(info).deselectRoute(device.mRouteInfo); mRouterManager.deselectRoute(info, device.mRouteInfo);
return true; return true;
} }
@@ -207,8 +205,7 @@ public class InfoMediaManager extends MediaManager {
final RoutingSessionInfo info = getRoutingSessionInfo(); final RoutingSessionInfo info = getRoutingSessionInfo();
if (info != null) { if (info != null) {
for (MediaRoute2Info route : mRouterManager.getControllerForSession(info) for (MediaRoute2Info route : mRouterManager.getSelectableRoutes(info)) {
.getSelectableRoutes()) {
deviceList.add(new InfoMediaDevice(mContext, mRouterManager, deviceList.add(new InfoMediaDevice(mContext, mRouterManager,
route, mPackageName)); route, mPackageName));
} }
@@ -235,8 +232,7 @@ public class InfoMediaManager extends MediaManager {
final RoutingSessionInfo info = getRoutingSessionInfo(); final RoutingSessionInfo info = getRoutingSessionInfo();
if (info != null) { if (info != null) {
for (MediaRoute2Info route : mRouterManager.getControllerForSession(info) for (MediaRoute2Info route : mRouterManager.getSelectedRoutes(info)) {
.getSelectedRoutes()) {
deviceList.add(new InfoMediaDevice(mContext, mRouterManager, deviceList.add(new InfoMediaDevice(mContext, mRouterManager,
route, mPackageName)); route, mPackageName));
} }
@@ -434,7 +430,7 @@ public class InfoMediaManager extends MediaManager {
} }
@Override @Override
public void onControlCategoriesChanged(String packageName, List<String> controlCategories) { public void onPreferredFeaturesChanged(String packageName, List<String> preferredFeatures) {
if (TextUtils.equals(mPackageName, packageName)) { if (TextUtils.equals(mPackageName, packageName)) {
refreshDevices(); refreshDevices();
} }

View File

@@ -180,7 +180,7 @@ public abstract class MediaDevice implements Comparable<MediaDevice> {
*/ */
public void requestSetVolume(int volume) { public void requestSetVolume(int volume) {
mRouterManager.requestSetVolume(mRouteInfo, volume); mRouterManager.setRouteVolume(mRouteInfo, volume);
} }
/** /**

View File

@@ -136,7 +136,7 @@ public class InfoMediaManagerTest {
} }
@Test @Test
public void onControlCategoriesChanged_samePackageName_shouldAddMediaDevice() { public void onPreferredFeaturesChanged_samePackageName_shouldAddMediaDevice() {
final List<RoutingSessionInfo> routingSessionInfos = new ArrayList<>(); final List<RoutingSessionInfo> routingSessionInfos = new ArrayList<>();
final RoutingSessionInfo sessionInfo = mock(RoutingSessionInfo.class); final RoutingSessionInfo sessionInfo = mock(RoutingSessionInfo.class);
routingSessionInfos.add(sessionInfo); routingSessionInfos.add(sessionInfo);
@@ -156,7 +156,7 @@ public class InfoMediaManagerTest {
final MediaDevice mediaDevice = mInfoMediaManager.findMediaDevice(TEST_ID); final MediaDevice mediaDevice = mInfoMediaManager.findMediaDevice(TEST_ID);
assertThat(mediaDevice).isNull(); assertThat(mediaDevice).isNull();
mInfoMediaManager.mMediaRouterCallback.onControlCategoriesChanged(TEST_PACKAGE_NAME, null); mInfoMediaManager.mMediaRouterCallback.onPreferredFeaturesChanged(TEST_PACKAGE_NAME, null);
final MediaDevice infoDevice = mInfoMediaManager.mMediaDevices.get(0); final MediaDevice infoDevice = mInfoMediaManager.mMediaDevices.get(0);
assertThat(infoDevice.getId()).isEqualTo(TEST_ID); assertThat(infoDevice.getId()).isEqualTo(TEST_ID);
@@ -165,8 +165,8 @@ public class InfoMediaManagerTest {
} }
@Test @Test
public void onControlCategoriesChanged_differentPackageName_doNothing() { public void onPreferredFeaturesChanged_differentPackageName_doNothing() {
mInfoMediaManager.mMediaRouterCallback.onControlCategoriesChanged("com.fake.play", null); mInfoMediaManager.mMediaRouterCallback.onPreferredFeaturesChanged("com.fake.play", null);
assertThat(mInfoMediaManager.mMediaDevices).hasSize(0); assertThat(mInfoMediaManager.mMediaDevices).hasSize(0);
} }