Remove setMediaUri/onSetMediaUri
This code path is now completely redundant as the same effect can be achieved by using player.setMediaItem. #minor-release PiperOrigin-RevId: 455115567
This commit is contained in:
parent
fdfca88019
commit
21d4e85817
@ -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.
|
||||
|
@ -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;
|
||||
|
@ -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.
|
||||
|
@ -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.
|
||||
*
|
||||
* <p>This can be called multiple times in any states. This would override previous call of this,
|
||||
* or {@link #setMediaItems}.
|
||||
*
|
||||
* <p>The {@link Player.Listener#onTimelineChanged} and/or {@link
|
||||
* Player.Listener#onMediaItemTransition} would be called when it's completed.
|
||||
*
|
||||
* <p>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<SessionResult> 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<MediaItem> mediaItems, int startIndex, long startPositionMs);
|
||||
|
||||
ListenableFuture<SessionResult> setMediaUri(Uri uri, Bundle extras);
|
||||
|
||||
void setPlaylistMetadata(MediaMetadata playlistMetadata);
|
||||
|
||||
MediaMetadata getPlaylistMetadata();
|
||||
|
@ -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<SessionResult> 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)) {
|
||||
|
@ -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<SessionResult> 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");
|
||||
|
@ -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)}.
|
||||
*
|
||||
* <p>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)}.
|
||||
|
@ -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);
|
||||
|
@ -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) {
|
||||
|
@ -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<Integer> 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})
|
||||
|
@ -52,7 +52,6 @@ interface IRemoteMediaController {
|
||||
void setMediaItemsWithStartIndex(
|
||||
String controllerId, in List<Bundle> 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);
|
||||
|
@ -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);
|
||||
|
||||
|
@ -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(
|
||||
|
@ -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<Uri> uriRef = new AtomicReference<>();
|
||||
AtomicReference<Bundle> 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;
|
||||
|
@ -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.MediaItem;
|
||||
@ -51,7 +49,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.collect.ImmutableList;
|
||||
import com.google.common.util.concurrent.Futures;
|
||||
@ -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");
|
||||
createSession(
|
||||
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();
|
||||
|
||||
createSession(
|
||||
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);
|
||||
|
||||
createSession(
|
||||
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<SessionResult> onSetRating(
|
||||
MediaSession session, ControllerInfo controller, String mediaId, Rating rating) {
|
||||
|
@ -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 {
|
||||
|
@ -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());
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user