diff --git a/RELEASENOTES.md b/RELEASENOTES.md index 959fdba3e1..cc4fc72c3e 100644 --- a/RELEASENOTES.md +++ b/RELEASENOTES.md @@ -181,6 +181,10 @@ `MediaSession.Callback.onAddMediaItems` instead of `onSetMediaUri`. * Support `setMediaItems(s)` methods when `MediaController` connects to a legacy media session. + * Remove `MediaController.setMediaUri` and + `MediaSession.Callback.onSetMediaUri`. The same functionality can be + achieved by using `MediaController.setMediaItem` and + `MediaSession.Callback.onAddMediaItems`. * Data sources: * Rename `DummyDataSource` to `PlaceholderDataSource`. * Workaround OkHttp interrupt handling. diff --git a/libraries/session/src/main/aidl/androidx/media3/session/IMediaSession.aidl b/libraries/session/src/main/aidl/androidx/media3/session/IMediaSession.aidl index ac88efa63a..e62fa1bc7e 100644 --- a/libraries/session/src/main/aidl/androidx/media3/session/IMediaSession.aidl +++ b/libraries/session/src/main/aidl/androidx/media3/session/IMediaSession.aidl @@ -32,7 +32,6 @@ oneway interface IMediaSession { // Id < 3000 is reserved to avoid potential collision with media2 1.x. - void setMediaUri(IMediaController caller, int seq, in Uri uri, in Bundle extras) = 3000; void setVolume(IMediaController caller, int seq, float volume) = 3001; void setDeviceVolume(IMediaController caller, int seq, int volume) = 3002; void increaseDeviceVolume(IMediaController caller, int seq) = 3003; diff --git a/libraries/session/src/main/java/androidx/media3/session/MediaConstants.java b/libraries/session/src/main/java/androidx/media3/session/MediaConstants.java index be791c9cc5..ce5e4142d0 100644 --- a/libraries/session/src/main/java/androidx/media3/session/MediaConstants.java +++ b/libraries/session/src/main/java/androidx/media3/session/MediaConstants.java @@ -15,7 +15,6 @@ */ package androidx.media3.session; -import android.net.Uri; import android.os.Bundle; import android.support.v4.media.session.MediaControllerCompat; import android.support.v4.media.session.MediaSessionCompat; @@ -25,99 +24,6 @@ import androidx.media3.session.MediaLibraryService.LibraryParams; /** Constants that can be shared between media session and controller. */ public final class MediaConstants { - /** - * A {@link Uri} scheme used in a media uri. - * - * @see MediaController#setMediaUri - * @see MediaSession.Callback#onSetMediaUri - */ - public static final String MEDIA_URI_SCHEME = "androidx"; - - /** - * A {@link Uri} authority used in a media uri. - * - * @see MediaController#setMediaUri - * @see MediaSession.Callback#onSetMediaUri - */ - public static final String MEDIA_URI_AUTHORITY = "media3-session"; - - /** - * A {@link Uri} path used by {@code - * android.support.v4.media.session.MediaControllerCompat.TransportControls#playFromMediaId}. - * - * @see MediaController#setMediaUri - * @see MediaSession.Callback#onSetMediaUri - */ - public static final String MEDIA_URI_PATH_PLAY_FROM_MEDIA_ID = "playFromMediaId"; - - /** - * A {@link Uri} path used by {@code - * android.support.v4.media.session.MediaControllerCompat.TransportControls#playFromSearch}. - * - * @see MediaController#setMediaUri - * @see MediaSession.Callback#onSetMediaUri - */ - public static final String MEDIA_URI_PATH_PLAY_FROM_SEARCH = "playFromSearch"; - - /** - * A {@link Uri} path used by {@link - * android.support.v4.media.session.MediaControllerCompat.TransportControls#prepareFromMediaId}. - * - * @see MediaController#setMediaUri - * @see MediaSession.Callback#onSetMediaUri - */ - public static final String MEDIA_URI_PATH_PREPARE_FROM_MEDIA_ID = "prepareFromMediaId"; - - /** - * A {@link Uri} path used by {@link - * android.support.v4.media.session.MediaControllerCompat.TransportControls#prepareFromSearch}. - * - * @see MediaController#setMediaUri - * @see MediaSession.Callback#onSetMediaUri - */ - public static final String MEDIA_URI_PATH_PREPARE_FROM_SEARCH = "prepareFromSearch"; - - /** - * A {@link Uri} path for encoding how the uri will be translated when connected to {@link - * android.support.v4.media.session.MediaSessionCompat}. - * - * @see MediaController#setMediaUri - */ - public static final String MEDIA_URI_PATH_SET_MEDIA_URI = "setMediaUri"; - - // From scheme to path, plus path delimiter - /* package */ static final String MEDIA_URI_SET_MEDIA_URI_PREFIX = - new Uri.Builder() - .scheme(MEDIA_URI_SCHEME) - .authority(MEDIA_URI_AUTHORITY) - .path(MEDIA_URI_PATH_SET_MEDIA_URI) - .build() - .toString() - + "?"; - - /** - * A {@link Uri} query for media id. - * - * @see MediaSession.Callback#onSetMediaUri - * @see MediaController#setMediaUri - */ - public static final String MEDIA_URI_QUERY_ID = "id"; - - /** - * A {@link Uri} query for search query. - * - * @see MediaSession.Callback#onSetMediaUri - * @see MediaController#setMediaUri - */ - public static final String MEDIA_URI_QUERY_QUERY = "query"; - - /** - * A {@link Uri} query for media uri. - * - * @see MediaController#setMediaUri - */ - public static final String MEDIA_URI_QUERY_URI = "uri"; - /** * Bundle key to indicate a preference that a region of space for the skip to next control should * always be blocked out in the UI, even when the seek to next standard action is not supported. diff --git a/libraries/session/src/main/java/androidx/media3/session/MediaController.java b/libraries/session/src/main/java/androidx/media3/session/MediaController.java index 624a0faa7a..e47fc02253 100644 --- a/libraries/session/src/main/java/androidx/media3/session/MediaController.java +++ b/libraries/session/src/main/java/androidx/media3/session/MediaController.java @@ -24,7 +24,6 @@ import static androidx.media3.common.util.Util.postOrRun; import android.app.PendingIntent; import android.content.Context; -import android.net.Uri; import android.os.Bundle; import android.os.Handler; import android.os.Looper; @@ -985,36 +984,6 @@ public class MediaController implements Player { impl.setMediaItems(mediaItems, startIndex, startPositionMs); } - /** - * Requests that the connected {@link MediaSession} sets a specific {@link Uri} for playback. Use - * this, or {@link #setMediaItems} to specify which item(s) to play. - * - *

This can be called multiple times in any states. This would override previous call of this, - * or {@link #setMediaItems}. - * - *

The {@link Player.Listener#onTimelineChanged} and/or {@link - * Player.Listener#onMediaItemTransition} would be called when it's completed. - * - *

Returned {@link ListenableFuture} will return {@link SessionResult#RESULT_SUCCESS} when it's - * handled together with {@link #prepare} or {@link #play}. If this API is called multiple times - * without prepare or play, then {@link SessionResult#RESULT_INFO_SKIPPED} will be returned for - * previous calls. - * - * @param uri The uri of the item(s) to play. - * @param extras A {@link Bundle} to send extra information. May be empty. - * @return A {@link ListenableFuture} of {@link SessionResult} representing the pending - * completion. - */ - public ListenableFuture setMediaUri(Uri uri, Bundle extras) { - verifyApplicationThread(); - checkNotNull(uri); - checkNotNull(extras); - if (isConnected()) { - return impl.setMediaUri(uri, extras); - } - return createDisconnectedFuture(); - } - @Override public void setPlaylistMetadata(MediaMetadata playlistMetadata) { verifyApplicationThread(); @@ -1928,8 +1897,6 @@ public class MediaController implements Player { void setMediaItems(List mediaItems, int startIndex, long startPositionMs); - ListenableFuture setMediaUri(Uri uri, Bundle extras); - void setPlaylistMetadata(MediaMetadata playlistMetadata); MediaMetadata getPlaylistMetadata(); diff --git a/libraries/session/src/main/java/androidx/media3/session/MediaControllerImplBase.java b/libraries/session/src/main/java/androidx/media3/session/MediaControllerImplBase.java index 6eb5406951..c80e832a97 100644 --- a/libraries/session/src/main/java/androidx/media3/session/MediaControllerImplBase.java +++ b/libraries/session/src/main/java/androidx/media3/session/MediaControllerImplBase.java @@ -76,7 +76,6 @@ import static androidx.media3.common.util.Util.usToMs; import static androidx.media3.session.MediaUtils.calculateBufferedPercentage; import static androidx.media3.session.MediaUtils.intersect; import static androidx.media3.session.SessionCommand.COMMAND_CODE_CUSTOM; -import static androidx.media3.session.SessionCommand.COMMAND_CODE_SESSION_SET_MEDIA_URI; import static androidx.media3.session.SessionCommand.COMMAND_CODE_SESSION_SET_RATING; import static androidx.media3.session.SessionResult.RESULT_ERROR_PERMISSION_DENIED; import static androidx.media3.session.SessionResult.RESULT_ERROR_SESSION_DISCONNECTED; @@ -93,7 +92,6 @@ import android.content.Intent; import android.content.ServiceConnection; import android.graphics.Rect; import android.graphics.SurfaceTexture; -import android.net.Uri; import android.os.Bundle; import android.os.Handler; import android.os.IBinder; @@ -934,14 +932,6 @@ import org.checkerframework.checker.nullness.qual.NonNull; mediaItems, startIndex, startPositionMs, /* resetToDefaultPosition= */ false); } - @Override - public ListenableFuture setMediaUri(Uri uri, Bundle extras) { - return dispatchRemoteSessionTaskWithSessionCommand( - COMMAND_CODE_SESSION_SET_MEDIA_URI, - (RemoteSessionTask) - (iSession, seq) -> iSession.setMediaUri(controllerStub, seq, uri, extras)); - } - @Override public void setPlaylistMetadata(MediaMetadata playlistMetadata) { if (!isPlayerCommandAvailable(COMMAND_SET_MEDIA_ITEMS_METADATA)) { diff --git a/libraries/session/src/main/java/androidx/media3/session/MediaControllerImplLegacy.java b/libraries/session/src/main/java/androidx/media3/session/MediaControllerImplLegacy.java index 05fb4335cf..6a2dc56c1f 100644 --- a/libraries/session/src/main/java/androidx/media3/session/MediaControllerImplLegacy.java +++ b/libraries/session/src/main/java/androidx/media3/session/MediaControllerImplLegacy.java @@ -44,7 +44,6 @@ import static java.lang.Math.min; import android.app.PendingIntent; import android.content.Context; import android.media.AudioManager; -import android.net.Uri; import android.os.Bundle; import android.os.Handler; import android.os.ResultReceiver; @@ -667,12 +666,6 @@ import org.checkerframework.checker.nullness.compatqual.NullableType; } } - @Override - public ListenableFuture setMediaUri(Uri uri, Bundle extras) { - Log.w(TAG, "Session doesn't support setMediaUri"); - return Futures.immediateCancelledFuture(); - } - @Override public void setPlaylistMetadata(MediaMetadata playlistMetadata) { Log.w(TAG, "Session doesn't support setting playlist metadata"); 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 71edff1179..d170298328 100644 --- a/libraries/session/src/main/java/androidx/media3/session/MediaSession.java +++ b/libraries/session/src/main/java/androidx/media3/session/MediaSession.java @@ -940,24 +940,6 @@ public class MediaSession { return Futures.immediateFuture(new SessionResult(RESULT_ERROR_NOT_SUPPORTED)); } - /** - * Called when a controller requested to set the specific media item(s) represented by a URI - * through {@link MediaController#setMediaUri(Uri, Bundle)}. - * - *

The implementation should create proper {@link MediaItem media item(s)} for the given - * {@code uri} and call {@link Player#setMediaItems}. - * - * @param session The session for this event. - * @param controller The controller information. - * @param uri The uri. - * @param extras An extra {@link Bundle}. May be empty. - * @return A result code. - */ - default @SessionResult.Code int onSetMediaUri( - MediaSession session, ControllerInfo controller, Uri uri, Bundle extras) { - return RESULT_ERROR_NOT_SUPPORTED; - } - /** * Called when a controller sent a custom command through {@link * MediaController#sendCustomCommand(SessionCommand, Bundle)}. 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 57d1533c9a..6fce21470f 100644 --- a/libraries/session/src/main/java/androidx/media3/session/MediaSessionImpl.java +++ b/libraries/session/src/main/java/androidx/media3/session/MediaSessionImpl.java @@ -442,11 +442,6 @@ import org.checkerframework.checker.initialization.qual.Initialized; 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); 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 109d6afc1d..1b5e554298 100644 --- a/libraries/session/src/main/java/androidx/media3/session/MediaSessionStub.java +++ b/libraries/session/src/main/java/androidx/media3/session/MediaSessionStub.java @@ -49,10 +49,8 @@ import static androidx.media3.session.SessionCommand.COMMAND_CODE_LIBRARY_GET_SE import static androidx.media3.session.SessionCommand.COMMAND_CODE_LIBRARY_SEARCH; import static androidx.media3.session.SessionCommand.COMMAND_CODE_LIBRARY_SUBSCRIBE; import static androidx.media3.session.SessionCommand.COMMAND_CODE_LIBRARY_UNSUBSCRIBE; -import static androidx.media3.session.SessionCommand.COMMAND_CODE_SESSION_SET_MEDIA_URI; import static androidx.media3.session.SessionCommand.COMMAND_CODE_SESSION_SET_RATING; -import android.net.Uri; import android.os.Binder; import android.os.Bundle; import android.os.IBinder; @@ -1013,21 +1011,6 @@ import java.util.concurrent.ExecutionException; player.setMediaItems(mediaItems, startIndex, startPositionMs))); } - @Override - public void setMediaUri( - @Nullable IMediaController caller, int seq, @Nullable Uri uri, @Nullable Bundle extras) { - if (caller == null || uri == null || extras == null) { - return; - } - dispatchSessionTaskWithSessionCommand( - caller, - seq, - COMMAND_CODE_SESSION_SET_MEDIA_URI, - (sessionImpl, controller) -> - new SessionResult(sessionImpl.onSetMediaUriOnHandler(controller, uri, extras)), - MediaSessionStub::sendSessionResult); - } - @Override public void setPlaylistMetadata( @Nullable IMediaController caller, int seq, @Nullable Bundle playlistMetadataBundle) { diff --git a/libraries/session/src/main/java/androidx/media3/session/SessionCommand.java b/libraries/session/src/main/java/androidx/media3/session/SessionCommand.java index 256a92c3ff..35ef391826 100644 --- a/libraries/session/src/main/java/androidx/media3/session/SessionCommand.java +++ b/libraries/session/src/main/java/androidx/media3/session/SessionCommand.java @@ -49,7 +49,6 @@ public final class SessionCommand implements Bundleable { @Target(TYPE_USE) @IntDef({ COMMAND_CODE_CUSTOM, - COMMAND_CODE_SESSION_SET_MEDIA_URI, COMMAND_CODE_SESSION_SET_RATING, COMMAND_CODE_LIBRARY_GET_LIBRARY_ROOT, COMMAND_CODE_LIBRARY_SUBSCRIBE, @@ -74,11 +73,8 @@ public final class SessionCommand implements Bundleable { /** Command code for {@link MediaController#setRating(String, Rating)}. */ public static final int COMMAND_CODE_SESSION_SET_RATING = 40010; - /** Command code for {@link MediaController#setMediaUri}. */ - public static final int COMMAND_CODE_SESSION_SET_MEDIA_URI = 40011; - /* package */ static final ImmutableList SESSION_COMMANDS = - ImmutableList.of(COMMAND_CODE_SESSION_SET_RATING, COMMAND_CODE_SESSION_SET_MEDIA_URI); + ImmutableList.of(COMMAND_CODE_SESSION_SET_RATING); ////////////////////////////////////////////////////////////////////////////////////////////////// // Library commands (i.e. commands to {@link MediaLibrarySession#MediaLibrarySessionCallback}) diff --git a/libraries/test_session_common/src/main/aidl/androidx/media3/test/session/common/IRemoteMediaController.aidl b/libraries/test_session_common/src/main/aidl/androidx/media3/test/session/common/IRemoteMediaController.aidl index cf4e6ebf6c..0f611d7be5 100644 --- a/libraries/test_session_common/src/main/aidl/androidx/media3/test/session/common/IRemoteMediaController.aidl +++ b/libraries/test_session_common/src/main/aidl/androidx/media3/test/session/common/IRemoteMediaController.aidl @@ -52,7 +52,6 @@ interface IRemoteMediaController { void setMediaItemsWithStartIndex( String controllerId, in List mediaItems, int startIndex, long startPositionMs); void createAndSetFakeMediaItems(String controllerId, int size); - void setMediaUri(String controllerId, in Uri uri, in Bundle extras); void setPlaylistMetadata(String controllerId, in Bundle playlistMetadata); void addMediaItem(String controllerId, in Bundle mediaitem); void addMediaItemWithIndex(String controllerId, int index, in Bundle mediaitem); diff --git a/libraries/test_session_current/src/androidTest/java/androidx/media3/session/MediaControllerListenerTest.java b/libraries/test_session_current/src/androidTest/java/androidx/media3/session/MediaControllerListenerTest.java index d4a597f410..2cfaf781b6 100644 --- a/libraries/test_session_current/src/androidTest/java/androidx/media3/session/MediaControllerListenerTest.java +++ b/libraries/test_session_current/src/androidTest/java/androidx/media3/session/MediaControllerListenerTest.java @@ -24,6 +24,7 @@ import static androidx.media3.common.Player.STATE_BUFFERING; import static androidx.media3.session.MediaTestUtils.createTimeline; import static androidx.media3.session.MediaUtils.createPlayerCommandsWith; import static androidx.media3.session.MediaUtils.createPlayerCommandsWithout; +import static androidx.media3.session.SessionCommand.COMMAND_CODE_SESSION_SET_RATING; import static androidx.media3.session.SessionResult.RESULT_SUCCESS; import static androidx.media3.test.session.common.CommonConstants.DEFAULT_TEST_NAME; import static androidx.media3.test.session.common.CommonConstants.MOCK_MEDIA3_LIBRARY_SERVICE; @@ -1535,7 +1536,8 @@ public class MediaControllerListenerTest { SessionCommands commands = new SessionCommands.Builder() - .add(new SessionCommand(SessionCommand.COMMAND_CODE_SESSION_SET_RATING)) + .addAllSessionCommands() + .remove(COMMAND_CODE_SESSION_SET_RATING) .build(); remoteSession.setAvailableCommands(commands, Player.Commands.EMPTY); diff --git a/libraries/test_session_current/src/androidTest/java/androidx/media3/session/MediaControllerTest.java b/libraries/test_session_current/src/androidTest/java/androidx/media3/session/MediaControllerTest.java index f24070f94f..80b893e9d3 100644 --- a/libraries/test_session_current/src/androidTest/java/androidx/media3/session/MediaControllerTest.java +++ b/libraries/test_session_current/src/androidTest/java/androidx/media3/session/MediaControllerTest.java @@ -943,7 +943,7 @@ public class MediaControllerTest { public void isSessionCommandAvailable_withAvailablePredefinedSessionCommand_returnsTrue() throws Exception { @SessionCommand.CommandCode - int sessionCommandCode = SessionCommand.COMMAND_CODE_SESSION_SET_MEDIA_URI; + int sessionCommandCode = SessionCommand.COMMAND_CODE_SESSION_SET_RATING; SessionCommand sessionCommand = new SessionCommand(sessionCommandCode); Bundle tokenExtras = new Bundle(); tokenExtras.putBundle( @@ -969,7 +969,7 @@ public class MediaControllerTest { public void isSessionCommandAvailable_withUnavailablePredefinedSessionCommand_returnsFalse() throws Exception { @SessionCommand.CommandCode - int sessionCommandCode = SessionCommand.COMMAND_CODE_SESSION_SET_MEDIA_URI; + int sessionCommandCode = SessionCommand.COMMAND_CODE_SESSION_SET_RATING; SessionCommand sessionCommand = new SessionCommand(sessionCommandCode); Bundle tokenExtras = new Bundle(); tokenExtras.putBundle( diff --git a/libraries/test_session_current/src/androidTest/java/androidx/media3/session/MediaSessionCallbackTest.java b/libraries/test_session_current/src/androidTest/java/androidx/media3/session/MediaSessionCallbackTest.java index b079208c35..d145758606 100644 --- a/libraries/test_session_current/src/androidTest/java/androidx/media3/session/MediaSessionCallbackTest.java +++ b/libraries/test_session_current/src/androidTest/java/androidx/media3/session/MediaSessionCallbackTest.java @@ -27,7 +27,6 @@ import static com.google.common.truth.Truth.assertThat; import static java.util.concurrent.TimeUnit.MILLISECONDS; import android.content.Context; -import android.net.Uri; import android.os.Bundle; import android.text.TextUtils; import androidx.media3.common.MediaItem; @@ -239,43 +238,6 @@ public class MediaSessionCallbackTest { assertThat(TestUtils.equals(testArgs, argsRef.get())).isTrue(); } - @Test - public void onSetMediaUri() throws Exception { - Uri testUri = Uri.parse("foo://boo"); - Bundle testExtras = TestUtils.createTestBundle(); - CountDownLatch latch = new CountDownLatch(1); - AtomicReference uriRef = new AtomicReference<>(); - AtomicReference extrasRef = new AtomicReference<>(); - MediaSession.Callback callback = - new MediaSession.Callback() { - @Override - public int onSetMediaUri( - MediaSession session, ControllerInfo controller, Uri uri, Bundle extras) { - if (!TextUtils.equals(controller.getPackageName(), SUPPORT_APP_PACKAGE_NAME)) { - return RESULT_INFO_SKIPPED; - } - - uriRef.set(uri); - extrasRef.set(extras); - latch.countDown(); - return RESULT_SUCCESS; - } - }; - MediaSession session = - sessionTestRule.ensureReleaseAfterTest( - new MediaSession.Builder(context, player) - .setCallback(callback) - .setId("testOnSetMediaUri") - .build()); - RemoteMediaController controller = - controllerTestRule.createRemoteController(session.getToken()); - - controller.setMediaUri(testUri, testExtras); - assertThat(latch.await(TIMEOUT_MS, MILLISECONDS)).isTrue(); - assertThat(uriRef.get()).isEqualTo(testUri); - assertThat(TestUtils.equals(testExtras, extrasRef.get())).isTrue(); - } - @Test public void onSetRatingWithMediaId() throws Exception { float ratingValue = 3.5f; diff --git a/libraries/test_session_current/src/androidTest/java/androidx/media3/session/MediaSessionPermissionTest.java b/libraries/test_session_current/src/androidTest/java/androidx/media3/session/MediaSessionPermissionTest.java index f00a739c91..645fc885c9 100644 --- a/libraries/test_session_current/src/androidTest/java/androidx/media3/session/MediaSessionPermissionTest.java +++ b/libraries/test_session_current/src/androidTest/java/androidx/media3/session/MediaSessionPermissionTest.java @@ -27,7 +27,6 @@ import static androidx.media3.common.Player.COMMAND_SET_MEDIA_ITEMS_METADATA; import static androidx.media3.common.Player.COMMAND_SET_TRACK_SELECTION_PARAMETERS; import static androidx.media3.session.MediaUtils.createPlayerCommandsWith; import static androidx.media3.session.MediaUtils.createPlayerCommandsWithout; -import static androidx.media3.session.SessionCommand.COMMAND_CODE_SESSION_SET_MEDIA_URI; import static androidx.media3.session.SessionCommand.COMMAND_CODE_SESSION_SET_RATING; import static androidx.media3.session.SessionResult.RESULT_SUCCESS; import static androidx.media3.test.session.common.CommonConstants.SUPPORT_APP_PACKAGE_NAME; @@ -37,7 +36,6 @@ import static com.google.common.truth.Truth.assertThat; import static java.util.concurrent.TimeUnit.MILLISECONDS; import android.content.Context; -import android.net.Uri; import android.os.Bundle; import android.text.TextUtils; import androidx.media3.common.MediaMetadata; @@ -50,7 +48,6 @@ import androidx.media3.test.session.common.HandlerThreadTestRule; import androidx.media3.test.session.common.MainLooperTestRule; import androidx.test.core.app.ApplicationProvider; import androidx.test.ext.junit.runners.AndroidJUnit4; -import androidx.test.ext.truth.os.BundleSubject; import androidx.test.filters.LargeTest; import com.google.common.util.concurrent.Futures; import com.google.common.util.concurrent.ListenableFuture; @@ -184,31 +181,6 @@ public class MediaSessionPermissionTest { testOnCommandRequest(COMMAND_SET_DEVICE_VOLUME, controller -> controller.setDeviceMuted(true)); } - @Test - public void setMediaUri() throws Exception { - Uri uri = Uri.parse("media://uri"); - createSessionWithAvailableCommands( - createSessionCommandsWith(new SessionCommand(COMMAND_CODE_SESSION_SET_MEDIA_URI)), - Player.Commands.EMPTY); - controllerTestRule - .createRemoteController(session.getToken()) - .setMediaUri(uri, /* extras= */ Bundle.EMPTY); - - assertThat(callback.countDownLatch.await(TIMEOUT_MS, MILLISECONDS)).isTrue(); - assertThat(callback.onSetMediaUriCalled).isTrue(); - assertThat(callback.uri).isEqualTo(uri); - BundleSubject.assertThat(callback.extras).isEmpty(); - - createSessionWithAvailableCommands( - createSessionCommandsWith(new SessionCommand(COMMAND_CODE_SESSION_SET_RATING)), - Player.Commands.EMPTY); - controllerTestRule - .createRemoteController(session.getToken()) - .setMediaUri(uri, /* extras= */ Bundle.EMPTY); - assertThat(callback.countDownLatch.await(NO_RESPONSE_TIMEOUT_MS, MILLISECONDS)).isFalse(); - assertThat(callback.onSetMediaUriCalled).isFalse(); - } - @Test public void setRating() throws Exception { String mediaId = "testSetRating"; @@ -223,9 +195,7 @@ public class MediaSessionPermissionTest { assertThat(callback.mediaId).isEqualTo(mediaId); assertThat(callback.rating).isEqualTo(rating); - createSessionWithAvailableCommands( - createSessionCommandsWith(new SessionCommand(COMMAND_CODE_SESSION_SET_MEDIA_URI)), - Player.Commands.EMPTY); + createSession(SessionCommands.EMPTY, Player.Commands.EMPTY); controllerTestRule.createRemoteController(session.getToken()).setRating(mediaId, rating); assertThat(callback.countDownLatch.await(NO_RESPONSE_TIMEOUT_MS, MILLISECONDS)).isFalse(); assertThat(callback.onSetRatingCalled).isFalse(); @@ -248,9 +218,7 @@ public class MediaSessionPermissionTest { // Change allowed commands. session.setAvailableCommands( - getTestControllerInfo(), - createSessionCommandsWith(new SessionCommand(COMMAND_CODE_SESSION_SET_MEDIA_URI)), - Player.Commands.EMPTY); + getTestControllerInfo(), SessionCommands.EMPTY, Player.Commands.EMPTY); controller.setRating(mediaId, rating); assertThat(callback.countDownLatch.await(NO_RESPONSE_TIMEOUT_MS, MILLISECONDS)).isFalse(); @@ -315,12 +283,10 @@ public class MediaSessionPermissionTest { public @Player.Command int command; public String mediaId; - public Uri uri; public Bundle extras; public Rating rating; public boolean onCommandRequestCalled; - public boolean onSetMediaUriCalled; public boolean onSetRatingCalled; public MySessionCallback() { @@ -333,7 +299,6 @@ public class MediaSessionPermissionTest { mediaId = null; onCommandRequestCalled = false; - onSetMediaUriCalled = false; onSetRatingCalled = false; } @@ -347,17 +312,6 @@ public class MediaSessionPermissionTest { return MediaSession.Callback.super.onPlayerCommandRequest(session, controller, command); } - @Override - public int onSetMediaUri( - MediaSession session, ControllerInfo controller, Uri uri, Bundle extras) { - assertThat(TextUtils.equals(SUPPORT_APP_PACKAGE_NAME, controller.getPackageName())).isTrue(); - onSetMediaUriCalled = true; - this.uri = uri; - this.extras = extras; - countDownLatch.countDown(); - return RESULT_SUCCESS; - } - @Override public ListenableFuture onSetRating( MediaSession session, ControllerInfo controller, String mediaId, Rating rating) { diff --git a/libraries/test_session_current/src/main/java/androidx/media3/session/MediaControllerProviderService.java b/libraries/test_session_current/src/main/java/androidx/media3/session/MediaControllerProviderService.java index 2912517f69..7d263e9c71 100644 --- a/libraries/test_session_current/src/main/java/androidx/media3/session/MediaControllerProviderService.java +++ b/libraries/test_session_current/src/main/java/androidx/media3/session/MediaControllerProviderService.java @@ -23,7 +23,6 @@ import android.app.Service; import android.content.Context; import android.content.Intent; import android.media.AudioManager; -import android.net.Uri; import android.os.Bundle; import android.os.IBinder; import android.os.RemoteException; @@ -366,16 +365,6 @@ public class MediaControllerProviderService extends Service { }); } - @Override - @SuppressWarnings("FutureReturnValueIgnored") - public void setMediaUri(String controllerId, Uri uri, Bundle extras) throws RemoteException { - runOnHandler( - () -> { - MediaController controller = mediaControllerMap.get(controllerId); - controller.setMediaUri(uri, extras); - }); - } - @Override public void setPlaylistMetadata(String controllerId, Bundle playlistMetadataBundle) throws RemoteException { diff --git a/libraries/test_session_current/src/main/java/androidx/media3/session/RemoteMediaController.java b/libraries/test_session_current/src/main/java/androidx/media3/session/RemoteMediaController.java index 4c34fded93..6b0449ce25 100644 --- a/libraries/test_session_current/src/main/java/androidx/media3/session/RemoteMediaController.java +++ b/libraries/test_session_current/src/main/java/androidx/media3/session/RemoteMediaController.java @@ -25,7 +25,6 @@ import android.content.ComponentName; import android.content.Context; import android.content.Intent; import android.content.ServiceConnection; -import android.net.Uri; import android.os.Bundle; import android.os.IBinder; import android.os.RemoteException; @@ -180,10 +179,6 @@ public class RemoteMediaController { binder.createAndSetFakeMediaItems(controllerId, size); } - public void setMediaUri(Uri uri, Bundle extras) throws RemoteException { - binder.setMediaUri(controllerId, uri, extras); - } - public void setPlaylistMetadata(MediaMetadata playlistMetadata) throws RemoteException { binder.setPlaylistMetadata(controllerId, playlistMetadata.toBundle()); }