From a884186e58548c77404f4f8f37aff238672145df Mon Sep 17 00:00:00 2001 From: bachinger Date: Fri, 7 Jul 2023 16:02:37 +0100 Subject: [PATCH] Add android unit test for setting playback speed of a legacy session PiperOrigin-RevId: 546282819 --- ...aControllerWithMediaSessionCompatTest.java | 61 +++++++++++++++++++ 1 file changed, 61 insertions(+) diff --git a/libraries/test_session_current/src/androidTest/java/androidx/media3/session/MediaControllerWithMediaSessionCompatTest.java b/libraries/test_session_current/src/androidTest/java/androidx/media3/session/MediaControllerWithMediaSessionCompatTest.java index 7431892fc1..8b582a8363 100644 --- a/libraries/test_session_current/src/androidTest/java/androidx/media3/session/MediaControllerWithMediaSessionCompatTest.java +++ b/libraries/test_session_current/src/androidTest/java/androidx/media3/session/MediaControllerWithMediaSessionCompatTest.java @@ -139,6 +139,67 @@ public class MediaControllerWithMediaSessionCompatTest { assertThat(controller.isConnected()).isTrue(); } + @Test + public void setPlaybackSpeed() throws Exception { + PlaybackStateCompat playbackStateCompat = + new PlaybackStateCompat.Builder() + .setState( + PlaybackStateCompat.STATE_PAUSED, + /* position= */ 10_000L, + /* playbackSpeed= */ 1.0f) + .setActions(PlaybackStateCompat.ACTION_SET_PLAYBACK_SPEED) + .build(); + session.setPlaybackState(playbackStateCompat); + MediaController controller = controllerTestRule.createController(session.getSessionToken()); + CountDownLatch countDownLatch = new CountDownLatch(1); + AtomicReference parametersRef = new AtomicReference<>(); + controller.addListener( + new Player.Listener() { + @Override + public void onPlaybackParametersChanged(PlaybackParameters playbackParameters) { + parametersRef.set(playbackParameters); + countDownLatch.countDown(); + } + }); + + threadTestRule + .getHandler() + .postAndSync( + () -> { + assertThat( + controller + .getAvailableCommands() + .contains(Player.COMMAND_SET_SPEED_AND_PITCH)) + .isTrue(); + controller.setPlaybackSpeed(2.0f); + }); + + assertThat(countDownLatch.await(1000, MILLISECONDS)).isTrue(); + assertThat(parametersRef.get().speed).isEqualTo(2.0f); + } + + @Test + public void setPlaybackSpeed_actionSetPlaybackSpeedNotAvailable_commandNotAvailable() + throws Exception { + PlaybackStateCompat playbackStateCompat = + new PlaybackStateCompat.Builder() + .setState(PlaybackStateCompat.STATE_PAUSED, 10_000L, /* playbackSpeed= */ 1.0f) + .setActions(PlaybackStateCompat.ACTION_PAUSE) + .build(); + session.setPlaybackState(playbackStateCompat); + MediaController controller = controllerTestRule.createController(session.getSessionToken()); + + threadTestRule + .getHandler() + .postAndSync( + () -> + assertThat( + controller + .getAvailableCommands() + .contains(Player.COMMAND_SET_SPEED_AND_PITCH)) + .isFalse()); + } + @Test public void disconnected_bySessionRelease() throws Exception { CountDownLatch latch = new CountDownLatch(1);