Commit 685bb772 by andrewlewis Committed by Oliver Woodman

Move PlaybackStatsListener to non-deprecated state events

PiperOrigin-RevId: 303764399
parent 378593f5
...@@ -173,8 +173,8 @@ public final class PlaybackStatsListener ...@@ -173,8 +173,8 @@ public final class PlaybackStatsListener
if (isSeeking) { if (isSeeking) {
tracker.onSeekStarted(eventTime, /* belongsToPlayback= */ true); tracker.onSeekStarted(eventTime, /* belongsToPlayback= */ true);
} }
tracker.onPlayerStateChanged( tracker.onPlaybackStateChanged(eventTime, playbackState, /* belongsToPlayback= */ true);
eventTime, playWhenReady, playbackState, /* belongsToPlayback= */ true); tracker.onPlayWhenReadyChanged(eventTime, playWhenReady, /* belongsToPlayback= */ true);
tracker.onIsSuppressedChanged(eventTime, isSuppressed, /* belongsToPlayback= */ true); tracker.onIsSuppressedChanged(eventTime, isSuppressed, /* belongsToPlayback= */ true);
tracker.onPlaybackSpeedChanged(eventTime, playbackSpeed); tracker.onPlaybackSpeedChanged(eventTime, playbackSpeed);
playbackStatsTrackers.put(session, tracker); playbackStatsTrackers.put(session, tracker);
...@@ -230,8 +230,7 @@ public final class PlaybackStatsListener ...@@ -230,8 +230,7 @@ public final class PlaybackStatsListener
EventTime startEventTime = Assertions.checkNotNull(sessionStartEventTimes.remove(session)); EventTime startEventTime = Assertions.checkNotNull(sessionStartEventTimes.remove(session));
if (automaticTransition) { if (automaticTransition) {
// Simulate ENDED state to record natural ending of playback. // Simulate ENDED state to record natural ending of playback.
tracker.onPlayerStateChanged( tracker.onPlaybackStateChanged(eventTime, Player.STATE_ENDED, /* belongsToPlayback= */ false);
eventTime, /* playWhenReady= */ true, Player.STATE_ENDED, /* belongsToPlayback= */ false);
} }
tracker.onFinished(eventTime); tracker.onFinished(eventTime);
PlaybackStats playbackStats = tracker.build(/* isFinal= */ true); PlaybackStats playbackStats = tracker.build(/* isFinal= */ true);
...@@ -244,16 +243,27 @@ public final class PlaybackStatsListener ...@@ -244,16 +243,27 @@ public final class PlaybackStatsListener
// AnalyticsListener implementation. // AnalyticsListener implementation.
@Override @Override
public void onPlayerStateChanged( public void onPlaybackStateChanged(EventTime eventTime, @Player.State int state) {
EventTime eventTime, boolean playWhenReady, @Player.State int playbackState) { playbackState = state;
sessionManager.updateSessions(eventTime);
for (String session : playbackStatsTrackers.keySet()) {
boolean belongsToPlayback = sessionManager.belongsToSession(eventTime, session);
playbackStatsTrackers
.get(session)
.onPlaybackStateChanged(eventTime, playbackState, belongsToPlayback);
}
}
@Override
public void onPlayWhenReadyChanged(
EventTime eventTime, boolean playWhenReady, @Player.PlayWhenReadyChangeReason int reason) {
this.playWhenReady = playWhenReady; this.playWhenReady = playWhenReady;
this.playbackState = playbackState;
sessionManager.updateSessions(eventTime); sessionManager.updateSessions(eventTime);
for (String session : playbackStatsTrackers.keySet()) { for (String session : playbackStatsTrackers.keySet()) {
boolean belongsToPlayback = sessionManager.belongsToSession(eventTime, session); boolean belongsToPlayback = sessionManager.belongsToSession(eventTime, session);
playbackStatsTrackers playbackStatsTrackers
.get(session) .get(session)
.onPlayerStateChanged(eventTime, playWhenReady, playbackState, belongsToPlayback); .onPlayWhenReadyChanged(eventTime, playWhenReady, belongsToPlayback);
} }
} }
...@@ -521,31 +531,40 @@ public final class PlaybackStatsListener ...@@ -521,31 +531,40 @@ public final class PlaybackStatsListener
} }
/** /**
* Notifies the tracker of a player state change event, including all player state changes while * Notifies the tracker of a playback state change event, including all playback state changes
* the playback is not in the foreground. * while the playback is not in the foreground.
* *
* @param eventTime The {@link EventTime}. * @param eventTime The {@link EventTime}.
* @param playWhenReady Whether the playback will proceed when ready. * @param state The current {@link Player.State}.
* @param playbackState The current {@link Player.State}.
* @param belongsToPlayback Whether the {@code eventTime} belongs to the current playback. * @param belongsToPlayback Whether the {@code eventTime} belongs to the current playback.
*/ */
public void onPlayerStateChanged( public void onPlaybackStateChanged(
EventTime eventTime, EventTime eventTime, @Player.State int state, boolean belongsToPlayback) {
boolean playWhenReady, playerPlaybackState = state;
@Player.State int playbackState, if (state != Player.STATE_IDLE) {
boolean belongsToPlayback) {
this.playWhenReady = playWhenReady;
playerPlaybackState = playbackState;
if (playbackState != Player.STATE_IDLE) {
hasFatalError = false; hasFatalError = false;
} }
if (playbackState == Player.STATE_IDLE || playbackState == Player.STATE_ENDED) { if (state == Player.STATE_IDLE || state == Player.STATE_ENDED) {
isInterruptedByAd = false; isInterruptedByAd = false;
} }
maybeUpdatePlaybackState(eventTime, belongsToPlayback); maybeUpdatePlaybackState(eventTime, belongsToPlayback);
} }
/** /**
* Notifies the tracker of a play when ready change event, including all play when ready changes
* while the playback is not in the foreground.
*
* @param eventTime The {@link EventTime}.
* @param playWhenReady Whether the playback will proceed when ready.
* @param belongsToPlayback Whether the {@code eventTime} belongs to the current playback.
*/
public void onPlayWhenReadyChanged(
EventTime eventTime, boolean playWhenReady, boolean belongsToPlayback) {
this.playWhenReady = playWhenReady;
maybeUpdatePlaybackState(eventTime, belongsToPlayback);
}
/**
* Notifies the tracker of a change to the playback suppression (e.g. due to audio focus loss), * Notifies the tracker of a change to the playback suppression (e.g. due to audio focus loss),
* including all updates while the playback is not in the foreground. * including all updates while the playback is not in the foreground.
* *
......
...@@ -43,12 +43,9 @@ public final class PlaybackStatsListenerTest { ...@@ -43,12 +43,9 @@ public final class PlaybackStatsListenerTest {
PlaybackStatsListener playbackStatsListener = PlaybackStatsListener playbackStatsListener =
new PlaybackStatsListener(/* keepHistory= */ true, /* callback= */ null); new PlaybackStatsListener(/* keepHistory= */ true, /* callback= */ null);
playbackStatsListener.onPlayerStateChanged( playbackStatsListener.onPlaybackStateChanged(TEST_EVENT_TIME, Player.STATE_BUFFERING);
TEST_EVENT_TIME, /* playWhenReady= */ true, Player.STATE_BUFFERING); playbackStatsListener.onPlaybackStateChanged(TEST_EVENT_TIME, Player.STATE_READY);
playbackStatsListener.onPlayerStateChanged( playbackStatsListener.onPlaybackStateChanged(TEST_EVENT_TIME, Player.STATE_ENDED);
TEST_EVENT_TIME, /* playWhenReady= */ true, Player.STATE_READY);
playbackStatsListener.onPlayerStateChanged(
TEST_EVENT_TIME, /* playWhenReady= */ true, Player.STATE_ENDED);
@Nullable PlaybackStats playbackStats = playbackStatsListener.getPlaybackStats(); @Nullable PlaybackStats playbackStats = playbackStatsListener.getPlaybackStats();
assertThat(playbackStats).isNotNull(); assertThat(playbackStats).isNotNull();
...@@ -60,12 +57,9 @@ public final class PlaybackStatsListenerTest { ...@@ -60,12 +57,9 @@ public final class PlaybackStatsListenerTest {
PlaybackStatsListener playbackStatsListener = PlaybackStatsListener playbackStatsListener =
new PlaybackStatsListener(/* keepHistory= */ false, /* callback= */ null); new PlaybackStatsListener(/* keepHistory= */ false, /* callback= */ null);
playbackStatsListener.onPlayerStateChanged( playbackStatsListener.onPlaybackStateChanged(TEST_EVENT_TIME, Player.STATE_BUFFERING);
TEST_EVENT_TIME, /* playWhenReady= */ true, Player.STATE_BUFFERING); playbackStatsListener.onPlaybackStateChanged(TEST_EVENT_TIME, Player.STATE_READY);
playbackStatsListener.onPlayerStateChanged( playbackStatsListener.onPlaybackStateChanged(TEST_EVENT_TIME, Player.STATE_ENDED);
TEST_EVENT_TIME, /* playWhenReady= */ true, Player.STATE_READY);
playbackStatsListener.onPlayerStateChanged(
TEST_EVENT_TIME, /* playWhenReady= */ true, Player.STATE_ENDED);
@Nullable PlaybackStats playbackStats = playbackStatsListener.getPlaybackStats(); @Nullable PlaybackStats playbackStats = playbackStatsListener.getPlaybackStats();
assertThat(playbackStats).isNotNull(); assertThat(playbackStats).isNotNull();
......
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