| 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 e690273845cec8b60d884414c42f4836b2c5325b..bf85375d2d20769ff61118d1e017d923b3e949ae 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
|
| @@ -77,6 +77,7 @@ public class BackgroundTaskScheduler {
|
| public boolean schedule(Context context, TaskInfo taskInfo) {
|
| ThreadUtils.assertOnUiThread();
|
| boolean success = mSchedulerDelegate.schedule(context, taskInfo);
|
| + BackgroundTaskSchedulerUma.getInstance().reportTaskScheduled(taskInfo.getTaskId(), success);
|
| if (success) {
|
| BackgroundTaskSchedulerPrefs.addScheduledTask(taskInfo);
|
| }
|
| @@ -91,6 +92,7 @@ public class BackgroundTaskScheduler {
|
| */
|
| public void cancel(Context context, int taskId) {
|
| ThreadUtils.assertOnUiThread();
|
| + BackgroundTaskSchedulerUma.getInstance().reportTaskCanceled(taskId);
|
| BackgroundTaskSchedulerPrefs.removeScheduledTask(taskId);
|
| mSchedulerDelegate.cancel(context, taskId);
|
| }
|
| @@ -105,14 +107,19 @@ public class BackgroundTaskScheduler {
|
| public void checkForOSUpgrade(Context context) {
|
| int oldSdkInt = BackgroundTaskSchedulerPrefs.getLastSdkVersion();
|
| int newSdkInt = Build.VERSION.SDK_INT;
|
| - // No OS upgrade detected.
|
| - if (oldSdkInt == newSdkInt) return;
|
|
|
| - // Save the current SDK version to preferences.
|
| - BackgroundTaskSchedulerPrefs.setLastSdkVersion(newSdkInt);
|
| + if (oldSdkInt != newSdkInt) {
|
| + // Save the current SDK version to preferences.
|
| + BackgroundTaskSchedulerPrefs.setLastSdkVersion(newSdkInt);
|
| + }
|
| +
|
| + // No OS upgrade detected or OS upgrade does not change delegate.
|
| + if (oldSdkInt == newSdkInt || !osUpgradeChangesDelegateType(oldSdkInt, newSdkInt)) {
|
| + BackgroundTaskSchedulerUma.getInstance().flushStats();
|
| + return;
|
| + }
|
|
|
| - // Check for OS upgrades forcing delegate change or "just in case" rescheduling.
|
| - if (!osUpgradeChangesDelegateType(oldSdkInt, newSdkInt)) return;
|
| + BackgroundTaskSchedulerUma.getInstance().removeCachedStats();
|
|
|
| // Explicitly create and invoke old delegate type to cancel all scheduled tasks.
|
| // All preference entries are kept until reschedule call, which removes then then.
|
|
|