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

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

Issue 2697493002: [Offline pages] Implementation of OfflineBackgroundTask using background_task_scheduler (Closed)
Patch Set: 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/BackgroundSchedulerJobService.java
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/offlinepages/BackgroundSchedulerJobService.java b/chrome/android/java/src/org/chromium/chrome/browser/offlinepages/BackgroundSchedulerJobService.java
index b984f4c7d28a54f27ff0ef5c225244aa65351bf4..1edd938067b00545398719f9d2d157bde14db5fa 100644
--- a/chrome/android/java/src/org/chromium/chrome/browser/offlinepages/BackgroundSchedulerJobService.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/offlinepages/BackgroundSchedulerJobService.java
@@ -7,7 +7,11 @@ package org.chromium.chrome.browser.offlinepages;
import android.annotation.TargetApi;
import android.app.job.JobParameters;
import android.app.job.JobService;
+import android.content.Context;
import android.os.Build;
+import android.os.PersistableBundle;
+
+import org.chromium.base.Callback;
/**
* The background scheduler job service for handling background request in 5.1+.
@@ -16,12 +20,16 @@ import android.os.Build;
public class BackgroundSchedulerJobService extends JobService {
@Override
public boolean onStartJob(JobParameters params) {
- // TODO(fgorski): Implement and expose in metadata.
- // Perhaps initialize application context.
- // Perhaps ensure one job runs at a time only.
- // Kick off background processing of downloads here.
- // Processing will happen on a separate thread, and we'll inform OS when done.
- return true;
+ // TODO(fgorski): Remaining work that we may need to do:
+ // * Expose in metadata.
+ // * Perhaps initialize application context/make sure native portion is loaded.
+ // * Perhaps ensure one job runs at a time only.
+ PersistableBundle extras = params.getExtras();
+ Context context = this;
+
+ BackgroundOfflinerTask task =
+ new BackgroundOfflinerTask(new BackgroundSchedulerProcessorImpl());
+ return task.startBackgroundRequests(context, extras, createCallback(params));
}
@Override
@@ -32,4 +40,19 @@ public class BackgroundSchedulerJobService extends JobService {
// If we didn't stop ourselves, that likely means there is more work to do.
return true;
}
+
+ private Callback<Boolean> createCallback(final JobParameters params) {
+ return new Callback<Boolean>() {
+ /** TODO(fgorski): Talk to petewil and decide whether result should mean we are done or
+ * that we should be rescheduling the task
Pete Williamson 2017/02/21 18:43:43 Rescheduling is a good idea, but the RC is giving
+ */
+ @Override
+ public void onResult(Boolean result) {
+ boolean needsReschedule = result;
+ // true here is considered: reschedule with backoff,
+ // while false means that we are done.
+ jobFinished(params, needsReschedule);
+ }
+ };
+ }
}

Powered by Google App Engine
This is Rietveld 408576698