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());
}