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