Chromium Code Reviews| 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); |
| + } |
| +} |