From 758e99e3f1dc79cab55c390ed584d1a76eb3e2a6 Mon Sep 17 00:00:00 2001 From: aquilescanta Date: Thu, 14 May 2020 15:55:36 +0100 Subject: [PATCH] Remove last references to old load error handling methods PiperOrigin-RevId: 311531734 --- .../DefaultLoadErrorHandlingPolicyTest.java | 31 ++++++++++++++++--- .../playlist/DefaultHlsPlaylistTracker.java | 28 ++++++++++------- 2 files changed, 43 insertions(+), 16 deletions(-) diff --git a/library/core/src/test/java/com/google/android/exoplayer2/upstream/DefaultLoadErrorHandlingPolicyTest.java b/library/core/src/test/java/com/google/android/exoplayer2/upstream/DefaultLoadErrorHandlingPolicyTest.java index 8840abfcdc..28ae4f748f 100644 --- a/library/core/src/test/java/com/google/android/exoplayer2/upstream/DefaultLoadErrorHandlingPolicyTest.java +++ b/library/core/src/test/java/com/google/android/exoplayer2/upstream/DefaultLoadErrorHandlingPolicyTest.java @@ -21,7 +21,10 @@ import android.net.Uri; import androidx.test.ext.junit.runners.AndroidJUnit4; import com.google.android.exoplayer2.C; import com.google.android.exoplayer2.ParserException; +import com.google.android.exoplayer2.source.LoadEventInfo; +import com.google.android.exoplayer2.source.MediaLoadData; import com.google.android.exoplayer2.upstream.HttpDataSource.InvalidResponseCodeException; +import com.google.android.exoplayer2.upstream.LoadErrorHandlingPolicy.LoadErrorInfo; import java.io.IOException; import java.util.Collections; import org.junit.Test; @@ -31,6 +34,18 @@ import org.junit.runner.RunWith; @RunWith(AndroidJUnit4.class) public final class DefaultLoadErrorHandlingPolicyTest { + private static final LoadEventInfo PLACEHOLDER_LOAD_EVENT_INFO = + new LoadEventInfo( + LoadEventInfo.getNewId(), + new DataSpec(Uri.EMPTY), + Uri.EMPTY, + /* responseHeaders= */ Collections.emptyMap(), + /* elapsedRealtimeMs= */ 5000, + /* loadDurationMs= */ 1000, + /* bytesLoaded= */ 0); + private static final MediaLoadData PLACEHOLDER_MEDIA_LOAD_DATA = + new MediaLoadData(/* dataType= */ C.DATA_TYPE_UNKNOWN); + @Test public void getBlacklistDurationMsFor_blacklist404() { InvalidResponseCodeException exception = @@ -77,13 +92,19 @@ public final class DefaultLoadErrorHandlingPolicyTest { } private static long getDefaultPolicyBlacklistOutputFor(IOException exception) { - return new DefaultLoadErrorHandlingPolicy() - .getBlacklistDurationMsFor( - C.DATA_TYPE_MEDIA, /* loadDurationMs= */ 1000, exception, /* errorCount= */ 1); + LoadErrorInfo loadErrorInfo = + new LoadErrorInfo( + PLACEHOLDER_LOAD_EVENT_INFO, + PLACEHOLDER_MEDIA_LOAD_DATA, + exception, + /* errorCount= */ 1); + return new DefaultLoadErrorHandlingPolicy().getBlacklistDurationMsFor(loadErrorInfo); } private static long getDefaultPolicyRetryDelayOutputFor(IOException exception, int errorCount) { - return new DefaultLoadErrorHandlingPolicy() - .getRetryDelayMsFor(C.DATA_TYPE_MEDIA, /* loadDurationMs= */ 1000, exception, errorCount); + LoadErrorInfo loadErrorInfo = + new LoadErrorInfo( + PLACEHOLDER_LOAD_EVENT_INFO, PLACEHOLDER_MEDIA_LOAD_DATA, exception, errorCount); + return new DefaultLoadErrorHandlingPolicy().getRetryDelayMsFor(loadErrorInfo); } } diff --git a/library/hls/src/main/java/com/google/android/exoplayer2/source/hls/playlist/DefaultHlsPlaylistTracker.java b/library/hls/src/main/java/com/google/android/exoplayer2/source/hls/playlist/DefaultHlsPlaylistTracker.java index f179447785..d43284a211 100644 --- a/library/hls/src/main/java/com/google/android/exoplayer2/source/hls/playlist/DefaultHlsPlaylistTracker.java +++ b/library/hls/src/main/java/com/google/android/exoplayer2/source/hls/playlist/DefaultHlsPlaylistTracker.java @@ -238,12 +238,6 @@ public final class DefaultHlsPlaylistTracker primaryMediaPlaylistUrl = masterPlaylist.variants.get(0).url; createBundles(masterPlaylist.mediaPlaylistUrls); MediaPlaylistBundle primaryBundle = playlistBundles.get(primaryMediaPlaylistUrl); - if (isMediaPlaylist) { - // We don't need to load the playlist again. We can use the same result. - primaryBundle.processLoadedPlaylist((HlsMediaPlaylist) result, loadDurationMs); - } else { - primaryBundle.loadPlaylist(); - } LoadEventInfo loadEventInfo = new LoadEventInfo( loadable.loadTaskId, @@ -253,6 +247,12 @@ public final class DefaultHlsPlaylistTracker elapsedRealtimeMs, loadDurationMs, loadable.bytesLoaded()); + if (isMediaPlaylist) { + // We don't need to load the playlist again. We can use the same result. + primaryBundle.processLoadedPlaylist((HlsMediaPlaylist) result, loadEventInfo); + } else { + primaryBundle.loadPlaylist(); + } loadErrorHandlingPolicy.onLoadTaskConcluded(loadable.loadTaskId); eventDispatcher.loadCompleted(loadEventInfo, C.DATA_TYPE_MANIFEST); } @@ -540,15 +540,15 @@ public final class DefaultHlsPlaylistTracker elapsedRealtimeMs, loadDurationMs, loadable.bytesLoaded()); - loadErrorHandlingPolicy.onLoadTaskConcluded(loadable.loadTaskId); if (result instanceof HlsMediaPlaylist) { - processLoadedPlaylist((HlsMediaPlaylist) result, loadDurationMs); + processLoadedPlaylist((HlsMediaPlaylist) result, loadEventInfo); eventDispatcher.loadCompleted(loadEventInfo, C.DATA_TYPE_MANIFEST); } else { playlistError = new ParserException("Loaded playlist has unexpected type."); eventDispatcher.loadError( loadEventInfo, C.DATA_TYPE_MANIFEST, playlistError, /* wasCanceled= */ true); } + loadErrorHandlingPolicy.onLoadTaskConcluded(loadable.loadTaskId); } @Override @@ -639,7 +639,8 @@ public final class DefaultHlsPlaylistTracker mediaPlaylistLoadable.type); } - private void processLoadedPlaylist(HlsMediaPlaylist loadedPlaylist, long loadDurationMs) { + private void processLoadedPlaylist( + HlsMediaPlaylist loadedPlaylist, LoadEventInfo loadEventInfo) { HlsMediaPlaylist oldPlaylist = playlistSnapshot; long currentTimeMs = SystemClock.elapsedRealtime(); lastSnapshotLoadMs = currentTimeMs; @@ -661,9 +662,14 @@ public final class DefaultHlsPlaylistTracker * playlistStuckTargetDurationCoefficient) { // TODO: Allow customization of stuck playlists handling. playlistError = new PlaylistStuckException(playlistUrl); + LoadErrorInfo loadErrorInfo = + new LoadErrorInfo( + loadEventInfo, + new MediaLoadData(C.DATA_TYPE_MANIFEST), + playlistError, + /* errorCount= */ 1); long blacklistDurationMs = - loadErrorHandlingPolicy.getBlacklistDurationMsFor( - C.DATA_TYPE_MANIFEST, loadDurationMs, playlistError, /* errorCount= */ 1); + loadErrorHandlingPolicy.getBlacklistDurationMsFor(loadErrorInfo); notifyPlaylistError(playlistUrl, blacklistDurationMs); if (blacklistDurationMs != C.TIME_UNSET) { blacklistPlaylist(blacklistDurationMs);