Skip to content

Commit 996af24

Browse files
author
Tianhua Ran
committed
fix: don't let task be over when retry
1 parent 58be761 commit 996af24

File tree

2 files changed

+22
-9
lines changed

2 files changed

+22
-9
lines changed

okdownload-filedownloader/src/main/java/com/liulishuo/filedownloader/CompatListenerAssist.java

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -142,7 +142,6 @@ public void taskEnd(@NonNull DownloadTask task, @NonNull EndCause cause,
142142
default:
143143
break;
144144
}
145-
onTaskFinish(downloadTaskAdapter);
146145
}
147146

148147
void handleWarn(
@@ -151,13 +150,15 @@ void handleWarn(
151150
Exception realCause) {
152151
Util.w(TAG, "handle warn, cause: " + cause + "real cause: " + realCause);
153152
callback.warn(downloadTaskAdapter);
153+
onTaskFinish(downloadTaskAdapter);
154154
}
155155

156156
void handleCanceled(@NonNull DownloadTaskAdapter downloadTaskAdapter) {
157157
callback.paused(
158158
downloadTaskAdapter,
159159
downloadTaskAdapter.getProgressAssist().getSofarBytes(),
160160
downloadTaskAdapter.getTotalBytesInLong());
161+
onTaskFinish(downloadTaskAdapter);
161162
}
162163

163164
void handleError(
@@ -191,6 +192,7 @@ void handleError(
191192
throwable = new Throwable(realCause);
192193
}
193194
callback.error(downloadTaskAdapter, throwable);
195+
onTaskFinish(downloadTaskAdapter);
194196
}
195197

196198
void onTaskFinish(@NonNull DownloadTaskAdapter downloadTaskAdapter) {
@@ -215,6 +217,7 @@ public void run() {
215217
try {
216218
callback.blockComplete(downloadTaskAdapter);
217219
callback.completed(downloadTaskAdapter);
220+
onTaskFinish(downloadTaskAdapter);
218221
} catch (final Throwable throwable) {
219222
handleError(downloadTaskAdapter, new Exception(throwable));
220223
}
@@ -230,6 +233,7 @@ public void run() {
230233
callback.completed(downloadTaskAdapter);
231234
}
232235
});
236+
onTaskFinish(downloadTaskAdapter);
233237
} catch (final Throwable throwable) {
234238
uiHandler.post(new Runnable() {
235239
@Override

okdownload-filedownloader/src/test/java/com.liulishuo.filedownloader/CompatListenerAssistTest.java

Lines changed: 17 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -177,13 +177,11 @@ public void taskEnd_handleError() {
177177
when(mockTask.getTag(DownloadTaskAdapter.KEY_TASK_ADAPTER)).thenReturn(mockTaskAdapter);
178178
when(mockTaskAdapter.getProgressAssist()).thenReturn(mockProgressAssist);
179179
doNothing().when(compatListenerAssist).handleError(mockTaskAdapter, null);
180-
doNothing().when(compatListenerAssist).onTaskFinish(mockTaskAdapter);
181180

182181
compatListenerAssist.taskEnd(mockTask, EndCause.PRE_ALLOCATE_FAILED, null);
183182
compatListenerAssist.taskEnd(mockTask, EndCause.ERROR, null);
184183

185184
verify(compatListenerAssist, times(2)).handleError(mockTaskAdapter, null);
186-
verify(compatListenerAssist, times(2)).onTaskFinish(mockTaskAdapter);
187185
verify(mockProgressAssist, times(2)).clearProgress();
188186
}
189187

@@ -195,12 +193,10 @@ public void taskEnd_handleCanceled() {
195193
when(mockTask.getTag(DownloadTaskAdapter.KEY_TASK_ADAPTER)).thenReturn(mockTaskAdapter);
196194
when(mockTaskAdapter.getProgressAssist()).thenReturn(mockProgressAssist);
197195
doNothing().when(compatListenerAssist).handleCanceled(mockTaskAdapter);
198-
doNothing().when(compatListenerAssist).onTaskFinish(mockTaskAdapter);
199196

200197
compatListenerAssist.taskEnd(mockTask, EndCause.CANCELED, null);
201198

202199
verify(compatListenerAssist).handleCanceled(mockTaskAdapter);
203-
verify(compatListenerAssist).onTaskFinish(mockTaskAdapter);
204200
verify(mockProgressAssist).clearProgress();
205201
}
206202

@@ -213,14 +209,12 @@ public void taskEnd_handleWarn() {
213209
when(mockTaskAdapter.getProgressAssist()).thenReturn(mockProgressAssist);
214210
doNothing().when(compatListenerAssist).handleWarn(
215211
any(DownloadTaskAdapter.class), any(EndCause.class), any(Exception.class));
216-
doNothing().when(compatListenerAssist).onTaskFinish(mockTaskAdapter);
217212

218213
compatListenerAssist.taskEnd(mockTask, EndCause.FILE_BUSY, null);
219214
compatListenerAssist.taskEnd(mockTask, EndCause.SAME_TASK_BUSY, null);
220215

221216
verify(compatListenerAssist).handleWarn(mockTaskAdapter, EndCause.FILE_BUSY, null);
222217
verify(compatListenerAssist).handleWarn(mockTaskAdapter, EndCause.SAME_TASK_BUSY, null);
223-
verify(compatListenerAssist, times(2)).onTaskFinish(mockTaskAdapter);
224218
verify(mockProgressAssist, times(2)).clearProgress();
225219
}
226220

@@ -232,12 +226,10 @@ public void taskEnd_handleComplete() {
232226
when(mockTask.getTag(DownloadTaskAdapter.KEY_TASK_ADAPTER)).thenReturn(mockTaskAdapter);
233227
when(mockTaskAdapter.getProgressAssist()).thenReturn(mockProgressAssist);
234228
doNothing().when(compatListenerAssist).handleComplete(mockTaskAdapter);
235-
doNothing().when(compatListenerAssist).onTaskFinish(mockTaskAdapter);
236229

237230
compatListenerAssist.taskEnd(mockTask, EndCause.COMPLETED, null);
238231

239232
verify(compatListenerAssist).handleComplete(mockTaskAdapter);
240-
verify(compatListenerAssist).onTaskFinish(mockTaskAdapter);
241233
verify(mockProgressAssist).clearProgress();
242234
}
243235

@@ -257,8 +249,10 @@ public void handleCanceled() {
257249
public void handleWarn() {
258250
final DownloadTaskAdapter mockTaskAdapter = mock(DownloadTaskAdapter.class);
259251
compatListenerAssist.handleWarn(mockTaskAdapter, null, null);
252+
doNothing().when(compatListenerAssist).onTaskFinish(mockTaskAdapter);
260253

261254
verify(callback).warn(mockTaskAdapter);
255+
verify(compatListenerAssist).onTaskFinish(mockTaskAdapter);
262256
}
263257

264258
@Test
@@ -278,19 +272,22 @@ public void handleError_interceptByRetry() {
278272
verify(callback).retry(mockTaskAdapter, null, 2, 1L);
279273
verify(mockRetryAssist).doRetry(mockTask);
280274
verify(callback, never()).error(any(DownloadTaskAdapter.class), any(Throwable.class));
275+
verify(compatListenerAssist, never()).onTaskFinish(any(DownloadTaskAdapter.class));
281276
}
282277

283278
@Test
284279
public void handleError_withNetWorkPolicyException() {
285280
final DownloadTaskAdapter mockTaskAdapter = mock(DownloadTaskAdapter.class);
286281
when(mockTaskAdapter.getRetryAssist()).thenReturn(null);
287282
final Exception netWorkPolicyException = mock(NetworkPolicyException.class);
283+
doNothing().when(compatListenerAssist).onTaskFinish(mockTaskAdapter);
288284

289285
compatListenerAssist.handleError(mockTaskAdapter, netWorkPolicyException);
290286
verify(callback, never()).retry(
291287
any(DownloadTaskAdapter.class), any(Throwable.class), anyInt(), anyLong());
292288
verify(callback).error(any(DownloadTaskAdapter.class),
293289
any(FileDownloadNetworkPolicyException.class));
290+
verify(compatListenerAssist).onTaskFinish(mockTaskAdapter);
294291
}
295292

296293
@Test
@@ -301,6 +298,7 @@ public void handleError_withPreAllocateException() {
301298
when(mockTaskAdapter.getRetryAssist()).thenReturn(null);
302299
when(mockProgressAssist.getSofarBytes()).thenReturn(1L);
303300
final Exception mockException = mock(PreAllocateException.class);
301+
doNothing().when(compatListenerAssist).onTaskFinish(mockTaskAdapter);
304302

305303
compatListenerAssist.handleError(mockTaskAdapter, mockException);
306304

@@ -313,6 +311,7 @@ public void handleError_withPreAllocateException() {
313311
assertThat(taskCaptor.getValue()).isEqualTo(mockTaskAdapter);
314312
assertThat(throwableCaptor.getValue())
315313
.isExactlyInstanceOf(FileDownloadOutOfSpaceException.class);
314+
verify(compatListenerAssist).onTaskFinish(mockTaskAdapter);
316315
}
317316

318317
@Test
@@ -323,6 +322,7 @@ public void handleError_withDownloadSecurityException() {
323322
when(mockTaskAdapter.getRetryAssist()).thenReturn(null);
324323
when(mockProgressAssist.getSofarBytes()).thenReturn(1L);
325324
final Exception mockException = mock(DownloadSecurityException.class);
325+
doNothing().when(compatListenerAssist).onTaskFinish(mockTaskAdapter);
326326

327327
compatListenerAssist.handleError(mockTaskAdapter, mockException);
328328

@@ -335,18 +335,21 @@ public void handleError_withDownloadSecurityException() {
335335
assertThat(taskCaptor.getValue()).isEqualTo(mockTaskAdapter);
336336
assertThat(throwableCaptor.getValue())
337337
.isExactlyInstanceOf(FileDownloadSecurityException.class);
338+
verify(compatListenerAssist).onTaskFinish(mockTaskAdapter);
338339
}
339340

340341
@Test
341342
public void handleError_withOtherException() {
342343
final DownloadTaskAdapter mockTaskAdapter = mock(DownloadTaskAdapter.class);
343344
when(mockTaskAdapter.getRetryAssist()).thenReturn(null);
344345
final Exception exception = mock(Exception.class);
346+
doNothing().when(compatListenerAssist).onTaskFinish(mockTaskAdapter);
345347

346348
compatListenerAssist.handleError(mockTaskAdapter, exception);
347349
verify(callback, never()).retry(
348350
any(DownloadTaskAdapter.class), any(Throwable.class), anyInt(), anyLong());
349351
verify(callback).error(any(DownloadTaskAdapter.class), any(Throwable.class));
352+
verify(compatListenerAssist).onTaskFinish(mockTaskAdapter);
350353
}
351354

352355
@Test
@@ -372,13 +375,15 @@ public void handleComplete_syncCallback() throws Throwable {
372375
final DownloadTask mockTask = mock(DownloadTask.class);
373376
when(mockTaskAdapter.getDownloadTask()).thenReturn(mockTask);
374377
when(mockTask.isAutoCallbackToUIThread()).thenReturn(false);
378+
doNothing().when(compatListenerAssist).onTaskFinish(mockTaskAdapter);
375379

376380
compatListenerAssist.taskConnected.set(true);
377381
compatListenerAssist.handleComplete(mockTaskAdapter);
378382

379383
verify(callback).blockComplete(mockTaskAdapter);
380384
verify(callback).completed(mockTaskAdapter);
381385
assertThat(compatListenerAssist.isReuseOldFile()).isFalse();
386+
verify(compatListenerAssist).onTaskFinish(mockTaskAdapter);
382387
}
383388

384389
@Test
@@ -399,6 +404,7 @@ public void handleComplete_syncCallback_error() throws Throwable {
399404
verify(compatListenerAssist).handleError(
400405
any(DownloadTaskAdapter.class), any(Exception.class));
401406
assertThat(compatListenerAssist.isReuseOldFile()).isTrue();
407+
verify(compatListenerAssist, never()).onTaskFinish(mockTaskAdapter);
402408
}
403409

404410
@Test
@@ -412,11 +418,13 @@ public Object answer(InvocationOnMock invocation) {
412418
return null;
413419
}
414420
}).when(uiHander).post(any(Runnable.class));
421+
doNothing().when(compatListenerAssist).onTaskFinish(mockTaskAdapter);
415422

416423
compatListenerAssist.handleBlockComplete(mockTaskAdapter);
417424

418425
verify(callback).blockComplete(mockTaskAdapter);
419426
verify(callback).completed(mockTaskAdapter);
427+
verify(compatListenerAssist).onTaskFinish(mockTaskAdapter);
420428
}
421429

422430
@Test
@@ -439,5 +447,6 @@ public Object answer(InvocationOnMock invocation) {
439447
verify(compatListenerAssist)
440448
.handleError(any(DownloadTaskAdapter.class), any(Exception.class));
441449
verify(callback, never()).completed(mockTaskAdapter);
450+
verify(compatListenerAssist, never()).onTaskFinish(mockTaskAdapter);
442451
}
443452
}

0 commit comments

Comments
 (0)