| Index: components/background_task_scheduler/android/java/src/org/chromium/components/background_task_scheduler/BackgroundTaskScheduler.java
|
| diff --git a/components/background_task_scheduler/android/java/src/org/chromium/components/background_task_scheduler/BackgroundTaskScheduler.java b/components/background_task_scheduler/android/java/src/org/chromium/components/background_task_scheduler/BackgroundTaskScheduler.java
|
| index 31f087ff96c2a6a824b0a94990760e86372e0a7c..2fd58ac3812c438dffc583864270e6bc83ca27ca 100644
|
| --- a/components/background_task_scheduler/android/java/src/org/chromium/components/background_task_scheduler/BackgroundTaskScheduler.java
|
| +++ b/components/background_task_scheduler/android/java/src/org/chromium/components/background_task_scheduler/BackgroundTaskScheduler.java
|
| @@ -13,6 +13,7 @@ import org.chromium.base.Log;
|
| import org.chromium.base.ThreadUtils;
|
|
|
| import java.lang.reflect.Constructor;
|
| +import java.util.Set;
|
|
|
| /**
|
| * A BackgroundTaskScheduler which is used to schedule jobs that run in the background.
|
| @@ -75,8 +76,11 @@ public class BackgroundTaskScheduler {
|
| */
|
| public boolean schedule(Context context, TaskInfo taskInfo) {
|
| ThreadUtils.assertOnUiThread();
|
| - BackgroundTaskSchedulerPrefs.addScheduledTask(taskInfo);
|
| - return mSchedulerDelegate.schedule(context, taskInfo);
|
| + boolean success = mSchedulerDelegate.schedule(context, taskInfo);
|
| + if (success) {
|
| + BackgroundTaskSchedulerPrefs.addScheduledTask(taskInfo);
|
| + }
|
| + return success;
|
| }
|
|
|
| /**
|
| @@ -90,4 +94,18 @@ public class BackgroundTaskScheduler {
|
| BackgroundTaskSchedulerPrefs.removeScheduledTask(taskId);
|
| mSchedulerDelegate.cancel(context, taskId);
|
| }
|
| +
|
| + public void reschedule(Context context) {
|
| + Set<String> scheduledTasksClassNames = BackgroundTaskSchedulerPrefs.getScheduledTasks();
|
| + BackgroundTaskSchedulerPrefs.removeAllTasks();
|
| + for (String className : scheduledTasksClassNames) {
|
| + BackgroundTask task = getBackgroundTaskFromClassName(className);
|
| + if (task == null) {
|
| + Log.w(TAG, "Cannot reschedule task for: " + className);
|
| + continue;
|
| + }
|
| +
|
| + task.reschedule(context);
|
| + }
|
| + }
|
| }
|
|
|