Index: chrome/android/java/src/org/chromium/chrome/browser/offlinepages/BackgroundJobScheduler.java |
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/offlinepages/BackgroundJobScheduler.java b/chrome/android/java/src/org/chromium/chrome/browser/offlinepages/BackgroundJobScheduler.java |
new file mode 100644 |
index 0000000000000000000000000000000000000000..c3209e55f4092a0a7ba15697e6aab12cce01892b |
--- /dev/null |
+++ b/chrome/android/java/src/org/chromium/chrome/browser/offlinepages/BackgroundJobScheduler.java |
@@ -0,0 +1,56 @@ |
+// Copyright 2017 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.annotation.TargetApi; |
+import android.app.job.JobInfo; |
+import android.app.job.JobScheduler; |
+import android.content.ComponentName; |
+import android.content.Context; |
+import android.os.Build; |
+import android.os.PersistableBundle; |
+ |
+/** |
+ * The background job scheduler class used for scheduling tasks using JobScheduler. |
+ */ |
+@TargetApi(Build.VERSION_CODES.LOLLIPOP_MR1) |
+public class BackgroundJobScheduler extends BackgroundScheduler { |
+ public static final int JOB_ID = 774322033; |
+ |
+ public BackgroundJobScheduler(Context context) { |
+ super(context); |
+ } |
+ |
+ @Override |
+ public void unschedule() { |
+ // TODO(fgorski): Cancel the thing here. |
Pete Williamson
2017/02/10 02:10:42
We should implement cancel and overwrite before tu
fgorski
2017/02/10 19:25:59
Done. I changed the code enabling it to not do it
|
+ } |
+ |
+ @Override |
+ protected void scheduleImpl(Context context, TriggerConditions triggerConditions, |
+ long delayStartSeconds, long executionDeadlineSeconds, boolean overwrite) { |
+ // TODO(fgorski): Handle overwrite case. |
+ |
+ PersistableBundle taskExtras = new PersistableBundle(); |
+ TaskExtrasPacker.packTimeInBundle(taskExtras); |
+ TaskExtrasPacker.packTriggerConditionsInBundle(taskExtras, triggerConditions); |
+ |
+ JobInfo jobInfo = |
+ new JobInfo |
+ .Builder(JOB_ID, |
+ new ComponentName(context, BackgroundSchedulerJobService.class)) |
+ .setMinimumLatency(delayStartSeconds * 1000) // milliseconds |
+ .setOverrideDeadline(executionDeadlineSeconds * 1000) // milliseconds |
+ .setPersisted(true) // across device resets |
+ .setRequiredNetworkType(triggerConditions.requireUnmeteredNetwork() |
+ ? JobInfo.NETWORK_TYPE_UNMETERED |
+ : JobInfo.NETWORK_TYPE_ANY) |
+ .setRequiresCharging(triggerConditions.requirePowerConnected()) |
+ .setExtras(taskExtras) |
+ .build(); |
+ |
+ ((JobScheduler) context.getSystemService(Context.JOB_SCHEDULER_SERVICE)).schedule(jobInfo); |
+ } |
+} |