Merge "Clean up MediaRouter2Manager" into rvc-dev am: 8a028947c3

Change-Id: I857b733a1a127cd5a3d576dd8a15d8ca7b2c5018
This commit is contained in:
Kyunglyul Hyun
2020-05-06 12:03:17 +00:00
committed by Automerger Merge Worker
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.media.session.MediaController;
import android.media.session.MediaSessionManager;
import android.os.Bundle;
import android.os.Handler;
import android.os.RemoteException;
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.
* <p>
@@ -574,23 +565,12 @@ public final class MediaRouter2Manager {
|| Objects.equals(preferredFeatures, prevFeatures)) {
return;
}
for (CallbackRecord record : mCallbackRecords) {
record.mExecutor.execute(() -> record.mCallback
.onControlCategoriesChanged(packageName, preferredFeatures));
}
for (CallbackRecord record : mCallbackRecords) {
record.mExecutor.execute(() -> record.mCallback
.onPreferredFeaturesChanged(packageName, preferredFeatures));
}
}
/**
* @hide
*/
public RoutingController getControllerForSession(@NonNull RoutingSessionInfo sessionInfo) {
return new RoutingController(sessionInfo);
}
/**
* 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.
*/
@@ -976,16 +814,6 @@ public final class MediaRouter2Manager {
public void onTransferFailed(@NonNull RoutingSessionInfo session,
@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.
*

View File

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

View File

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

View File

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