diff --git a/libraries/session/src/main/java/androidx/media3/session/ConnectedControllersManager.java b/libraries/session/src/main/java/androidx/media3/session/ConnectedControllersManager.java index 834974aa46..8e557953d2 100644 --- a/libraries/session/src/main/java/androidx/media3/session/ConnectedControllersManager.java +++ b/libraries/session/src/main/java/androidx/media3/session/ConnectedControllersManager.java @@ -128,7 +128,7 @@ import org.checkerframework.checker.nullness.qual.NonNull; if (sessionImpl.isReleased()) { return; } - sessionImpl.getCallback().onDisconnected(sessionImpl.getInstance(), controllerInfo); + sessionImpl.onDisconnectedOnHandler(controllerInfo); }); } diff --git a/libraries/session/src/main/java/androidx/media3/session/MediaLibraryService.java b/libraries/session/src/main/java/androidx/media3/session/MediaLibraryService.java index 781d87cf3f..ab632ef646 100644 --- a/libraries/session/src/main/java/androidx/media3/session/MediaLibraryService.java +++ b/libraries/session/src/main/java/androidx/media3/session/MediaLibraryService.java @@ -465,7 +465,14 @@ public abstract class MediaLibraryService extends MediaSessionService { MediaItemFiller mediaItemFiller, Bundle tokenExtras) { return new MediaLibrarySessionImpl( - this, context, id, player, sessionActivity, callback, mediaItemFiller, tokenExtras); + this, + context, + id, + player, + sessionActivity, + (MediaLibrarySession.MediaLibrarySessionCallback) callback, + mediaItemFiller, + tokenExtras); } @Override diff --git a/libraries/session/src/main/java/androidx/media3/session/MediaLibraryServiceLegacyStub.java b/libraries/session/src/main/java/androidx/media3/session/MediaLibraryServiceLegacyStub.java index 419cb57000..8e06166bdd 100644 --- a/libraries/session/src/main/java/androidx/media3/session/MediaLibraryServiceLegacyStub.java +++ b/libraries/session/src/main/java/androidx/media3/session/MediaLibraryServiceLegacyStub.java @@ -308,11 +308,7 @@ import java.util.concurrent.atomic.AtomicReference; return; } ListenableFuture future = - checkNotNull( - librarySessionImpl - .getCallback() - .onCustomCommand( - librarySessionImpl.getInstance(), controller, command, extras)); + librarySessionImpl.onCustomCommandOnHandler(controller, command, extras); sendCustomActionResultWhenReady(result, future); }); } diff --git a/libraries/session/src/main/java/androidx/media3/session/MediaLibrarySessionImpl.java b/libraries/session/src/main/java/androidx/media3/session/MediaLibrarySessionImpl.java index a2326eda63..df05207dd5 100644 --- a/libraries/session/src/main/java/androidx/media3/session/MediaLibrarySessionImpl.java +++ b/libraries/session/src/main/java/androidx/media3/session/MediaLibrarySessionImpl.java @@ -47,19 +47,25 @@ import java.util.concurrent.Future; /* package */ class MediaLibrarySessionImpl extends MediaSessionImpl { + private final MediaLibrarySession instance; + private final MediaLibrarySession.MediaLibrarySessionCallback callback; + @GuardedBy("lock") - private final ArrayMap> subscriptions = new ArrayMap<>(); + private final ArrayMap> subscriptions; public MediaLibrarySessionImpl( - MediaSession instance, + MediaLibrarySession instance, Context context, String id, Player player, @Nullable PendingIntent sessionActivity, - MediaSession.SessionCallback callback, + MediaLibrarySession.MediaLibrarySessionCallback callback, MediaSession.MediaItemFiller mediaItemFiller, Bundle tokenExtras) { super(instance, context, id, player, sessionActivity, callback, mediaItemFiller, tokenExtras); + this.instance = instance; + this.callback = callback; + subscriptions = new ArrayMap<>(); } @Override @@ -115,7 +121,7 @@ import java.util.concurrent.Future; // onGetLibraryRoot is defined to return a non-null result but it's implemented by applications, // so we explicitly null-check the result to fail early if an app accidentally returns null. return checkNotNull( - getCallback().onGetLibraryRoot(getInstance(), browser, params), + callback.onGetLibraryRoot(instance, browser, params), "onGetLibraryRoot must return non-null future"); } @@ -124,8 +130,7 @@ import java.util.concurrent.Future; // onGetItem is defined to return a non-null result but it's implemented by applications, // so we explicitly null-check the result to fail early if an app accidentally returns null. return checkNotNull( - getCallback().onGetItem(getInstance(), browser, mediaId), - "onGetItem must return non-null future"); + callback.onGetItem(instance, browser, mediaId), "onGetItem must return non-null future"); } public ListenableFuture>> onGetChildrenOnHandler( @@ -138,7 +143,7 @@ import java.util.concurrent.Future; // so we explicitly null-check the result to fail early if an app accidentally returns null. ListenableFuture>> future = checkNotNull( - getCallback().onGetChildren(getInstance(), browser, parentId, page, pageSize, params), + callback.onGetChildren(instance, browser, parentId, page, pageSize, params), "onGetChildren must return non-null future"); future.addListener( () -> { @@ -170,7 +175,7 @@ import java.util.concurrent.Future; // so we explicitly null-check the result to fail early if an app accidentally returns null. ListenableFuture> future = checkNotNull( - getCallback().onSubscribe(getInstance(), browser, parentId, params), + callback.onSubscribe(instance, browser, parentId, params), "onSubscribe must return non-null future"); // When error happens, remove from the subscription list. @@ -194,7 +199,7 @@ import java.util.concurrent.Future; // so we explicitly null-check the result to fail early if an app accidentally returns null. ListenableFuture> future = checkNotNull( - getCallback().onUnsubscribe(getInstance(), browser, parentId), + callback.onUnsubscribe(instance, browser, parentId), "onUnsubscribe must return non-null future"); future.addListener( @@ -213,7 +218,7 @@ import java.util.concurrent.Future; // onSearch is defined to return a non-null result but it's implemented by applications, // so we explicitly null-check the result to fail early if an app accidentally returns null. return checkNotNull( - getCallback().onSearch(getInstance(), browser, query, params), + callback.onSearch(instance, browser, query, params), "onSearch must return non-null future"); } @@ -228,7 +233,7 @@ import java.util.concurrent.Future; // returns null. ListenableFuture>> future = checkNotNull( - getCallback().onGetSearchResult(getInstance(), browser, query, page, pageSize, params), + callback.onGetSearchResult(instance, browser, query, page, pageSize, params), "onGetSearchResult must return non-null future"); future.addListener( () -> { @@ -241,16 +246,6 @@ import java.util.concurrent.Future; return future; } - @Override - protected MediaLibrarySession getInstance() { - return (MediaLibrarySession) super.getInstance(); - } - - @Override - protected MediaLibrarySession.MediaLibrarySessionCallback getCallback() { - return (MediaLibrarySession.MediaLibrarySessionCallback) super.getCallback(); - } - @Override @Nullable protected MediaLibraryServiceLegacyStub getLegacyBrowserService() { diff --git a/libraries/session/src/main/java/androidx/media3/session/MediaSession.java b/libraries/session/src/main/java/androidx/media3/session/MediaSession.java index 50d5c455ad..2ff846577e 100644 --- a/libraries/session/src/main/java/androidx/media3/session/MediaSession.java +++ b/libraries/session/src/main/java/androidx/media3/session/MediaSession.java @@ -1018,21 +1018,6 @@ public class MediaSession { * Called to fill in the {@link MediaItem#localConfiguration} of the media item from * controllers. * - *

Specifically, it's called by the following methods - * - *

    - *
  1. {@link MediaController#setMediaItem(MediaItem)} - *
  2. {@link MediaController#setMediaItem(MediaItem,long)} - *
  3. {@link MediaController#setMediaItem(MediaItem, boolean)} - *
  4. {@link MediaController#setMediaItems(List)} - *
  5. {@link MediaController#setMediaItems(List, boolean)} - *
  6. {@link MediaController#setMediaItems(List, int, long)} - *
  7. {@link MediaController#addMediaItem(MediaItem)} - *
  8. {@link MediaController#addMediaItem(int, MediaItem)} - *
  9. {@link MediaController#addMediaItems(List)} - *
  10. {@link MediaController#addMediaItems(int, List)} - *
- * * @param session The session for this event. * @param controller The controller information. * @param mediaItem The media item whose local configuration will be filled in. diff --git a/libraries/session/src/main/java/androidx/media3/session/MediaSessionImpl.java b/libraries/session/src/main/java/androidx/media3/session/MediaSessionImpl.java index 373f8a0605..6385e1eebe 100644 --- a/libraries/session/src/main/java/androidx/media3/session/MediaSessionImpl.java +++ b/libraries/session/src/main/java/androidx/media3/session/MediaSessionImpl.java @@ -15,6 +15,7 @@ */ package androidx.media3.session; +import static androidx.media3.common.util.Assertions.checkNotNull; import static androidx.media3.common.util.Assertions.checkStateNotNull; import static androidx.media3.common.util.Util.castNonNull; import static androidx.media3.common.util.Util.postOrRun; @@ -57,6 +58,7 @@ import androidx.media3.common.Player; import androidx.media3.common.Player.DiscontinuityReason; import androidx.media3.common.Player.PositionInfo; import androidx.media3.common.Player.RepeatMode; +import androidx.media3.common.Rating; import androidx.media3.common.Timeline; import androidx.media3.common.TrackSelectionParameters; import androidx.media3.common.VideoSize; @@ -346,13 +348,7 @@ import org.checkerframework.checker.initialization.qual.Initialized; public ListenableFuture setCustomLayout( ControllerInfo controller, List layout) { return dispatchRemoteControllerTask( - controller, - new RemoteControllerTask() { - @Override - public void run(ControllerCb controller, int seq) throws RemoteException { - controller.setCustomLayout(seq, layout); - } - }); + controller, (controller1, seq) -> controller1.setCustomLayout(seq, layout)); } public void setAvailableCommands( @@ -363,12 +359,8 @@ import org.checkerframework.checker.initialization.qual.Initialized; .updateCommandsFromSession(controller, sessionCommands, playerCommands); dispatchRemoteControllerTaskWithoutReturn( controller, - new RemoteControllerTask() { - @Override - public void run(ControllerCb callback, int seq) throws RemoteException { - callback.onAvailableCommandsChangedFromSession(seq, sessionCommands, playerCommands); - } - }); + (callback, seq) -> + callback.onAvailableCommandsChangedFromSession(seq, sessionCommands, playerCommands)); onPlayerInfoChangedHandler.sendPlayerInfoChangedMessage(/* excludeTimeline= */ false); } else { sessionLegacyStub @@ -438,6 +430,50 @@ import org.checkerframework.checker.initialization.qual.Initialized; controller, (cb, seq) -> cb.sendCustomCommand(seq, command, args)); } + public MediaSession.ConnectionResult onConnectOnHandler(ControllerInfo controller) { + return checkNotNull( + callback.onConnect(instance, controller), "onConntext must return non-null future"); + } + + public void onPostConnectOnHandler(ControllerInfo controller) { + callback.onPostConnect(instance, controller); + } + + public void onDisconnectedOnHandler(ControllerInfo controller) { + callback.onDisconnected(instance, controller); + } + + public @SessionResult.Code int onSetMediaUriOnHandler( + ControllerInfo controller, Uri uri, Bundle extras) { + return callback.onSetMediaUri(instance, controller, uri, extras); + } + + public @SessionResult.Code int onPlayerCommandRequestOnHandler( + ControllerInfo controller, @Player.Command int playerCommand) { + return callback.onPlayerCommandRequest(instance, controller, playerCommand); + } + + public ListenableFuture onSetRatingOnHandler( + ControllerInfo controller, String mediaId, Rating rating) { + return checkNotNull( + callback.onSetRating(instance, controller, mediaId, rating), + "onSetRating must return non-null future"); + } + + public ListenableFuture onSetRatingOnHandler( + ControllerInfo controller, Rating rating) { + return checkNotNull( + callback.onSetRating(instance, controller, rating), + "onSetRating must return non-null future"); + } + + public ListenableFuture onCustomCommandOnHandler( + ControllerInfo browser, SessionCommand command, Bundle extras) { + return checkNotNull( + callback.onCustomCommand(instance, browser, command, extras), + "onCustomCommandOnHandler must return non-null future"); + } + public void connectFromService( IMediaController caller, int controllerVersion, @@ -457,10 +493,6 @@ import org.checkerframework.checker.initialization.qual.Initialized; sessionLegacyStub.setLegacyControllerDisconnectTimeoutMs(timeoutMs); } - protected MediaSession getInstance() { - return instance; - } - protected Context getContext() { return context; } @@ -469,12 +501,9 @@ import org.checkerframework.checker.initialization.qual.Initialized; return applicationHandler; } - protected SessionCallback getCallback() { - return callback; - } - - protected MediaItemFiller getMediaItemFiller() { - return mediaItemFiller; + protected MediaItem fillInLocalConfiguration( + MediaSession.ControllerInfo controller, MediaItem mediaItem) { + return mediaItemFiller.fillInLocalConfiguration(instance, controller, mediaItem); } protected boolean isReleased() { diff --git a/libraries/session/src/main/java/androidx/media3/session/MediaSessionLegacyStub.java b/libraries/session/src/main/java/androidx/media3/session/MediaSessionLegacyStub.java index b04b6fcda7..2aef615164 100644 --- a/libraries/session/src/main/java/androidx/media3/session/MediaSessionLegacyStub.java +++ b/libraries/session/src/main/java/androidx/media3/session/MediaSessionLegacyStub.java @@ -177,15 +177,8 @@ import org.checkerframework.checker.initialization.qual.Initialized; command, controller -> { ListenableFuture future = - checkNotNull( - sessionImpl - .getCallback() - .onCustomCommand( - sessionImpl.getInstance(), - controller, - command, - args == null ? Bundle.EMPTY : args), - "SessionCallback#onCustomCommand must not return null"); + sessionImpl.onCustomCommandOnHandler( + controller, command, args == null ? Bundle.EMPTY : args); if (cb != null) { sendCustomCommandResultWhenReady(cb, future); } else { @@ -280,13 +273,8 @@ import org.checkerframework.checker.initialization.qual.Initialized; dispatchSessionTaskWithSessionCommand( SessionCommand.COMMAND_CODE_SESSION_SET_MEDIA_URI, controller -> { - if (sessionImpl - .getCallback() - .onSetMediaUri( - sessionImpl.getInstance(), - controller, - mediaUri, - extras == null ? Bundle.EMPTY : extras) + if (sessionImpl.onSetMediaUriOnHandler( + controller, mediaUri, extras == null ? Bundle.EMPTY : extras) == RESULT_SUCCESS) { sessionImpl.getPlayerWrapper().prepare(); } @@ -330,13 +318,8 @@ import org.checkerframework.checker.initialization.qual.Initialized; dispatchSessionTaskWithSessionCommand( SessionCommand.COMMAND_CODE_SESSION_SET_MEDIA_URI, controller -> { - if (sessionImpl - .getCallback() - .onSetMediaUri( - sessionImpl.getInstance(), - controller, - mediaUri, - extras == null ? Bundle.EMPTY : extras) + if (sessionImpl.onSetMediaUriOnHandler( + controller, mediaUri, extras == null ? Bundle.EMPTY : extras) == RESULT_SUCCESS) { sessionImpl.getPlayerWrapper().play(); } @@ -440,10 +423,7 @@ import org.checkerframework.checker.initialization.qual.Initialized; return; } // MediaControllerCompat#setRating doesn't return a value. - ignoreFuture( - sessionImpl - .getCallback() - .onSetRating(sessionImpl.getInstance(), controller, currentItem.mediaId, rating)); + ignoreFuture(sessionImpl.onSetRatingOnHandler(controller, currentItem.mediaId, rating)); }); } @@ -597,10 +577,7 @@ import org.checkerframework.checker.initialization.qual.Initialized; if (!connectedControllersManager.isPlayerCommandAvailable(controller, command)) { return; } - int resultCode = - sessionImpl - .getCallback() - .onPlayerCommandRequest(sessionImpl.getInstance(), controller, command); + int resultCode = sessionImpl.onPlayerCommandRequestOnHandler(controller, command); if (resultCode != RESULT_SUCCESS) { // Don't run rejected command. return; @@ -702,8 +679,7 @@ import org.checkerframework.checker.initialization.qual.Initialized; sessionManager.isTrustedForMediaControl(remoteUserInfo), controllerCb, /* connectionHints= */ Bundle.EMPTY); - MediaSession.ConnectionResult connectionResult = - sessionImpl.getCallback().onConnect(sessionImpl.getInstance(), controller); + MediaSession.ConnectionResult connectionResult = sessionImpl.onConnectOnHandler(controller); if (!connectionResult.isAccepted) { try { controllerCb.onDisconnected(/* seq= */ 0); diff --git a/libraries/session/src/main/java/androidx/media3/session/MediaSessionServiceLegacyStub.java b/libraries/session/src/main/java/androidx/media3/session/MediaSessionServiceLegacyStub.java index 6a8005118a..110f7c1f92 100644 --- a/libraries/session/src/main/java/androidx/media3/session/MediaSessionServiceLegacyStub.java +++ b/libraries/session/src/main/java/androidx/media3/session/MediaSessionServiceLegacyStub.java @@ -15,7 +15,6 @@ */ package androidx.media3.session; -import static androidx.media3.common.util.Assertions.checkNotNull; import static androidx.media3.common.util.Util.postOrRun; import android.os.Bundle; @@ -69,10 +68,7 @@ import java.util.concurrent.atomic.AtomicReference; postOrRun( sessionImpl.getApplicationHandler(), () -> { - resultReference.set( - checkNotNull( - sessionImpl.getCallback().onConnect(sessionImpl.getInstance(), controller), - "onConnect must return non-null future")); + resultReference.set(sessionImpl.onConnectOnHandler(controller)); haveResult.open(); }); try { diff --git a/libraries/session/src/main/java/androidx/media3/session/MediaSessionStub.java b/libraries/session/src/main/java/androidx/media3/session/MediaSessionStub.java index 2f7b1b76ac..41b3db0dd9 100644 --- a/libraries/session/src/main/java/androidx/media3/session/MediaSessionStub.java +++ b/libraries/session/src/main/java/androidx/media3/session/MediaSessionStub.java @@ -220,10 +220,7 @@ import java.util.concurrent.ExecutionException; return; } @SessionResult.Code - int resultCode = - sessionImpl - .getCallback() - .onPlayerCommandRequest(sessionImpl.getInstance(), controller, command); + int resultCode = sessionImpl.onPlayerCommandRequestOnHandler(controller, command); if (resultCode != SessionResult.RESULT_SUCCESS) { // Don't run rejected command. sendSessionResult(controller, seq, new SessionResult(resultCode)); @@ -346,7 +343,7 @@ import java.util.concurrent.ExecutionException; checkStateNotNull((Controller2Cb) controllerInfo.getControllerCb()) .getCallbackBinder(); MediaSession.ConnectionResult connectionResult = - sessionImpl.getCallback().onConnect(sessionImpl.getInstance(), controllerInfo); + sessionImpl.onConnectOnHandler(controllerInfo); // Don't reject connection for the request from trusted app. // Otherwise server will fail to retrieve session's information to dispatch // media keys to. @@ -406,7 +403,7 @@ import java.util.concurrent.ExecutionException; // Controller may be died prematurely. } - sessionImpl.getCallback().onPostConnect(sessionImpl.getInstance(), controllerInfo); + sessionImpl.onPostConnectOnHandler(controllerInfo); } else { try { caller.onDisconnected(0); @@ -674,10 +671,7 @@ import java.util.concurrent.ExecutionException; seq, command, (sessionImpl, controller) -> - checkNotNull( - sessionImpl - .getCallback() - .onCustomCommand(sessionImpl.getInstance(), controller, command, args)), + sessionImpl.onCustomCommandOnHandler(controller, command, args), MediaSessionStub::sendSessionResultWhenReady); } @@ -702,11 +696,7 @@ import java.util.concurrent.ExecutionException; caller, seq, COMMAND_CODE_SESSION_SET_RATING, - (sessionImpl, controller) -> - checkNotNull( - sessionImpl - .getCallback() - .onSetRating(sessionImpl.getInstance(), controller, mediaId, rating)), + (sessionImpl, controller) -> sessionImpl.onSetRatingOnHandler(controller, mediaId, rating), MediaSessionStub::sendSessionResultWhenReady); } @@ -726,11 +716,7 @@ import java.util.concurrent.ExecutionException; caller, seq, COMMAND_CODE_SESSION_SET_RATING, - (sessionImpl, controller) -> - checkNotNull( - sessionImpl - .getCallback() - .onSetRating(sessionImpl.getInstance(), controller, rating)), + (sessionImpl, controller) -> sessionImpl.onSetRatingOnHandler(controller, rating), MediaSessionStub::sendSessionResultWhenReady); } @@ -788,9 +774,7 @@ import java.util.concurrent.ExecutionException; COMMAND_CHANGE_MEDIA_ITEMS, (sessionImpl, controller) -> { MediaItem mediaItemWithPlaybackProperties = - sessionImpl - .getMediaItemFiller() - .fillInLocalConfiguration(sessionImpl.getInstance(), controller, mediaItem); + sessionImpl.fillInLocalConfiguration(controller, mediaItem); sessionImpl.getPlayerWrapper().setMediaItem(mediaItemWithPlaybackProperties); return SessionResult.RESULT_SUCCESS; }, @@ -819,9 +803,7 @@ import java.util.concurrent.ExecutionException; COMMAND_CHANGE_MEDIA_ITEMS, (sessionImpl, controller) -> { MediaItem mediaItemWithPlaybackProperties = - sessionImpl - .getMediaItemFiller() - .fillInLocalConfiguration(sessionImpl.getInstance(), controller, mediaItem); + sessionImpl.fillInLocalConfiguration(controller, mediaItem); sessionImpl .getPlayerWrapper() .setMediaItem(mediaItemWithPlaybackProperties, startPositionMs); @@ -852,9 +834,7 @@ import java.util.concurrent.ExecutionException; COMMAND_CHANGE_MEDIA_ITEMS, (sessionImpl, controller) -> { MediaItem mediaItemWithPlaybackProperties = - sessionImpl - .getMediaItemFiller() - .fillInLocalConfiguration(sessionImpl.getInstance(), controller, mediaItem); + sessionImpl.fillInLocalConfiguration(controller, mediaItem); sessionImpl .getPlayerWrapper() .setMediaItem(mediaItemWithPlaybackProperties, resetPosition); @@ -888,9 +868,7 @@ import java.util.concurrent.ExecutionException; ImmutableList.builder(); for (MediaItem mediaItem : mediaItemList) { MediaItem mediaItemWithPlaybackProperties = - sessionImpl - .getMediaItemFiller() - .fillInLocalConfiguration(sessionImpl.getInstance(), controller, mediaItem); + sessionImpl.fillInLocalConfiguration(controller, mediaItem); mediaItemWithPlaybackPropertiesListBuilder.add(mediaItemWithPlaybackProperties); } sessionImpl @@ -928,9 +906,7 @@ import java.util.concurrent.ExecutionException; ImmutableList.builder(); for (MediaItem mediaItem : mediaItemList) { MediaItem mediaItemWithPlaybackProperties = - sessionImpl - .getMediaItemFiller() - .fillInLocalConfiguration(sessionImpl.getInstance(), controller, mediaItem); + sessionImpl.fillInLocalConfiguration(controller, mediaItem); mediaItemWithPlaybackPropertiesListBuilder.add(mediaItemWithPlaybackProperties); } sessionImpl @@ -969,9 +945,7 @@ import java.util.concurrent.ExecutionException; ImmutableList.builder(); for (MediaItem mediaItem : mediaItemList) { MediaItem mediaItemWithPlaybackProperties = - sessionImpl - .getMediaItemFiller() - .fillInLocalConfiguration(sessionImpl.getInstance(), controller, mediaItem); + sessionImpl.fillInLocalConfiguration(controller, mediaItem); mediaItemWithPlaybackPropertiesListBuilder.add(mediaItemWithPlaybackProperties); } @@ -995,10 +969,7 @@ import java.util.concurrent.ExecutionException; seq, COMMAND_CODE_SESSION_SET_MEDIA_URI, (sessionImpl, controller) -> - new SessionResult( - sessionImpl - .getCallback() - .onSetMediaUri(sessionImpl.getInstance(), controller, uri, extras)), + new SessionResult(sessionImpl.onSetMediaUriOnHandler(controller, uri, extras)), MediaSessionStub::sendSessionResult); } @@ -1044,9 +1015,7 @@ import java.util.concurrent.ExecutionException; COMMAND_CHANGE_MEDIA_ITEMS, (sessionImpl, controller) -> { MediaItem mediaItemWithPlaybackProperties = - sessionImpl - .getMediaItemFiller() - .fillInLocalConfiguration(sessionImpl.getInstance(), controller, mediaItem); + sessionImpl.fillInLocalConfiguration(controller, mediaItem); sessionImpl.getPlayerWrapper().addMediaItem(mediaItemWithPlaybackProperties); return SessionResult.RESULT_SUCCESS; }, @@ -1072,9 +1041,7 @@ import java.util.concurrent.ExecutionException; COMMAND_CHANGE_MEDIA_ITEMS, (sessionImpl, controller) -> { MediaItem mediaItemWithPlaybackProperties = - sessionImpl - .getMediaItemFiller() - .fillInLocalConfiguration(sessionImpl.getInstance(), controller, mediaItem); + sessionImpl.fillInLocalConfiguration(controller, mediaItem); sessionImpl.getPlayerWrapper().addMediaItem(index, mediaItemWithPlaybackProperties); return SessionResult.RESULT_SUCCESS; }, @@ -1105,9 +1072,7 @@ import java.util.concurrent.ExecutionException; ImmutableList.builder(); for (MediaItem mediaItem : mediaItems) { MediaItem mediaItemWithPlaybackProperties = - sessionImpl - .getMediaItemFiller() - .fillInLocalConfiguration(sessionImpl.getInstance(), controller, mediaItem); + sessionImpl.fillInLocalConfiguration(controller, mediaItem); mediaItemsWithPlaybackPropertiesBuilder.add(mediaItemWithPlaybackProperties); } @@ -1146,9 +1111,7 @@ import java.util.concurrent.ExecutionException; ImmutableList.builder(); for (MediaItem mediaItem : mediaItems) { MediaItem mediaItemWithPlaybackProperties = - sessionImpl - .getMediaItemFiller() - .fillInLocalConfiguration(sessionImpl.getInstance(), controller, mediaItem); + sessionImpl.fillInLocalConfiguration(controller, mediaItem); mediaItemsWithPlaybackPropertiesBuilder.add(mediaItemWithPlaybackProperties); }