0
0
mirror of https://github.com/ankidroid/Anki-Android.git synced 2024-09-20 12:02:16 +02:00

NF: Allow to execute task and listener without manager

I realized for a test that it may be easier to get to execute a task against a listener without involving the whole
manager process. This ensure this feature will be available to any tester when needed even if I don't use it know
This commit is contained in:
Arthur Milchior 2021-04-30 08:49:25 +02:00 committed by Mike Hardy
parent 8e52b22a19
commit fabf28a937

View File

@ -36,12 +36,18 @@ public class ForegroundTaskManager extends TaskManager {
public <ProgressListener, ProgressBackground extends ProgressListener, ResultListener, ResultBackground extends ResultListener> CollectionTask<ProgressListener, ProgressBackground, ResultListener, ResultBackground> launchCollectionTaskConcrete(
@NonNull CollectionTask.Task<ProgressBackground, ResultBackground> task,
@Nullable TaskListener<ProgressListener, ResultListener> listener) {
return executeTaskWithListener(task, listener, mColGetter);
}
public static <ProgressListener, ProgressBackground extends ProgressListener, ResultListener, ResultBackground extends ResultListener> CollectionTask<ProgressListener, ProgressBackground, ResultListener, ResultBackground> executeTaskWithListener(
@NonNull CollectionTask.Task<ProgressBackground, ResultBackground> task,
@Nullable TaskListener<ProgressListener, ResultListener> listener, CollectionGetter colGetter) {
if (listener != null) {
listener.onPreExecute();
}
final ResultBackground res;
try {
res = task.task(mColGetter.getCol(), new MockTaskManager<>(listener));
res = task.task(colGetter.getCol(), new MockTaskManager<>(listener));
} catch (Exception e) {
Timber.w(e, "A new failure may have something to do with running in the foreground.");
throw e;
@ -79,7 +85,7 @@ public class ForegroundTaskManager extends TaskManager {
return true;
}
public class MockTaskManager<ProgressListener, ProgressBackground extends ProgressListener> implements ProgressSenderAndCancelListener<ProgressBackground> {
public static class MockTaskManager<ProgressListener, ProgressBackground extends ProgressListener> implements ProgressSenderAndCancelListener<ProgressBackground> {
private final @Nullable TaskListener<ProgressListener, ?> mTaskListener;
@ -101,7 +107,7 @@ public class ForegroundTaskManager extends TaskManager {
}
}
public class EmptyTask<ProgressListener, ProgressBackground extends ProgressListener, ResultListener, ResultBackground extends ResultListener> extends
public static class EmptyTask<ProgressListener, ProgressBackground extends ProgressListener, ResultListener, ResultBackground extends ResultListener> extends
CollectionTask<ProgressListener, ProgressBackground, ResultListener, ResultBackground> {
protected EmptyTask(Task<ProgressBackground, ResultBackground> task, TaskListener<ProgressListener, ResultListener> listener) {