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); |
+ } |
+ } |
} |