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

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

Issue 2686203002: [Offline pages] Creating BackgroundJobScheduler, which uses JobScheduler (Closed)
Patch Set: Updating the OS version for BackgroundScheduler#getInstance Created 3 years, 10 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/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);
+ }
+}

Powered by Google App Engine
This is Rietveld 408576698