Merge "Clean up MediaRouter2Manager" into rvc-dev am: 8a028947c3 am: 0d39f06542 am: e55abc61c7
Change-Id: I1beb3ed5b4bd15c83b04e1a8a7c0e7867dfccbcb
This commit is contained in:
@@ -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.
|
||||
*
|
||||
|
||||
@@ -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();
|
||||
}
|
||||
|
||||
@@ -180,7 +180,7 @@ public abstract class MediaDevice implements Comparable<MediaDevice> {
|
||||
*/
|
||||
|
||||
public void requestSetVolume(int volume) {
|
||||
mRouterManager.requestSetVolume(mRouteInfo, volume);
|
||||
mRouterManager.setRouteVolume(mRouteInfo, volume);
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user