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

Unified Diff: chrome/android/java/src/org/chromium/chrome/browser/offlinepages/BackgroundScheduler.java

Issue 2094013003: Uses TriggerConditions in the BackgroundScheduler. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Some naming and improved documentation on the backup scheduling Created 4 years, 6 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 side-by-side diff with in-line comments
Download patch
Index: chrome/android/java/src/org/chromium/chrome/browser/offlinepages/BackgroundScheduler.java
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/offlinepages/BackgroundScheduler.java b/chrome/android/java/src/org/chromium/chrome/browser/offlinepages/BackgroundScheduler.java
index 24cb70b048751896dfe6c6c9148dbe6ad9d6d3c6..67d3d5534c5970f47057f1b21c0219968780d926 100644
--- a/chrome/android/java/src/org/chromium/chrome/browser/offlinepages/BackgroundScheduler.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/offlinepages/BackgroundScheduler.java
@@ -18,48 +18,62 @@ import org.chromium.chrome.browser.ChromeBackgroundService;
*/
public class BackgroundScheduler {
private static final long ONE_WEEK_IN_SECONDS = 60 * 60 * 24 * 7;
+ private static final long NO_DELAY = 0;
+ private static final boolean OVERWRITE = true;
/**
* For the given Triggering conditions, start a new GCM Network Manager request.
*/
public static void schedule(Context context, TriggerConditions triggerConditions) {
- // TODO(dougarnett): Use trigger conditions in task builder config.
- schedule(context, 0 /* delayStartSecs */);
+ schedule(context, triggerConditions, NO_DELAY, OVERWRITE);
+ }
+
+ /**
+ * If there is no currently scheduled task, then start a GCM Network Manager request
+ * for the given Triggering conditions but delayed to run after {@code delayStartSecs}.
+ * Typically, the Request Coordinator will overwrite this task after task processing
+ * and/or queue updates. This is a backup task in case processing is killed by the
+ * system.
+ */
+ public static void backupSchedule(
+ Context context, TriggerConditions triggerConditions, long delayStartSecs) {
+ schedule(context, triggerConditions, delayStartSecs, !OVERWRITE);
+ }
+
+ /**
+ * Cancel any outstanding GCM Network Manager requests.
+ */
+ public static void unschedule(Context context) {
+ // Get the GCM Network Scheduler.
+ GcmNetworkManager gcmNetworkManager = GcmNetworkManager.getInstance(context);
+ gcmNetworkManager.cancelTask(OfflinePageUtils.TASK_TAG, ChromeBackgroundService.class);
}
/**
* For the given Triggering conditions, start a new GCM Network Manager request allowed
* to run after {@code delayStartSecs} seconds.
*/
- public static void schedule(Context context, long delayStartSecs) {
+ private static void schedule(Context context, TriggerConditions triggerConditions,
+ long delayStartSecs, boolean overwrite) {
// Get the GCM Network Scheduler.
GcmNetworkManager gcmNetworkManager = GcmNetworkManager.getInstance(context);
- // TODO(petewil): Add the triggering conditions into the argument bundle.
- // Triggering conditions will include network state and charging requirements, maybe
- // also battery percentage.
Bundle taskExtras = new Bundle();
TaskExtrasPacker.packTimeInBundle(taskExtras);
+ TaskExtrasPacker.packTriggerConditionsInBundle(taskExtras, triggerConditions);
Task task = new OneoffTask.Builder()
- .setService(ChromeBackgroundService.class)
- .setExecutionWindow(delayStartSecs, ONE_WEEK_IN_SECONDS)
- .setTag(OfflinePageUtils.TASK_TAG)
- .setUpdateCurrent(true)
- .setRequiredNetwork(Task.NETWORK_STATE_CONNECTED)
- .setRequiresCharging(false)
- .setExtras(taskExtras)
- .build();
+ .setService(ChromeBackgroundService.class)
+ .setExecutionWindow(delayStartSecs, ONE_WEEK_IN_SECONDS)
+ .setTag(OfflinePageUtils.TASK_TAG)
+ .setUpdateCurrent(overwrite)
+ .setRequiredNetwork(triggerConditions.requireUnmeteredNetwork()
+ ? Task.NETWORK_STATE_UNMETERED
+ : Task.NETWORK_STATE_CONNECTED)
+ .setRequiresCharging(triggerConditions.requirePowerConnected())
+ .setExtras(taskExtras)
+ .build();
gcmNetworkManager.schedule(task);
}
-
- /**
- * Cancel any outstanding GCM Network Manager requests.
- */
- public static void unschedule(Context context) {
- // Get the GCM Network Scheduler.
- GcmNetworkManager gcmNetworkManager = GcmNetworkManager.getInstance(context);
- gcmNetworkManager.cancelTask(OfflinePageUtils.TASK_TAG, ChromeBackgroundService.class);
- }
}

Powered by Google App Engine
This is Rietveld 408576698