decideFailedDownloadAction function
Pure decision for _handleFailedDownload. Resume is only chosen while under
maxResumeAttempts — the old code resumed unconditionally whenever
canResume, which let a repeatedly-failing resume loop forever (#355).
Implementation
@visibleForTesting
ResumeAction decideFailedDownloadAction({
required bool canResume,
required int resumeAttempt,
required int currentAttempt,
required int maxRetries,
required int maxResumeAttempts,
}) {
if (canResume && resumeAttempt < maxResumeAttempts) {
return ResumeAction.resume;
}
if (currentAttempt < maxRetries) {
return ResumeAction.retry;
}
return ResumeAction.giveUp;
}