Chromium Code Reviews| 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 |
| new file mode 100644 |
| index 0000000000000000000000000000000000000000..0195202c90e5066c191b5beb616ed62ba19637d6 |
| --- /dev/null |
| +++ b/chrome/android/java/src/org/chromium/chrome/browser/offlinepages/BackgroundScheduler.java |
| @@ -0,0 +1,61 @@ |
| +// Copyright 2016 The Chromium Authors. All rights reserved. |
| +// Use of this source code is governed by a BSD-style license that can be |
| +// found in the LICENSE file. |
| + |
| +package org.chromium.chrome.browser.offlinepages; |
| + |
| +import android.content.Context; |
| +import android.os.Bundle; |
| + |
| +import com.google.android.gms.gcm.GcmNetworkManager; |
| +import com.google.android.gms.gcm.OneoffTask; |
| +import com.google.android.gms.gcm.Task; |
| + |
| +import org.chromium.chrome.browser.ChromeBackgroundService; |
| + |
| +import java.util.Date; |
| + |
| +/** |
| + * The background scheduler class is for setting GCM Network Manager tasks. |
| + */ |
| +public class BackgroundScheduler { |
| + /** Bundle key for the timestamp in milliseconds when the request started. */ |
| + private static final String DATE_TAG = "Date"; |
| + private static final long ONE_WEEK_IN_SECONDS = 60 * 60 * 24 * 7; |
| + |
| + /** |
| + * For the given Triggering conditions, start a new GCM Network Manager request. |
| + */ |
| + public static void schedule(Context context) { |
| + // Get the GCM Network Scheduler. |
| + GcmNetworkManager gcmNetworkManager = GcmNetworkManager.getInstance(context); |
| + |
| + // TODO(petewil): Today this puts timestamp, add triggering conditions into bundle. |
|
Bernhard Bauer
2016/05/26 11:17:44
Nit: I can't parse this sentence :)
Pete Williamson
2016/05/26 17:02:45
OK, try again, I rephrased it,hopefully with bette
|
| + // Triggering conditions will include network state and charging requirements, maybe |
| + // also battery percentage. |
| + Bundle taskExtras = new Bundle(); |
| + Date now = new Date(); |
|
Bernhard Bauer
2016/05/26 11:17:44
I don't exactly know what you are going to use thi
Pete Williamson
2016/05/26 17:02:45
This is to mark the starting point of an elapsed t
Bernhard Bauer
2016/05/27 12:36:15
OK, yeah, I would use SystemClock.elapsedRealtime(
Pete Williamson
2016/05/27 17:57:58
Done. I'll need to be careful to check for negati
Bernhard Bauer
2016/05/31 14:15:26
AFAICT, your tasks are currently not persisted acr
Pete Williamson
2016/05/31 14:30:15
FYI: Our tasks are persisted across reboots. We p
Bernhard Bauer
2016/05/31 14:57:31
Uh, the default for one-off tasks is to be _not_ p
|
| + taskExtras.putLong(DATE_TAG, now.getTime()); |
|
Bernhard Bauer
2016/05/26 11:17:44
Hm... this creates the bundle, but BackgroundSched
Pete Williamson
2016/05/26 17:02:45
We want to keep BackgroundSchedulerBridge at thin
Bernhard Bauer
2016/05/27 12:36:15
Yeah, it doesn't have to be in BackgroundScheduler
Pete Williamson
2016/05/27 17:57:58
Good idea. I'm working on a test changelist right
|
| + |
| + // Create a task. |
|
Bernhard Bauer
2016/05/26 11:17:44
Nit: some of these comments are bordering on no in
Pete Williamson
2016/05/26 17:02:45
Comment removed. Yep, sorry, that's my personal s
|
| + Task task = new OneoffTask.Builder() |
| + .setService(ChromeBackgroundService.class) |
| + .setExecutionWindow(0, ONE_WEEK_IN_SECONDS) |
| + .setTag(OfflinePageUtils.TASK_TAG) |
| + .setUpdateCurrent(true) |
| + .setRequiredNetwork(Task.NETWORK_STATE_CONNECTED) |
| + .setRequiresCharging(false) |
| + .setExtras(taskExtras) |
| + .build(); |
| + |
| + // Schedule the task. |
| + gcmNetworkManager.schedule(task); |
| + } |
| + |
| + /** |
| + * Cancel any outstanding GCM Network Manager requests. |
| + */ |
| + public static void unschedule(Context context) { |
| + // TODO(petewil): Take our task off the task queue. |
| + } |
| +} |