use of androidx.media3.common.Rating in project ExoPlayer by google.
the class SessionCallbackBuilderTest method allowedCommand_whenPlaylistSet_allowsSkipTo.
@Test
public void allowedCommand_whenPlaylistSet_allowsSkipTo() throws Exception {
List<MediaItem> testPlaylist = new ArrayList<>();
testPlaylist.add(TestUtils.createMediaItem(R.raw.video_desks));
testPlaylist.add(TestUtils.createMediaItem(R.raw.video_not_seekable));
int testRewindIncrementMs = 100;
int testFastForwardIncrementMs = 100;
try (MediaSession session = createMediaSession(sessionPlayerConnector, new SessionCallbackBuilder(context, sessionPlayerConnector).setRatingCallback((mediaSession, controller, mediaId, rating) -> SessionResult.RESULT_ERROR_BAD_VALUE).setRewindIncrementMs(testRewindIncrementMs).setFastForwardIncrementMs(testFastForwardIncrementMs).setMediaItemProvider(new SessionCallbackBuilder.MediaIdMediaItemProvider()).build())) {
assertPlayerResultSuccess(sessionPlayerConnector.setPlaylist(testPlaylist, null));
assertPlayerResultSuccess(sessionPlayerConnector.prepare());
OnConnectedListener connectedListener = (controller, allowedCommands) -> {
List<Integer> allowedCommandCodes = Arrays.asList(SessionCommand.COMMAND_CODE_PLAYER_SKIP_TO_NEXT_PLAYLIST_ITEM, SessionCommand.COMMAND_CODE_PLAYER_SEEK_TO, SessionCommand.COMMAND_CODE_SESSION_REWIND, SessionCommand.COMMAND_CODE_SESSION_FAST_FORWARD);
assertAllowedCommands(allowedCommandCodes, allowedCommands);
List<Integer> disallowedCommandCodes = Arrays.asList(SessionCommand.COMMAND_CODE_PLAYER_SKIP_TO_PREVIOUS_PLAYLIST_ITEM);
assertDisallowedCommands(disallowedCommandCodes, allowedCommands);
};
CountDownLatch allowedCommandChangedLatch = new CountDownLatch(1);
OnAllowedCommandsChangedListener allowedCommandChangedListener = (controller, allowedCommands) -> {
List<Integer> allowedCommandCodes = Arrays.asList(SessionCommand.COMMAND_CODE_PLAYER_SKIP_TO_PREVIOUS_PLAYLIST_ITEM);
assertAllowedCommands(allowedCommandCodes, allowedCommands);
List<Integer> disallowedCommandCodes = Arrays.asList(SessionCommand.COMMAND_CODE_PLAYER_SKIP_TO_NEXT_PLAYLIST_ITEM, SessionCommand.COMMAND_CODE_PLAYER_SEEK_TO, SessionCommand.COMMAND_CODE_SESSION_REWIND, SessionCommand.COMMAND_CODE_SESSION_FAST_FORWARD);
assertDisallowedCommands(disallowedCommandCodes, allowedCommands);
allowedCommandChangedLatch.countDown();
};
try (MediaController controller = createConnectedController(session, connectedListener, allowedCommandChangedListener)) {
assertPlayerResultSuccess(sessionPlayerConnector.skipToNextPlaylistItem());
assertThat(allowedCommandChangedLatch.await(CONTROLLER_COMMAND_WAIT_TIME_MS, MILLISECONDS)).isTrue();
// Also test whether the rewind fails as expected.
assertSessionResultFailure(controller.rewind());
assertThat(sessionPlayerConnector.getCurrentPosition()).isEqualTo(0);
assertThat(controller.getCurrentPosition()).isEqualTo(0);
}
}
}
use of androidx.media3.common.Rating in project media by androidx.
the class MediaSessionCompatCallbackWithMediaControllerTest method setRatingWithoutMediaId.
@Test
public void setRatingWithoutMediaId() throws Exception {
float ratingValue = 3.5f;
Rating rating = new StarRating(5, ratingValue);
RemoteMediaController controller = createControllerAndWaitConnection();
sessionCallback.reset(1);
controller.setRating(rating);
assertThat(sessionCallback.await(TIMEOUT_MS)).isTrue();
assertThat(sessionCallback.onSetRatingCalled).isTrue();
assertThat(MediaUtils.convertToRating(sessionCallback.rating)).isEqualTo(rating);
}
use of androidx.media3.common.Rating in project media by androidx.
the class MediaSessionPermissionTest method setRating.
@Test
public void setRating() throws Exception {
String mediaId = "testSetRating";
Rating rating = new StarRating(5, 3.5f);
createSessionWithAvailableCommands(createSessionCommandsWith(new SessionCommand(COMMAND_CODE_SESSION_SET_RATING)), Player.Commands.EMPTY);
controllerTestRule.createRemoteController(session.getToken()).setRating(mediaId, rating);
assertThat(callback.countDownLatch.await(TIMEOUT_MS, MILLISECONDS)).isTrue();
assertThat(callback.onSetRatingCalled).isTrue();
assertThat(callback.mediaId).isEqualTo(mediaId);
assertThat(callback.rating).isEqualTo(rating);
createSessionWithAvailableCommands(createSessionCommandsWith(new SessionCommand(COMMAND_CODE_SESSION_SET_MEDIA_URI)), Player.Commands.EMPTY);
controllerTestRule.createRemoteController(session.getToken()).setRating(mediaId, rating);
assertThat(callback.countDownLatch.await(NO_RESPONSE_TIMEOUT_MS, MILLISECONDS)).isFalse();
assertThat(callback.onSetRatingCalled).isFalse();
}
use of androidx.media3.common.Rating in project media by androidx.
the class MediaUtilsTest method assertRatingEquals.
void assertRatingEquals(Rating rating, RatingCompat ratingCompat) {
if (rating == null && ratingCompat == null) {
return;
}
assertThat(rating.isRated()).isEqualTo(ratingCompat.isRated());
if (rating instanceof HeartRating) {
assertThat(ratingCompat.getRatingStyle()).isEqualTo(RatingCompat.RATING_HEART);
assertThat(((HeartRating) rating).isHeart()).isEqualTo(ratingCompat.hasHeart());
} else if (rating instanceof ThumbRating) {
assertThat(ratingCompat.getRatingStyle()).isEqualTo(RatingCompat.RATING_THUMB_UP_DOWN);
assertThat(((ThumbRating) rating).isThumbsUp()).isEqualTo(ratingCompat.isThumbUp());
} else if (rating instanceof StarRating) {
StarRating starRating = (StarRating) rating;
switch(starRating.getMaxStars()) {
case 3:
assertThat(ratingCompat.getRatingStyle()).isEqualTo(RatingCompat.RATING_3_STARS);
break;
case 4:
assertThat(ratingCompat.getRatingStyle()).isEqualTo(RatingCompat.RATING_4_STARS);
break;
case 5:
assertThat(ratingCompat.getRatingStyle()).isEqualTo(RatingCompat.RATING_5_STARS);
break;
// fall out
default:
}
assertThat(starRating.getStarRating()).isEqualTo(ratingCompat.getStarRating());
} else if (rating instanceof PercentageRating) {
assertThat(ratingCompat.getRatingStyle()).isEqualTo(RatingCompat.RATING_PERCENTAGE);
assertThat(((PercentageRating) rating).getPercent()).isEqualTo(ratingCompat.getPercentRating());
}
}
use of androidx.media3.common.Rating in project media by androidx.
the class MediaSessionCallbackWithMediaControllerCompatTest method setRating.
@Test
public void setRating() throws Exception {
int ratingType = RatingCompat.RATING_5_STARS;
float ratingValue = 3.5f;
RatingCompat rating = RatingCompat.newStarRating(ratingType, ratingValue);
String mediaId = "media_id";
CountDownLatch latch = new CountDownLatch(1);
SessionCallback callback = new TestSessionCallback() {
@Override
public ListenableFuture<SessionResult> onSetRating(MediaSession session, ControllerInfo controller, String mediaIdOut, Rating ratingOut) {
assertThat(mediaIdOut).isEqualTo(mediaId);
assertThat(ratingOut).isEqualTo(MediaUtils.convertToRating(rating));
latch.countDown();
return Futures.immediateFuture(new SessionResult(RESULT_SUCCESS));
}
};
handler.postAndSync(() -> {
List<MediaItem> mediaItems = MediaTestUtils.createMediaItems(mediaId);
player.timeline = MediaTestUtils.createTimeline(mediaItems);
});
session = new MediaSession.Builder(context, player).setId("setRating").setSessionCallback(callback).build();
controller = new RemoteMediaControllerCompat(context, session.getSessionCompat().getSessionToken(), /* waitForConnection= */
true);
controller.getTransportControls().setRating(rating);
assertThat(latch.await(TIMEOUT_MS, MILLISECONDS)).isTrue();
}
Aggregations