Remove last references to old load error handling methods

PiperOrigin-RevId: 311531734
This commit is contained in:
aquilescanta 2020-05-14 15:55:36 +01:00 committed by Oliver Woodman
parent 9e35c6c28c
commit 758e99e3f1
2 changed files with 43 additions and 16 deletions

View file

@ -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);
}
}

View file

@ -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);