Commit b9f05927 by olly Committed by Ian Baker

Remove interfaces that don't seem to serve a purpose

PiperOrigin-RevId: 413966081
parent f4989f5d
......@@ -48,9 +48,9 @@ import org.checkerframework.checker.nullness.qual.NonNull;
private final ArrayMap<ControllerInfo, ConnectedControllerRecord<T>> controllerRecords =
new ArrayMap<>();
private final MediaSession.MediaSessionImpl sessionImpl;
private final MediaSessionImpl sessionImpl;
public ConnectedControllersManager(MediaSession.MediaSessionImpl session) {
public ConnectedControllersManager(MediaSessionImpl session) {
// Initialize default values.
lock = new Object();
......
......@@ -464,7 +464,7 @@ public abstract class MediaLibraryService extends MediaSessionService {
SessionCallback callback,
MediaItemFiller mediaItemFiller,
Bundle tokenExtras) {
return new MediaLibrarySessionImplBase(
return new MediaLibrarySessionImpl(
this, context, id, player, sessionActivity, callback, mediaItemFiller, tokenExtras);
}
......@@ -533,55 +533,6 @@ public abstract class MediaLibraryService extends MediaSessionService {
.notifySearchResultChanged(
checkNotNull(browser), checkNotEmpty(query), itemCount, params);
}
interface MediaLibrarySessionImpl extends MediaSessionImpl {
// LibrarySession methods
void notifyChildrenChanged(String parentId, int itemCount, @Nullable LibraryParams params);
void notifyChildrenChanged(
ControllerInfo browser, String parentId, int itemCount, @Nullable LibraryParams params);
void notifySearchResultChanged(
ControllerInfo browser, String query, int itemCount, @Nullable LibraryParams params);
// LibrarySession callback implementations called on the application thread
ListenableFuture<LibraryResult<MediaItem>> onGetLibraryRootOnHandler(
ControllerInfo browser, @Nullable LibraryParams params);
ListenableFuture<LibraryResult<MediaItem>> onGetItemOnHandler(
ControllerInfo browser, String mediaId);
ListenableFuture<LibraryResult<ImmutableList<MediaItem>>> onGetChildrenOnHandler(
ControllerInfo browser,
String parentId,
int page,
int pageSize,
@Nullable LibraryParams params);
ListenableFuture<LibraryResult<Void>> onSubscribeOnHandler(
ControllerInfo browser, String parentId, @Nullable LibraryParams params);
ListenableFuture<LibraryResult<Void>> onUnsubscribeOnHandler(
ControllerInfo browser, String parentId);
ListenableFuture<LibraryResult<Void>> onSearchOnHandler(
ControllerInfo browser, String query, @Nullable LibraryParams params);
ListenableFuture<LibraryResult<ImmutableList<MediaItem>>> onGetSearchResultOnHandler(
ControllerInfo browser,
String query,
int page,
int pageSize,
@Nullable LibraryParams params);
// Internally used methods - only changing return type
@Override
MediaLibrarySession getInstance();
@Override
MediaLibrarySessionCallback getCallback();
}
}
/**
......@@ -735,7 +686,7 @@ public abstract class MediaLibraryService extends MediaSessionService {
@Override
/* package */ MediaSessionServiceImpl createImpl() {
return new MediaLibraryServiceImplBase();
return new MediaLibraryServiceImpl();
}
@Override
......
......@@ -20,7 +20,7 @@ import android.os.IBinder;
import androidx.annotation.Nullable;
/** Implementation of {@link MediaLibraryService}. */
/* package */ class MediaLibraryServiceImplBase extends MediaSessionServiceImplBase {
/* package */ class MediaLibraryServiceImpl extends MediaSessionServiceImpl {
@Override
@Nullable
......
......@@ -39,7 +39,6 @@ import androidx.media3.common.util.ConditionVariable;
import androidx.media3.common.util.Log;
import androidx.media3.common.util.Util;
import androidx.media3.session.MediaLibraryService.LibraryParams;
import androidx.media3.session.MediaLibraryService.MediaLibrarySession.MediaLibrarySessionImpl;
import androidx.media3.session.MediaSession.ControllerCb;
import androidx.media3.session.MediaSession.ControllerInfo;
import com.google.common.collect.ImmutableList;
......
......@@ -45,13 +45,12 @@ import java.util.concurrent.CancellationException;
import java.util.concurrent.ExecutionException;
import java.util.concurrent.Future;
/* package */ class MediaLibrarySessionImplBase extends MediaSessionImplBase
implements MediaLibrarySession.MediaLibrarySessionImpl {
/* package */ class MediaLibrarySessionImpl extends MediaSessionImpl {
@GuardedBy("lock")
private final ArrayMap<ControllerCb, Set<String>> subscriptions = new ArrayMap<>();
public MediaLibrarySessionImplBase(
public MediaLibrarySessionImpl(
MediaSession instance,
Context context,
String id,
......@@ -64,30 +63,6 @@ import java.util.concurrent.Future;
}
@Override
public MediaSessionServiceLegacyStub createLegacyBrowserService(
MediaSessionCompat.Token compatToken) {
MediaLibraryServiceLegacyStub stub = new MediaLibraryServiceLegacyStub(this);
stub.initialize(compatToken);
return stub;
}
@Override
public MediaLibrarySession getInstance() {
return (MediaLibrarySession) super.getInstance();
}
@Override
public MediaLibrarySession.MediaLibrarySessionCallback getCallback() {
return (MediaLibrarySession.MediaLibrarySessionCallback) super.getCallback();
}
@Override
@Nullable
protected MediaLibraryServiceLegacyStub getLegacyBrowserService() {
return (MediaLibraryServiceLegacyStub) super.getLegacyBrowserService();
}
@Override
public List<ControllerInfo> getConnectedControllers() {
List<ControllerInfo> list = super.getConnectedControllers();
@Nullable MediaLibraryServiceLegacyStub legacyStub = getLegacyBrowserService();
......@@ -107,66 +82,34 @@ import java.util.concurrent.Future;
&& legacyStub.getConnectedControllersManager().isConnected(controller);
}
@Override
public void notifyChildrenChanged(
String parentId, int itemCount, @Nullable LibraryParams params) {
dispatchRemoteControllerTaskWithoutReturn(
new RemoteControllerTask() {
@Override
public void run(ControllerCb callback, int seq) throws RemoteException {
if (isSubscribed(callback, parentId)) {
callback.onChildrenChanged(seq, parentId, itemCount, params);
}
(callback, seq) -> {
if (isSubscribed(callback, parentId)) {
callback.onChildrenChanged(seq, parentId, itemCount, params);
}
});
}
@Override
public void notifyChildrenChanged(
ControllerInfo browser, String parentId, int itemCount, @Nullable LibraryParams params) {
dispatchRemoteControllerTaskWithoutReturn(
browser,
new RemoteControllerTask() {
@Override
public void run(ControllerCb callback, int seq) throws RemoteException {
if (!isSubscribed(callback, parentId)) {
return;
}
callback.onChildrenChanged(seq, parentId, itemCount, params);
(callback, seq) -> {
if (!isSubscribed(callback, parentId)) {
return;
}
callback.onChildrenChanged(seq, parentId, itemCount, params);
});
}
@Override
public void notifySearchResultChanged(
ControllerInfo browser, String query, int itemCount, @Nullable LibraryParams params) {
dispatchRemoteControllerTaskWithoutReturn(
browser,
new RemoteControllerTask() {
@Override
public void run(ControllerCb callback, int seq) throws RemoteException {
callback.onSearchResultChanged(seq, query, itemCount, params);
}
});
browser, (callback, seq) -> callback.onSearchResultChanged(seq, query, itemCount, params));
}
private static void verifyResultItems(
LibraryResult<ImmutableList<MediaItem>> result, int pageSize) {
if (result.resultCode == RESULT_SUCCESS) {
List<MediaItem> items = checkNotNull(result.value);
if (items.size() > pageSize) {
throw new AssertionError(
"The number of items must be less than or equal to the pageSize"
+ ", size="
+ items.size()
+ ", pageSize="
+ pageSize);
}
}
}
/** Called by {@link MediaSessionStub#getLibraryRoot(IMediaController, int, Bundle)}. */
@Override
public ListenableFuture<LibraryResult<MediaItem>> onGetLibraryRootOnHandler(
ControllerInfo browser, @Nullable LibraryParams params) {
// onGetLibraryRoot is defined to return a non-null result but it's implemented by applications,
......@@ -176,12 +119,6 @@ import java.util.concurrent.Future;
"onGetLibraryRoot must return non-null future");
}
/**
* Called by {@link MediaSessionStub#getItem(IMediaController, int, String)}.
*
* @return
*/
@Override
public ListenableFuture<LibraryResult<MediaItem>> onGetItemOnHandler(
ControllerInfo browser, String mediaId) {
// onGetItem is defined to return a non-null result but it's implemented by applications,
......@@ -191,7 +128,6 @@ import java.util.concurrent.Future;
"onGetItem must return non-null future");
}
@Override
public ListenableFuture<LibraryResult<ImmutableList<MediaItem>>> onGetChildrenOnHandler(
ControllerInfo browser,
String parentId,
......@@ -215,7 +151,6 @@ import java.util.concurrent.Future;
return future;
}
@Override
public ListenableFuture<LibraryResult<Void>> onSubscribeOnHandler(
ControllerInfo browser, String parentId, @Nullable LibraryParams params) {
ControllerCb controller = checkStateNotNull(browser.getControllerCb());
......@@ -253,7 +188,6 @@ import java.util.concurrent.Future;
return future;
}
@Override
public ListenableFuture<LibraryResult<Void>> onUnsubscribeOnHandler(
ControllerInfo browser, String parentId) {
// onUnsubscribe is defined to return a non-null result but it's implemented by applications,
......@@ -274,7 +208,6 @@ import java.util.concurrent.Future;
return future;
}
@Override
public ListenableFuture<LibraryResult<Void>> onSearchOnHandler(
ControllerInfo browser, String query, @Nullable LibraryParams params) {
// onSearch is defined to return a non-null result but it's implemented by applications,
......@@ -284,7 +217,6 @@ import java.util.concurrent.Future;
"onSearch must return non-null future");
}
@Override
public ListenableFuture<LibraryResult<ImmutableList<MediaItem>>> onGetSearchResultOnHandler(
ControllerInfo browser,
String query,
......@@ -310,6 +242,30 @@ import java.util.concurrent.Future;
}
@Override
protected MediaLibrarySession getInstance() {
return (MediaLibrarySession) super.getInstance();
}
@Override
protected MediaLibrarySession.MediaLibrarySessionCallback getCallback() {
return (MediaLibrarySession.MediaLibrarySessionCallback) super.getCallback();
}
@Override
@Nullable
protected MediaLibraryServiceLegacyStub getLegacyBrowserService() {
return (MediaLibraryServiceLegacyStub) super.getLegacyBrowserService();
}
@Override
protected MediaSessionServiceLegacyStub createLegacyBrowserService(
MediaSessionCompat.Token compatToken) {
MediaLibraryServiceLegacyStub stub = new MediaLibraryServiceLegacyStub(this);
stub.initialize(compatToken);
return stub;
}
@Override
protected void dispatchRemoteControllerTaskWithoutReturn(RemoteControllerTask task) {
super.dispatchRemoteControllerTaskWithoutReturn(task);
@Nullable MediaLibraryServiceLegacyStub legacyStub = getLegacyBrowserService();
......@@ -341,4 +297,19 @@ import java.util.concurrent.Future;
return null;
}
}
private static void verifyResultItems(
LibraryResult<ImmutableList<MediaItem>> result, int pageSize) {
if (result.resultCode == RESULT_SUCCESS) {
List<MediaItem> items = checkNotNull(result.value);
if (items.size() > pageSize) {
throw new AssertionError(
"The number of items must be less than or equal to the pageSize"
+ ", size="
+ items.size()
+ ", pageSize="
+ pageSize);
}
}
}
}
......@@ -26,7 +26,6 @@ import android.content.Context;
import android.content.pm.PackageManager;
import android.net.Uri;
import android.os.Bundle;
import android.os.Handler;
import android.os.IBinder;
import android.os.Looper;
import android.os.RemoteException;
......@@ -496,7 +495,7 @@ public class MediaSession {
SessionCallback callback,
MediaItemFiller mediaItemFiller,
Bundle tokenExtras) {
return new MediaSessionImplBase(
return new MediaSessionImpl(
this, context, id, player, sessionActivity, callback, mediaItemFiller, tokenExtras);
}
......@@ -1210,73 +1209,6 @@ public class MediaSession {
default void onRenderedFirstFrame(int seq) throws RemoteException {}
}
/* package */ interface MediaSessionImpl {
void setPlayer(Player player);
PlayerWrapper getPlayerWrapper();
String getId();
Uri getUri();
SessionToken getToken();
List<ControllerInfo> getConnectedControllers();
boolean isConnected(ControllerInfo controller);
void release();
ListenableFuture<SessionResult> setCustomLayout(
ControllerInfo controller, List<CommandButton> layout);
void setAvailableCommands(
ControllerInfo controller, SessionCommands sessionCommands, Player.Commands playerCommands);
void broadcastCustomCommand(SessionCommand command, Bundle args);
ListenableFuture<SessionResult> sendCustomCommand(
ControllerInfo controller, SessionCommand command, Bundle args);
// Internally used methods
MediaSession getInstance();
MediaSessionCompat getSessionCompat();
void setLegacyControllerConnectionTimeoutMs(long timeoutMs);
Context getContext();
Handler getApplicationHandler();
SessionCallback getCallback();
MediaItemFiller getMediaItemFiller();
boolean isReleased();
@Nullable
PendingIntent getSessionActivity();
IBinder getLegacyBrowserServiceBinder();
void setSessionPositionUpdateDelayMsOnHandler(long updateDelayMs);
void connectFromService(
IMediaController caller,
int controllerVersion,
String packageName,
int pid,
int uid,
Bundle connectionHints);
void setForegroundServiceEventCallback(
ForegroundServiceEventCallback foregroundServiceEventCallback);
void clearForegroundServiceEventCallback();
}
/**
* A base class for {@link MediaSession.Builder} and {@link
* MediaLibraryService.MediaLibrarySession.Builder}. Any changes to this class should be also
......
......@@ -100,7 +100,7 @@ import org.checkerframework.checker.initialization.qual.Initialized;
private final ConnectedControllersManager<RemoteUserInfo> connectedControllersManager;
private final MediaSession.MediaSessionImpl sessionImpl;
private final MediaSessionImpl sessionImpl;
private final MediaSessionManager sessionManager;
private final ControllerCb controllerLegacyCbForBroadcast;
private final ConnectionTimeoutHandler connectionTimeoutHandler;
......@@ -111,7 +111,7 @@ import org.checkerframework.checker.initialization.qual.Initialized;
private volatile long connectionTimeoutMs;
public MediaSessionLegacyStub(
MediaSession.MediaSessionImpl session,
MediaSessionImpl session,
ComponentName mbrComponent,
PendingIntent mediaButtonIntent,
Handler handler) {
......
......@@ -122,7 +122,7 @@ public abstract class MediaSessionService extends Service {
}
/* package */ MediaSessionServiceImpl createImpl() {
return new MediaSessionServiceImplBase();
return new androidx.media3.session.MediaSessionServiceImpl();
}
/**
......@@ -298,25 +298,4 @@ public abstract class MediaSessionService extends Service {
this.notification = checkNotNull(notification);
}
}
interface MediaSessionServiceImpl {
void onCreate(MediaSessionService service);
int onStartCommand(@Nullable Intent intent, int flags, int startId);
@Nullable
IBinder onBind(@Nullable Intent intent);
void onDestroy();
void addSession(MediaSession session);
void removeSession(MediaSession session);
@Nullable
MediaNotification onUpdateNotification(MediaSession session);
List<MediaSession> getSessions();
}
}
......@@ -38,16 +38,15 @@ import androidx.media.MediaSessionManager.RemoteUserInfo;
import androidx.media3.common.util.Log;
import androidx.media3.session.MediaSession.ControllerInfo;
import androidx.media3.session.MediaSessionService.MediaNotification;
import androidx.media3.session.MediaSessionService.MediaSessionServiceImpl;
import java.lang.ref.WeakReference;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
/** Implementation of {@link MediaSessionService}. */
/* package */ class MediaSessionServiceImplBase implements MediaSessionServiceImpl {
/* package */ class MediaSessionServiceImpl {
private static final String TAG = "MSSImplBase";
private static final String TAG = "MSSImpl";
private final Object lock;
......@@ -66,12 +65,11 @@ import java.util.Map;
@Nullable
private MediaNotificationHandler notificationHandler;
public MediaSessionServiceImplBase() {
public MediaSessionServiceImpl() {
lock = new Object();
sessions = new ArrayMap<>();
}
@Override
public void onCreate(MediaSessionService service) {
synchronized (lock) {
instance = service;
......@@ -80,7 +78,6 @@ import java.util.Map;
}
}
@Override
@Nullable
public IBinder onBind(@Nullable Intent intent) {
if (intent == null) {
......@@ -116,7 +113,6 @@ import java.util.Map;
}
}
@Override
public void onDestroy() {
synchronized (lock) {
instance = null;
......@@ -127,7 +123,6 @@ import java.util.Map;
}
}
@Override
public void addSession(MediaSession session) {
@Nullable MediaSession old;
synchronized (lock) {
......@@ -157,7 +152,6 @@ import java.util.Map;
}
}
@Override
public void removeSession(MediaSession session) {
synchronized (lock) {
sessions.remove(session.getId());
......@@ -166,7 +160,6 @@ import java.util.Map;
session.getImpl().getApplicationHandler(), session::clearForegroundServiceEventCallback);
}
@Override
public int onStartCommand(@Nullable Intent intent, int flags, int startId) {
if (intent == null) {
return START_STICKY;
......@@ -190,7 +183,6 @@ import java.util.Map;
return START_STICKY;
}
@Override
public MediaNotification onUpdateNotification(MediaSession session) {
MediaNotificationHandler handler;
synchronized (lock) {
......@@ -199,7 +191,6 @@ import java.util.Map;
return handler.onUpdateNotification(session);
}
@Override
public List<MediaSession> getSessions() {
synchronized (lock) {
return new ArrayList<>(sessions.values());
......@@ -221,13 +212,13 @@ import java.util.Map;
private static final class MediaSessionServiceStub extends IMediaSessionService.Stub {
private final WeakReference<MediaSessionServiceImplBase> serviceImpl;
private final WeakReference<MediaSessionServiceImpl> serviceImpl;
private final Handler handler;
private final MediaSessionManager mediaSessionManager;
public MediaSessionServiceStub(MediaSessionServiceImplBase serviceImpl) {
public MediaSessionServiceStub(MediaSessionServiceImpl serviceImpl) {
this.serviceImpl = new WeakReference<>(serviceImpl);
Context context = checkStateNotNull(serviceImpl.getInstance());
handler = new Handler(context.getMainLooper());
......@@ -262,7 +253,7 @@ import java.util.Map;
boolean shouldNotifyDisconnected = true;
try {
@Nullable
MediaSessionServiceImplBase serviceImpl =
MediaSessionServiceImpl serviceImpl =
MediaSessionServiceStub.this.serviceImpl.get();
if (serviceImpl == null) {
return;
......
......@@ -40,11 +40,11 @@ import java.util.concurrent.atomic.AtomicReference;
private static final String TAG = "MSSLegacyStub";
private final MediaSessionManager manager;
private final MediaSession.MediaSessionImpl sessionImpl;
private final MediaSessionImpl sessionImpl;
private final ConnectedControllersManager<RemoteUserInfo> connectedControllersManager;
/** Creates a new instance. Caller must call {@link #initialize} to the instance. */
public MediaSessionServiceLegacyStub(MediaSession.MediaSessionImpl sessionImpl) {
public MediaSessionServiceLegacyStub(MediaSessionImpl sessionImpl) {
super();
manager = MediaSessionManager.getSessionManager(sessionImpl.getContext());
this.sessionImpl = sessionImpl;
......
......@@ -74,10 +74,8 @@ import androidx.media3.common.util.Log;
import androidx.media3.common.util.Util;
import androidx.media3.session.MediaLibraryService.LibraryParams;
import androidx.media3.session.MediaLibraryService.MediaLibrarySession;
import androidx.media3.session.MediaLibraryService.MediaLibrarySession.MediaLibrarySessionImpl;
import androidx.media3.session.MediaSession.ControllerCb;
import androidx.media3.session.MediaSession.ControllerInfo;
import androidx.media3.session.MediaSession.MediaSessionImpl;
import androidx.media3.session.SessionCommand.CommandCode;
import com.google.common.collect.ImmutableList;
import com.google.common.util.concurrent.ListenableFuture;
......@@ -99,11 +97,11 @@ import java.util.concurrent.ExecutionException;
private static final String TAG = "MediaSessionStub";
private final Object lock;
private final WeakReference<MediaSession.MediaSessionImpl> sessionImpl;
private final WeakReference<MediaSessionImpl> sessionImpl;
private final MediaSessionManager sessionManager;
private final ConnectedControllersManager<IBinder> connectedControllersManager;
public MediaSessionStub(MediaSession.MediaSessionImpl sessionImpl) {
public MediaSessionStub(MediaSessionImpl sessionImpl) {
// Initialize default values.
lock = new Object();
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or sign in to comment