Commit 25c26cdb by jaewan Committed by Oliver Woodman

Return state masked Player values from SessionPlayerConnector

Before this CL, SessionPlayerConnector getters had returned
UNKNOWN_TIME in idle state. It was because
SessionPlayerConnector had followed AndroidX media2
MediaPlayer's behavior, which was the baseline code of the
SessionPlayerConnector.

With this CL, SessionPlayerConnector getters directly return
underlying Player's value, rather than considering calls
in IDLE state as an exception and fallbacks to the default
UNKNOWN_TIME.

PiperOrigin-RevId: 327420940
parent 3af82b2a
......@@ -274,17 +274,17 @@ public class SessionPlayerConnectorTest {
@Test
@SmallTest
@SdkSuppress(minSdkVersion = Build.VERSION_CODES.KITKAT)
public void getCurrentPosition_whenIdleState_returnsUnknownTime() {
public void getCurrentPosition_whenIdleState_returnsDefaultPosition() {
assertThat(sessionPlayerConnector.getPlayerState()).isEqualTo(SessionPlayer.PLAYER_STATE_IDLE);
assertThat(sessionPlayerConnector.getCurrentPosition()).isEqualTo(SessionPlayer.UNKNOWN_TIME);
assertThat(sessionPlayerConnector.getCurrentPosition()).isEqualTo(0);
}
@Test
@SmallTest
@SdkSuppress(minSdkVersion = Build.VERSION_CODES.KITKAT)
public void getBufferedPosition_whenIdleState_returnsUnknownTime() {
public void getBufferedPosition_whenIdleState_returnsDefaultPosition() {
assertThat(sessionPlayerConnector.getPlayerState()).isEqualTo(SessionPlayer.PLAYER_STATE_IDLE);
assertThat(sessionPlayerConnector.getBufferedPosition()).isEqualTo(SessionPlayer.UNKNOWN_TIME);
assertThat(sessionPlayerConnector.getBufferedPosition()).isEqualTo(0);
}
@Test
......
......@@ -336,18 +336,15 @@ import java.util.List;
}
public long getCurrentPosition() {
Assertions.checkState(getState() != SessionPlayer.PLAYER_STATE_IDLE);
return Math.max(0, player.getCurrentPosition());
return player.getCurrentPosition();
}
public long getDuration() {
Assertions.checkState(getState() != SessionPlayer.PLAYER_STATE_IDLE);
long duration = player.getDuration();
return duration == C.TIME_UNSET ? -1 : duration;
return duration == C.TIME_UNSET ? SessionPlayer.UNKNOWN_TIME : duration;
}
public long getBufferedPosition() {
Assertions.checkState(getState() != SessionPlayer.PLAYER_STATE_IDLE);
return player.getBufferedPosition();
}
......
......@@ -440,7 +440,7 @@ public final class SessionPlayerConnector extends SessionPlayer {
}
reset();
this.<Void>runPlayerCallableBlockingInternal(
this.<Void>runPlayerCallableBlocking(
/* callable= */ () -> {
player.close();
return null;
......@@ -504,7 +504,7 @@ public final class SessionPlayerConnector extends SessionPlayer {
state = PLAYER_STATE_IDLE;
mediaItemToBuffState.clear();
}
this.<Void>runPlayerCallableBlockingInternal(
this.<Void>runPlayerCallableBlocking(
/* callable= */ () -> {
player.reset();
return null;
......@@ -596,13 +596,6 @@ public final class SessionPlayerConnector extends SessionPlayer {
}
private <T> T runPlayerCallableBlocking(Callable<T> callable) {
synchronized (stateLock) {
Assertions.checkState(!closed);
}
return runPlayerCallableBlockingInternal(callable);
}
private <T> T runPlayerCallableBlockingInternal(Callable<T> callable) {
SettableFuture<T> future = SettableFuture.create();
boolean success =
taskHandler.postOrRun(
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or sign in to comment