mirror of
https://github.com/samsonjs/media.git
synced 2026-03-27 09:45:47 +00:00
Rollback of f6928c0ef9
*** Original commit *** Keep download in completed state if only metadata is updated Issue: #8116 *** PiperOrigin-RevId: 343102068
This commit is contained in:
parent
c529a0b9c7
commit
7cf0620231
2 changed files with 10 additions and 40 deletions
|
|
@ -666,28 +666,21 @@ public final class DownloadManager {
|
|||
|
||||
/* package */ static Download mergeRequest(
|
||||
Download download, DownloadRequest request, int stopReason, long nowMs) {
|
||||
DownloadRequest mergedRequest = download.request.copyWithMergedRequest(request);
|
||||
|
||||
@Download.State int state = download.state;
|
||||
// Treat the merge as creating a new download if we're currently removing the existing one, or
|
||||
// if the existing download has failed. Else treat the merge as updating the existing download.
|
||||
// if the existing download is in a terminal state. Else treat the merge as updating the
|
||||
// existing download.
|
||||
long startTimeMs =
|
||||
state == STATE_REMOVING || state == STATE_FAILED ? nowMs : download.startTimeMs;
|
||||
|
||||
if (state == STATE_COMPLETED
|
||||
&& mergedRequest.streamKeys.size() == download.request.streamKeys.size()) {
|
||||
// A completed download is still completed if no new streams are added.
|
||||
state = STATE_COMPLETED;
|
||||
} else if (state == STATE_REMOVING || state == STATE_RESTARTING) {
|
||||
state == STATE_REMOVING || download.isTerminalState() ? nowMs : download.startTimeMs;
|
||||
if (state == STATE_REMOVING || state == STATE_RESTARTING) {
|
||||
state = STATE_RESTARTING;
|
||||
} else if (stopReason != STOP_REASON_NONE) {
|
||||
state = STATE_STOPPED;
|
||||
} else {
|
||||
state = STATE_QUEUED;
|
||||
}
|
||||
|
||||
return new Download(
|
||||
mergedRequest,
|
||||
download.request.copyWithMergedRequest(request),
|
||||
state,
|
||||
startTimeMs,
|
||||
/* updateTimeMs= */ nowMs,
|
||||
|
|
|
|||
|
|
@ -635,45 +635,22 @@ public class DownloadManagerTest {
|
|||
}
|
||||
|
||||
@Test
|
||||
public void mergeRequest_completedWithStopReason_mergesNewKeyAndBecomesStopped() {
|
||||
StreamKey streamKey1 = new StreamKey(/* groupIndex= */ 0, /* trackIndex= */ 0);
|
||||
StreamKey streamKey2 = new StreamKey(/* groupIndex= */ 0, /* trackIndex= */ 1);
|
||||
|
||||
DownloadRequest downloadRequest1 = createDownloadRequest(ID1, streamKey1);
|
||||
public void mergeRequest_completedWithStopReason_becomesStopped() {
|
||||
DownloadRequest downloadRequest = createDownloadRequest(ID1);
|
||||
DownloadBuilder downloadBuilder =
|
||||
new DownloadBuilder(downloadRequest1)
|
||||
new DownloadBuilder(downloadRequest)
|
||||
.setState(Download.STATE_COMPLETED)
|
||||
.setStopReason(/* stopReason= */ 1);
|
||||
Download download = downloadBuilder.build();
|
||||
|
||||
DownloadRequest downloadRequest2 = createDownloadRequest(ID1, streamKey2);
|
||||
Download mergedDownload =
|
||||
DownloadManager.mergeRequest(download, downloadRequest2, download.stopReason, NOW_MS);
|
||||
DownloadManager.mergeRequest(download, downloadRequest, download.stopReason, NOW_MS);
|
||||
|
||||
Download expectedDownload =
|
||||
downloadBuilder
|
||||
.setStreamKeys(streamKey1, streamKey2)
|
||||
.setState(Download.STATE_STOPPED)
|
||||
.build();
|
||||
downloadBuilder.setStartTimeMs(NOW_MS).setState(Download.STATE_STOPPED).build();
|
||||
assertEqualIgnoringUpdateTime(mergedDownload, expectedDownload);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void mergeRequest_completed_staysCompleted() {
|
||||
StreamKey streamKey = new StreamKey(/* groupIndex= */ 0, /* trackIndex= */ 0);
|
||||
|
||||
DownloadRequest downloadRequest1 = createDownloadRequest(ID1, streamKey);
|
||||
DownloadBuilder downloadBuilder =
|
||||
new DownloadBuilder(downloadRequest1).setState(Download.STATE_COMPLETED);
|
||||
Download download = downloadBuilder.build();
|
||||
|
||||
DownloadRequest downloadRequest2 = createDownloadRequest(ID1, streamKey);
|
||||
Download mergedDownload =
|
||||
DownloadManager.mergeRequest(download, downloadRequest2, /* stopReason= */ 0, NOW_MS);
|
||||
|
||||
assertEqualIgnoringUpdateTime(mergedDownload, download);
|
||||
}
|
||||
|
||||
private void setupDownloadManager(int maxParallelDownloads) throws Exception {
|
||||
if (downloadManager != null) {
|
||||
releaseDownloadManager();
|
||||
|
|
|
|||
Loading…
Reference in a new issue