mirror of
https://github.com/androidx/media.git
synced 2025-04-30 06:46:50 +08:00
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
This commit is contained in:
parent
3af82b2a8b
commit
25c26cdbb4
@ -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(
|
||||
|
Loading…
x
Reference in New Issue
Block a user