Index: components/background_task_scheduler/android/junit/src/org/chromium/components/background_task_scheduler/BackgroundTaskGcmTaskServiceTest.java |
diff --git a/components/background_task_scheduler/android/junit/src/org/chromium/components/background_task_scheduler/BackgroundTaskGcmTaskServiceTest.java b/components/background_task_scheduler/android/junit/src/org/chromium/components/background_task_scheduler/BackgroundTaskGcmTaskServiceTest.java |
new file mode 100644 |
index 0000000000000000000000000000000000000000..b40366c83f7ff1a2d1a062cbffcfeac629f60c3e |
--- /dev/null |
+++ b/components/background_task_scheduler/android/junit/src/org/chromium/components/background_task_scheduler/BackgroundTaskGcmTaskServiceTest.java |
@@ -0,0 +1,121 @@ |
+// 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 static org.junit.Assert.assertEquals; |
+import static org.junit.Assert.assertNotNull; |
+ |
+import android.content.Context; |
+import android.os.Bundle; |
+ |
+import com.google.android.gms.gcm.GcmNetworkManager; |
+import com.google.android.gms.gcm.TaskParams; |
+ |
+import org.junit.Before; |
+import org.junit.Test; |
+import org.junit.runner.RunWith; |
+import org.robolectric.RuntimeEnvironment; |
+import org.robolectric.annotation.Config; |
+ |
+import org.chromium.base.ContextUtils; |
+import org.chromium.base.test.util.Feature; |
+import org.chromium.testing.local.LocalRobolectricTestRunner; |
+ |
+/** Unit tests for {@link BackgroundTaskGcmTaskService}. */ |
+@RunWith(LocalRobolectricTestRunner.class) |
+@Config(manifest = Config.NONE) |
+public class BackgroundTaskGcmTaskServiceTest { |
+ static TestBackgroundTaskWithParams sLastTask; |
+ static boolean sReturnThroughCallback; |
+ static boolean sNeedsRescheduling; |
+ |
+ @Before |
+ public void setUp() { |
+ ContextUtils.initApplicationContextForTests(RuntimeEnvironment.application); |
+ sReturnThroughCallback = false; |
+ sNeedsRescheduling = false; |
+ sLastTask = null; |
+ } |
+ |
+ private static class TestBackgroundTaskWithParams extends TestBackgroundTask { |
+ private TaskParameters mTaskParameters; |
+ |
+ public TestBackgroundTaskWithParams() {} |
+ |
+ @Override |
+ public boolean onStartTask( |
+ Context context, TaskParameters taskParameters, TaskFinishedCallback callback) { |
+ mTaskParameters = taskParameters; |
+ callback.taskFinished(sNeedsRescheduling); |
+ sLastTask = this; |
+ return sReturnThroughCallback; |
+ } |
+ |
+ public TaskParameters getTaskParameters() { |
+ return mTaskParameters; |
+ } |
+ } |
+ |
+ private static class TestBackgroundTaskNoPublicConstructor extends TestBackgroundTask {} |
+ |
+ @Test |
+ @Feature({"BackgroundTaskScheduler"}) |
+ public void testOnRunTask() { |
+ Bundle taskExtras = new Bundle(); |
+ taskExtras.putString("foo", "bar"); |
+ TaskParams taskParams = buildTaskParams(TestBackgroundTaskWithParams.class, taskExtras); |
+ |
+ BackgroundTaskGcmTaskService taskService = new BackgroundTaskGcmTaskService(); |
+ assertEquals(taskService.onRunTask(taskParams), GcmNetworkManager.RESULT_SUCCESS); |
+ |
+ assertNotNull(sLastTask); |
+ TaskParameters parameters = sLastTask.getTaskParameters(); |
+ |
+ assertEquals(parameters.getTaskId(), TaskIds.TEST); |
+ assertEquals(parameters.getExtras().getString("foo"), "bar"); |
+ } |
+ |
+ @Test |
+ @Feature({"BackgroundTaskScheduler"}) |
+ public void testOnRunTaskMissingConstructor() { |
+ TaskParams taskParams = |
+ buildTaskParams(TestBackgroundTaskNoPublicConstructor.class, new Bundle()); |
+ |
+ BackgroundTaskGcmTaskService taskService = new BackgroundTaskGcmTaskService(); |
+ assertEquals(taskService.onRunTask(taskParams), GcmNetworkManager.RESULT_FAILURE); |
+ } |
+ |
+ @Test |
+ @Feature({"BackgroundTaskScheduler"}) |
+ public void testOnRuntaskNeedsReschedulingFromCallback() { |
+ sReturnThroughCallback = true; |
+ sNeedsRescheduling = true; |
+ TaskParams taskParams = buildTaskParams(TestBackgroundTaskWithParams.class, new Bundle()); |
+ |
+ BackgroundTaskGcmTaskService taskService = new BackgroundTaskGcmTaskService(); |
+ assertEquals(taskService.onRunTask(taskParams), GcmNetworkManager.RESULT_RESCHEDULE); |
+ } |
+ |
+ @Test |
+ @Feature({"BackgroundTaskScheduler"}) |
+ public void testOnRuntaskDontRescheduleFromCallback() { |
+ sReturnThroughCallback = true; |
+ sNeedsRescheduling = false; |
+ TaskParams taskParams = buildTaskParams(TestBackgroundTaskWithParams.class, new Bundle()); |
+ |
+ BackgroundTaskGcmTaskService taskService = new BackgroundTaskGcmTaskService(); |
+ assertEquals(taskService.onRunTask(taskParams), GcmNetworkManager.RESULT_SUCCESS); |
+ } |
+ |
+ private TaskParams buildTaskParams(Class clazz, Bundle taskExtras) { |
+ Bundle extras = new Bundle(); |
+ extras.putBundle( |
+ BackgroundTaskSchedulerGcmNetworkManager.BACKGROUND_TASK_EXTRAS_KEY, taskExtras); |
+ extras.putString(BackgroundTaskSchedulerGcmNetworkManager.BACKGROUND_TASK_CLASS_KEY, |
+ clazz.getName()); |
+ |
+ return new TaskParams(Integer.toString(TaskIds.TEST), extras); |
+ } |
+} |