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..9dfce1f06772111689b11047e9c6abded5b30e9f |
--- /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. */ |
+ public static final String DATE_TAG = "Date"; |
dewittj
2016/05/25 23:16:45
nit: private
Pete Williamson
2016/05/25 23:59:57
Done.
|
+ 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. |
+ // Triggering conditions will include network state and charging requirements, maybe |
+ // also battery percentage. |
+ Bundle taskExtras = new Bundle(); |
+ Date now = new Date(); |
+ taskExtras.putLong(DATE_TAG, now.getTime()); |
+ |
+ // Create a task. |
+ 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. |
+ } |
+} |