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

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

Issue 2697493002: [Offline pages] Implementation of OfflineBackgroundTask using background_task_scheduler (Closed)
Patch Set: Fixing compilation issues, addressing feedback Created 3 years, 9 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 unified diff | Download patch
OLDNEW
1 // Copyright 2017 The Chromium Authors. All rights reserved. 1 // Copyright 2017 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 package org.chromium.chrome.browser.offlinepages; 5 package org.chromium.chrome.browser.offlinepages;
6 6
7 import android.annotation.TargetApi; 7 import android.annotation.TargetApi;
8 import android.app.job.JobInfo;
9 import android.app.job.JobScheduler;
10 import android.content.ComponentName;
11 import android.content.Context; 8 import android.content.Context;
12 import android.os.Build; 9 import android.os.Build;
13 import android.os.PersistableBundle; 10 import android.os.Bundle;
11
12 import org.chromium.components.background_task_scheduler.BackgroundTaskScheduler Factory;
13 import org.chromium.components.background_task_scheduler.TaskIds;
14 import org.chromium.components.background_task_scheduler.TaskInfo;
14 15
15 import java.util.concurrent.TimeUnit; 16 import java.util.concurrent.TimeUnit;
16 17
17 /** 18 /**
18 * The background job scheduler class used for scheduling tasks using JobSchedul er. 19 * The background job scheduler class used for scheduling tasks using JobSchedul er.
19 */ 20 */
20 @TargetApi(Build.VERSION_CODES.N) 21 @TargetApi(Build.VERSION_CODES.N)
21 public class BackgroundJobScheduler extends BackgroundScheduler { 22 public class BackgroundJobScheduler extends BackgroundScheduler {
22 public static final int JOB_ID = 774322033;
23
24 public BackgroundJobScheduler(Context context) { 23 public BackgroundJobScheduler(Context context) {
25 super(context); 24 super(context);
26 } 25 }
27 26
28 @Override 27 @Override
29 public void cancel() { 28 public void cancel() {
30 getJobScheduler().cancel(JOB_ID); 29 BackgroundTaskSchedulerFactory.getScheduler().cancel(
30 getContext(), TaskIds.OFFLINE_PAGES_BACKGROUND_JOB_ID);
31 } 31 }
32 32
33 @Override 33 @Override
34 protected void scheduleImpl(TriggerConditions triggerConditions, long delayS tartSeconds, 34 protected void scheduleImpl(TriggerConditions triggerConditions, long delayS tartSeconds,
35 long executionDeadlineSeconds, boolean overwrite) { 35 long executionDeadlineSeconds, boolean overwrite) {
36 if (!overwrite) { 36 Bundle taskExtras = new Bundle();
37 JobInfo existingJob = getJobScheduler().getPendingJob(JOB_ID);
38 if (existingJob != null) return;
39 }
40
41 PersistableBundle taskExtras = new PersistableBundle();
42 TaskExtrasPacker.packTimeInBundle(taskExtras); 37 TaskExtrasPacker.packTimeInBundle(taskExtras);
43 TaskExtrasPacker.packTriggerConditionsInBundle(taskExtras, triggerCondit ions); 38 TaskExtrasPacker.packTriggerConditionsInBundle(taskExtras, triggerCondit ions);
44 39
45 JobInfo jobInfo = 40 TaskInfo taskInfo =
46 new JobInfo 41 TaskInfo.createOneOffTask(TaskIds.OFFLINE_PAGES_BACKGROUND_JOB_I D,
47 .Builder(JOB_ID, new ComponentName( 42 OfflineBackgroundTask.class,
48 getContext(), BackgroundSchedul erJobService.class)) 43 TimeUnit.SECONDS.toMillis(delayStartSeconds),
49 .setMinimumLatency(TimeUnit.SECONDS.toMillis(delayStartS econds)) 44 TimeUnit.SECONDS.toMillis(executionDeadlineSecon ds))
50 .setOverrideDeadline(TimeUnit.SECONDS.toMillis(execution DeadlineSeconds))
51 .setPersisted(true) // Across device resets.
52 .setRequiredNetworkType(triggerConditions.requireUnmeter edNetwork() 45 .setRequiredNetworkType(triggerConditions.requireUnmeter edNetwork()
53 ? JobInfo.NETWORK_TYPE_UNMETERED 46 ? TaskInfo.NETWORK_TYPE_UNMETERED
54 : JobInfo.NETWORK_TYPE_ANY) 47 : TaskInfo.NETWORK_TYPE_ANY)
48 .setUpdateCurrent(overwrite)
49 .setIsPersisted(true)
50 .setExtras(taskExtras)
55 .setRequiresCharging(triggerConditions.requirePowerConne cted()) 51 .setRequiresCharging(triggerConditions.requirePowerConne cted())
56 .setExtras(taskExtras)
57 .build(); 52 .build();
58 53
59 getJobScheduler().schedule(jobInfo); 54 BackgroundTaskSchedulerFactory.getScheduler().schedule(getContext(), tas kInfo);
60 }
61
62 private JobScheduler getJobScheduler() {
63 return (JobScheduler) getContext().getSystemService(Context.JOB_SCHEDULE R_SERVICE);
64 } 55 }
65 } 56 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698