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

Unified Diff: components/background_task_scheduler/android/javatests/src/org/chromium/components/background_task_scheduler/BackgroundTaskSchedulerJobServiceTest.java

Issue 2714463002: [android] Add JobScheduler-based BackgroundTaskScheduler. (Closed)
Patch Set: FindBugs wants the real Pi, but I won't give it. 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: components/background_task_scheduler/android/javatests/src/org/chromium/components/background_task_scheduler/BackgroundTaskSchedulerJobServiceTest.java
diff --git a/components/background_task_scheduler/android/javatests/src/org/chromium/components/background_task_scheduler/BackgroundTaskSchedulerJobServiceTest.java b/components/background_task_scheduler/android/javatests/src/org/chromium/components/background_task_scheduler/BackgroundTaskSchedulerJobServiceTest.java
new file mode 100644
index 0000000000000000000000000000000000000000..9be58ec0ab1209b120ffb2975657fe082717bd47
--- /dev/null
+++ b/components/background_task_scheduler/android/javatests/src/org/chromium/components/background_task_scheduler/BackgroundTaskSchedulerJobServiceTest.java
@@ -0,0 +1,137 @@
+// 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.components.background_task_scheduler;
+
+import android.annotation.TargetApi;
+import android.app.job.JobInfo;
+import android.content.Context;
+import android.os.Build;
+import android.os.Bundle;
+import android.os.PersistableBundle;
+import android.support.test.filters.SmallTest;
+import android.test.InstrumentationTestCase;
+
+import org.chromium.base.test.util.MinAndroidSdkLevel;
+
+import java.util.concurrent.TimeUnit;
+
+/**
+ * Tests for {@link BackgroundTaskSchedulerJobService}.
+ */
+@TargetApi(Build.VERSION_CODES.LOLLIPOP_MR1)
+@MinAndroidSdkLevel(Build.VERSION_CODES.LOLLIPOP_MR1)
+public class BackgroundTaskSchedulerJobServiceTest extends InstrumentationTestCase {
+ private static class TestBackgroundTask implements BackgroundTask {
+ @Override
+ public boolean onStartTask(
+ Context context, TaskParameters taskParameters, TaskFinishedCallback callback) {
+ return false;
+ }
+
+ @Override
+ public boolean onStopTask(Context context, TaskParameters taskParameters) {
+ return false;
+ }
+ }
+
+ @SmallTest
+ public void testOneOffTaskInfoWithDeadlineConversion() {
+ TaskInfo oneOffTask = TaskInfo.createOneOffTask(TaskIds.TEST, TestBackgroundTask.class,
+ TimeUnit.MINUTES.toMillis(200))
+ .build();
+ JobInfo jobInfo = BackgroundTaskSchedulerJobService.createJobInfoFromTaskInfo(
+ getInstrumentation().getTargetContext(), oneOffTask);
+ assertEquals(oneOffTask.getTaskId(), jobInfo.getId());
+ assertFalse(jobInfo.isPeriodic());
+ assertEquals(oneOffTask.getOneOffInfo().getWindowEndTimeMs(),
+ jobInfo.getMaxExecutionDelayMillis());
+ }
+
+ @SmallTest
+ public void testOneOffTaskInfoWithWindowConversion() {
+ TaskInfo oneOffTask =
+ TaskInfo.createOneOffTask(TaskIds.TEST, TestBackgroundTask.class,
+ TimeUnit.MINUTES.toMillis(100), TimeUnit.MINUTES.toMillis(200))
+ .build();
+ JobInfo jobInfo = BackgroundTaskSchedulerJobService.createJobInfoFromTaskInfo(
+ getInstrumentation().getTargetContext(), oneOffTask);
+ assertEquals(oneOffTask.getTaskId(), jobInfo.getId());
+ assertFalse(jobInfo.isPeriodic());
+ assertEquals(
+ oneOffTask.getOneOffInfo().getWindowStartTimeMs(), jobInfo.getMinLatencyMillis());
+ assertEquals(oneOffTask.getOneOffInfo().getWindowEndTimeMs(),
+ jobInfo.getMaxExecutionDelayMillis());
+ }
+
+ @SmallTest
+ public void testPeriodicTaskInfoWithoutFlexConversion() {
+ TaskInfo periodicTask = TaskInfo.createPeriodicTask(TaskIds.TEST, TestBackgroundTask.class,
+ TimeUnit.MINUTES.toMillis(200))
+ .build();
+ JobInfo jobInfo = BackgroundTaskSchedulerJobService.createJobInfoFromTaskInfo(
+ getInstrumentation().getTargetContext(), periodicTask);
+ assertEquals(periodicTask.getTaskId(), jobInfo.getId());
+ assertTrue(jobInfo.isPeriodic());
+ assertEquals(periodicTask.getPeriodicInfo().getIntervalMs(), jobInfo.getIntervalMillis());
+ }
+
+ @SmallTest
+ public void testPeriodicTaskInfoWithFlexConversion() {
+ TaskInfo periodicTask =
+ TaskInfo.createPeriodicTask(TaskIds.TEST, TestBackgroundTask.class,
+ TimeUnit.MINUTES.toMillis(200), TimeUnit.MINUTES.toMillis(50))
+ .build();
+ JobInfo jobInfo = BackgroundTaskSchedulerJobService.createJobInfoFromTaskInfo(
+ getInstrumentation().getTargetContext(), periodicTask);
+ assertEquals(periodicTask.getTaskId(), jobInfo.getId());
+ assertTrue(jobInfo.isPeriodic());
+ assertEquals(periodicTask.getPeriodicInfo().getIntervalMs(), jobInfo.getIntervalMillis());
+ if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
+ assertEquals(periodicTask.getPeriodicInfo().getFlexMs(), jobInfo.getFlexMillis());
+ }
+ }
+
+ @SmallTest
+ public void testTaskInfoWithExtras() {
+ Bundle taskExtras = new Bundle();
+ taskExtras.putString("foo", "bar");
+ taskExtras.putBoolean("bools", true);
+ taskExtras.putLong("longs", 1342543L);
+ TaskInfo oneOffTask = TaskInfo.createOneOffTask(TaskIds.TEST, TestBackgroundTask.class,
+ TimeUnit.MINUTES.toMillis(200))
+ .setExtras(taskExtras)
+ .build();
+ JobInfo jobInfo = BackgroundTaskSchedulerJobService.createJobInfoFromTaskInfo(
+ getInstrumentation().getTargetContext(), oneOffTask);
+ assertEquals(oneOffTask.getTaskId(), jobInfo.getId());
+ PersistableBundle jobExtras = jobInfo.getExtras();
+ PersistableBundle persistableBundle = jobExtras.getPersistableBundle(
+ BackgroundTaskSchedulerJobService.BACKGROUND_TASK_EXTRAS_KEY);
+ assertEquals(taskExtras.keySet().size(), persistableBundle.keySet().size());
+ assertEquals(taskExtras.getString("foo"), persistableBundle.getString("foo"));
+ assertEquals(taskExtras.getBoolean("bools"), persistableBundle.getBoolean("bools"));
+ assertEquals(taskExtras.getLong("longs"), persistableBundle.getLong("longs"));
+ }
+
+ @SmallTest
+ public void testTaskInfoWithManyConstraints() {
+ TaskInfo.Builder taskBuilder = TaskInfo.createOneOffTask(
+ TaskIds.TEST, TestBackgroundTask.class, TimeUnit.MINUTES.toMillis(200));
+
+ JobInfo jobInfo = BackgroundTaskSchedulerJobService.createJobInfoFromTaskInfo(
+ getInstrumentation().getTargetContext(), taskBuilder.setIsPersisted(true).build());
+ assertTrue(jobInfo.isPersisted());
+
+ jobInfo = BackgroundTaskSchedulerJobService.createJobInfoFromTaskInfo(
+ getInstrumentation().getTargetContext(),
+ taskBuilder.setRequiredNetworkType(TaskInfo.NETWORK_TYPE_UNMETERED).build());
+ assertEquals(JobInfo.NETWORK_TYPE_UNMETERED, jobInfo.getNetworkType());
+
+ jobInfo = BackgroundTaskSchedulerJobService.createJobInfoFromTaskInfo(
+ getInstrumentation().getTargetContext(),
+ taskBuilder.setRequiresCharging(true).build());
+ assertTrue(jobInfo.isRequireCharging());
+ }
+}

Powered by Google App Engine
This is Rietveld 408576698