Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(26)

Side by Side Diff: components/background_task_scheduler/android/java/src/org/chromium/components/background_task_scheduler/BackgroundTaskScheduler.java

Issue 2819703002: [Android] Implements OS upgrade check and rescheduling (Closed)
Patch Set: Calling upgrade task from DeferredStartupHandler Created 3 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 // Copyright 2017 The Chromium Authors. All rights reserved. 1 // Copyright 2017 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 package org.chromium.components.background_task_scheduler; 5 package org.chromium.components.background_task_scheduler;
6 6
7 import android.annotation.TargetApi; 7 import android.annotation.TargetApi;
8 import android.content.Context; 8 import android.content.Context;
9 import android.os.Build; 9 import android.os.Build;
10 import android.support.annotation.Nullable; 10 import android.support.annotation.Nullable;
(...skipping 74 matching lines...) Expand 10 before | Expand all | Expand 10 after
85 * 85 *
86 * @param context the current context. 86 * @param context the current context.
87 * @param taskId the ID of the task to cancel. See {@link TaskIds} for a lis t. 87 * @param taskId the ID of the task to cancel. See {@link TaskIds} for a lis t.
88 */ 88 */
89 public void cancel(Context context, int taskId) { 89 public void cancel(Context context, int taskId) {
90 ThreadUtils.assertOnUiThread(); 90 ThreadUtils.assertOnUiThread();
91 BackgroundTaskSchedulerPrefs.removeScheduledTask(taskId); 91 BackgroundTaskSchedulerPrefs.removeScheduledTask(taskId);
92 mSchedulerDelegate.cancel(context, taskId); 92 mSchedulerDelegate.cancel(context, taskId);
93 } 93 }
94 94
95 /**
96 * Checks whether OS was upgraded and triggers rescheduling if it is necessa ry.
97 * Rescheduling is necessary if type of background task scheduler delegate i s different for a
98 * new version of the OS.
99 *
100 * @param context the current context.
101 */
102 public void checkForOSUpgrade(Context context) {
103 int oldSdkInt = BackgroundTaskSchedulerPrefs.getLastSdkVersion();
104 int newSdkInt = Build.VERSION.SDK_INT;
105 // No OS upgrade detected.
106 if (oldSdkInt == newSdkInt) return;
107
108 // Save the current SDK version to preferences.
109 BackgroundTaskSchedulerPrefs.setLastSdkVersion(newSdkInt);
110
111 // OS upgrade detected within the same delegate type. No is upgrade nece ssary.
112 if ((oldSdkInt < Build.VERSION_CODES.M && newSdkInt < Build.VERSION_CODE S.M)
nyquist 2017/04/18 22:41:08 Do we want to extract the conditional out to somet
fgorski 2017/04/20 22:36:07 Done.
113 || (oldSdkInt >= Build.VERSION_CODES.M && newSdkInt >= Build.VER SION_CODES.M)) {
nyquist 2017/04/18 22:41:08 Maybe stupid question, but if oldSdkInt was someho
fgorski 2017/04/20 22:36:07 I proposed some changes that work, but I am not ve
nyquist 2017/04/25 20:43:56 Yeah, I'm not sure if that is necessary. It feels
114 return;
115 }
116
117 // Explicitly invoke create old delegate type to cancel all scheduled ta sks.
nyquist 2017/04/18 22:41:08 Something seems to be off with this sentence: "inv
fgorski 2017/04/20 22:36:07 Done.
118 // All preference entries are kept until reschedule call, which removes then then.
119 BackgroundTaskSchedulerDelegate oldDelegate =
120 new BackgroundTaskSchedulerGcmNetworkManager();
121 Set<Integer> scheduledTaskIds = BackgroundTaskSchedulerPrefs.getSchedule dTaskIds();
122 for (int taskId : scheduledTaskIds) {
123 oldDelegate.cancel(context, taskId);
124 }
125
126 reschedule(context);
127 }
128
95 public void reschedule(Context context) { 129 public void reschedule(Context context) {
96 Set<String> scheduledTasksClassNames = BackgroundTaskSchedulerPrefs.getS cheduledTasks(); 130 Set<String> scheduledTasksClassNames = BackgroundTaskSchedulerPrefs.getS cheduledTasks();
97 BackgroundTaskSchedulerPrefs.removeAllTasks(); 131 BackgroundTaskSchedulerPrefs.removeAllTasks();
98 for (String className : scheduledTasksClassNames) { 132 for (String className : scheduledTasksClassNames) {
99 BackgroundTask task = getBackgroundTaskFromClassName(className); 133 BackgroundTask task = getBackgroundTaskFromClassName(className);
100 if (task == null) { 134 if (task == null) {
101 Log.w(TAG, "Cannot reschedule task for: " + className); 135 Log.w(TAG, "Cannot reschedule task for: " + className);
102 continue; 136 continue;
103 } 137 }
104 138
105 task.reschedule(context); 139 task.reschedule(context);
106 } 140 }
107 } 141 }
108 } 142 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698